2.1 টীকা @Entity, @Table

আপনি যদি ডাটাবেসের একটি টেবিলে আপনার ক্লাস ম্যাপ করতে চান, তবে এর জন্য আপনাকে এটিতে 3 টি টীকা যোগ করতে হবে।

প্রথমত, আপনাকে ক্লাসে একটি টীকা যোগ করতে হবে @Entity। ক্লাসের সামনে এই টীকাটি হাইবারনেটকে বলবে যে এটি কেবল একটি ক্লাস নয়, একটি বিশেষ শ্রেণী যার বস্তুগুলিকে ডাটাবেসে সংরক্ষণ করতে হবে।

উদাহরণ:

@Entity
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

এই শ্রেণীর বস্তুগুলিকে একটি বিশেষ উপায়ে চিকিত্সা করার জন্য হাইবারনেটের জন্য এটি যথেষ্ট।

দ্বিতীয় টীকা হল @Table. এর সাহায্যে, আপনি ডাটাবেসে টেবিলের নাম সেট করতে পারেন যার সাথে এই ক্লাসটি যুক্ত হবে। উদাহরণ:

@Entity
@Table(name="user")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

যদি ক্লাসের নাম এবং টেবিলের নাম একই হয় তবে টীকাটি @Tableবাদ দেওয়া যেতে পারে।

এছাড়াও, যদি আপনার অ্যাপ্লিকেশনটি একই সময়ে বেশ কয়েকটি স্কিমা থেকে টেবিলের সাথে কাজ করে, তাহলে আপনাকে নির্দিষ্ট করতে হবে কোন নির্দিষ্ট স্কিমাতে টেবিলটি অবস্থিত:

@Entity
@Table(name="user", schema="test")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

হ্যাঁ, সবকিছু যেমন সহজ মনে হয়।

2.2 @কলাম টীকা

জানার দ্বিতীয় গুরুত্বপূর্ণ বিষয় হল ক্লাস ফিল্ডে টেবিল কলামের ম্যাপিং। সহজতম সংস্করণে, হাইবারনেট আপনার সত্তা ক্লাসের ক্ষেত্রগুলিকে পছন্দসই টেবিলের কলামে ম্যাপ করবে।

আপনি যদি ম্যাপিংয়ের সমস্ত সূক্ষ্মতা নিয়ন্ত্রণ করতে চান তবে আপনি টীকাটি ব্যবহার করতে পারেন @Column। উদাহরণ:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

টীকাটির @Columnবিভিন্ন পরামিতি রয়েছে, নীচে আমরা সেগুলির মধ্যে সর্বাধিক জনপ্রিয় বিবেচনা করব:

# নাম গুন বৈশিষ্ট্যের ধরন বর্ণনা
1 নাম স্ট্রিং ক্লাস ক্ষেত্রের জন্য টেবিল কলামের নাম সেট করে
2 অনন্য বুলিয়ান সমস্ত ক্ষেত্রের মান অনন্য হতে হবে
3 বাতিলযোগ্য বুলিয়ান ক্ষেত্রটি শূন্য হতে পারে
4 দৈর্ঘ্য int সর্বোচ্চ দৈর্ঘ্য (স্ট্রিংয়ের জন্য)

আমাদের ব্যবহারকারী সত্তা ক্লাসের ক্ষেত্রে কিছু সীমাবদ্ধতা যোগ করা যাক:

  • ব্যবহারকারীর নাম অবশ্যই অনন্য হতে হবে এবং 100 অক্ষরের বেশি হবে না
  • স্তর শূন্য হতে পারে
  • createDate শূন্য হতে পারে না

তারপর আমাদের টীকা হয়ে যায়:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
    public Integer id;

   @Column(name="name", unique=true, length=100)
   public String name;

   @Column(name="level", nullable=true)
   public Integer level;

   @Column(name="created_date", nullable=false)
   public Date createdDate;
}

আপনি ব্যবহারকারী টাইপের একটি বস্তু তৈরি করতে পারেন এবং এমনকি এটিতে সমস্ত নাল ক্ষেত্র বরাদ্দ করতে পারেন, তবে, আপনি যখন এটি ডাটাবেসে সংরক্ষণ করার চেষ্টা করবেন, হাইবারনেট একটি চেক সঞ্চালন করবে, এবং যদি কোনও বিধিনিষেধ লঙ্ঘন করা হয় তবে একটি ব্যতিক্রম নিক্ষেপ করা হবে।

2.3 @Id টীকা

এবং আরও একটি গুরুত্বপূর্ণ টীকা হল @Id। এটি একটি টেবিলের জন্য প্রাথমিক কী সেট করতে ব্যবহার করা যেতে পারে ।

আপনাকে কেবল পছন্দসই ক্ষেত্রের জন্য এই টীকাটি নির্দিষ্ট করতে হবে - এবং হাইবারনেট নিজেই সবকিছু করবে:

@Entity
@Table(name="user")
class User {
   @Id
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

আপনি যদি চান হাইবারনেট আপনার বস্তুর আইডিগুলিকে ডাটাবেসে যুক্ত করার সময় স্বাধীনভাবে তৈরি করতে , তাহলে আপনাকে আরও একটি টীকা যোগ করতে হবে - @GeneratedValue. তারপর আমাদের উদাহরণ এই মত দেখাবে:

@Entity
@Table(name="user")
class User {
   @Id
   @GeneratedValue
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

আমরা এখানে আইডি@Column ক্ষেত্রের জন্য টীকাটি বাদ দিয়েছি , যেহেতু এটি মূল্যবান তথ্য বহন করে না - টেবিলের ক্ষেত্রের নাম এবং কলামের নাম একই, এবং বাকি টীকাগুলির জন্য ধন্যবাদ, হাইবারনেট ইতিমধ্যে বুঝতে পেরেছে যে আমরা একটি টেবিলের কথা বলছি কলাম