CodeGym/Java Course/All lectures for TA purposes/முதன்மை விசை

முதன்மை விசை

கிடைக்கப்பெறுகிறது

@ஐடி சிறுகுறிப்பு

ஹைபர்னேட்டில் உள்ள ஒவ்வொரு உட்பொருளும் முதன்மை விசையாக இருக்கும் புலத்தைக் கொண்டிருக்க வேண்டும்: இது இந்த வகுப்பின் அனைத்துப் பொருள்களுக்கும் தனிப்பட்ட மதிப்பைக் கொண்டுள்ளது. பொதுவாக, இந்தப் புலம் @Id சிறுகுறிப்பு மூலம் சிறுகுறிப்பு செய்யப்படுகிறது .

பொது வடிவம்:

@Id
Class Name;

உதாரணமாக:

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

   @Embedded
   public UserAddress address;

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

சிறுகுறிப்பு இடம்

மூலம், நீங்கள் புலங்களுக்கு மட்டுமல்ல, முறைகளுக்கும் @Column சிறுகுறிப்புகளை எழுதலாம்: பெறுபவர்கள் அல்லது அமைப்பாளர்களுக்கு. உதாரணமாக:

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

   @Id
   @Column(name="id")
   public Integer getId() {
   	return this.id;
   }
   public void setId(Integer id)    {
  	this.id = id;
   }

   @Column(name="created_date")
   public Date getDate() {
  	return this.createdDate;
   }
   public void setCreatedDate(Date date) {
      this. createdDate = date;
   }
}

வகுப்புகளுக்கு மட்டுமல்ல, இடைமுகங்களுக்கும் சிறுகுறிப்புகள் சேர்க்கத் தொடங்கியபோது இந்த அணுகுமுறை தோன்றியது. இடைமுகத்தில் வகுப்பு புலங்கள் இல்லை, ஆனால் முறைகள் உள்ளன: பெறுபவர்கள் மற்றும் செட்டர்கள். Hibernate இந்த இரண்டு தரநிலைகளையும் ஆதரிக்கிறது.

முக்கியமான! ஒரு வகுப்பில் @Entity சிறுகுறிப்பு இருந்தால் , அதன் அனைத்து புலங்களும் Hibernate ஆல் நிலையான புலங்களாகக் கருதப்படும் (அவற்றில் @Transient சிறுகுறிப்பு குறிப்பிடப்படாவிட்டால் ). புலங்களில் சிறுகுறிப்புகள் எதுவும் இல்லாவிட்டாலும்: இந்த வழக்கில், நெடுவரிசையின் பெயர் வகுப்பு புலத்தின் பெயருக்கு சமமாக கருதப்படுகிறது.

இங்குதான் @Id சிறுகுறிப்பு முக்கிய பங்கு வகிக்கிறது. சிறுகுறிப்பு ஒரு வகுப்பு புலத்தில் வைக்கப்பட்டால், ஹைபர்னேட் புலங்களின் பெயர்கள் மற்றும் வகைகளைப் பார்க்கும். @Id சிறுகுறிப்பு ஒரு முறையில் வைக்கப்பட்டால் , ஹைபர்னேட் முறைகளின் பெயர்கள் மற்றும் வகைகளைப் பார்க்கும்.

எடுத்துக்காட்டு 1:

@Entity
@Table(name="user")
class User
{
   @Id
    public Integer id;
    public Date createdDate;  //this field will be treated as if it had @Column(name=" createdDate ")

}

எடுத்துக்காட்டு 2:

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

   @Id
   public Integer getId() {
   	return this.id;
   }
   public void setId(Integer id)    {
  	this.id = id;
   }

   public Date getDate() { //this field will be treated as if it had @Column(name=”date ”)
  	return this.createdDate;
   }
   public void setCreatedDate(Date date) {
  	this. createdDate = date;
   }

}

@உருவாக்கப்பட்ட மதிப்பு சிறுகுறிப்பு

உங்கள் புதிய பொருட்களுக்கு நீங்களே ஒரு ஐடியை ஒதுக்கலாம் அல்லது அதை ஹைபர்னேட்டின் கருணையில் விட்டுவிடலாம். உங்கள் பொருள்களுக்கு ஐடிகளை எவ்வாறு ஒதுக்குவது என்பதை Hibernate நன்கு புரிந்துகொள்வதற்காக, அதில் ஒரு சிறப்பு குறிப்பு உள்ளது:

@GeneratedValue

இந்த சிறுகுறிப்பு பொதுவாக @Id சிறுகுறிப்பின் அதே புலத்தை குறிக்கிறது . அவளுக்கு 4 சாத்தியமான ஐடி ஒதுக்கீட்டு உத்திகள் உள்ளன:

  • ஆட்டோ
  • அடையாளம்
  • வரிசை
  • மேசை

குறிப்பிட்ட மூலோபாயத்துடன் சிறுகுறிப்புக்கான எடுத்துக்காட்டு:

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

    public Date createdDate;
}

கொள்கை மதிப்பு எதுவும் குறிப்பிடப்படவில்லை என்றால், AUTO உத்தி தேர்ந்தெடுக்கப்படும். AUTO மூலோபாயம் என்பது ஹைபர்னேட் என்பது ஐடி புலத்தின் தரவு வகையின் அடிப்படையில் ஐடியையே ஒதுக்கும்.

ஏன் வகை? ஆம், ஏனெனில் ஐடி வகைகள் மிகவும் வித்தியாசமாக இருக்கும், எடுத்துக்காட்டாக, சரம் அல்லது GUID. உதாரணமாக:

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

    public Date createdDate;
}

குறிப்பு: ஜாவாவில் உள்ள ஒரு வழிகாட்டி UUID என்று அழைக்கப்படுகிறது, வரலாற்று ரீதியாகப் பேசினால். நீங்கள் கேட்டால், ஹைபர்னேட் உங்கள் பொருட்களுக்கான தனித்துவமான UUIDகளை உருவாக்க முடியும்.

பல்வேறு @உருவாக்கப்பட்ட மதிப்பு உத்திகள்

GeneratedValue(strategy = GenerationType.IDENTITY) வகையை நீங்கள் குறிப்பிட்டால் , ஹைபர்னேட் ஐடி அமைப்பை தரவுத்தள அடுக்குக்கு வழங்குகிறது. பொதுவாக, இது ப்ரைமரி கீ, ஆட்டோஇன்கிரிமென்ட் என்று பெயரிடப்பட்ட நெடுவரிசையைப் பயன்படுத்துகிறது.

ஆனால் உங்கள் ஐடிகள் தனித்துவமாகவும், சிறப்பாகக் குறிப்பிடப்பட்ட அல்காரிதத்தின்படி உருவாக்கப்படவும் விரும்பினால், நீங்கள் உருவாக்கப்பட்ட மதிப்பு (உபாயம் = GenerationType.SEQUENCE) சிறுகுறிப்பைப் பயன்படுத்தலாம் , எடுத்துக்காட்டாக:

@Entity
@Table(name="user")
public class User {
	@Id
	@GeneratedValue(generator = "sequence-generator")
	@GenericGenerator(
  	name = "sequence-generator",
  	strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
  	parameters = {
    	@Parameter(name = "sequence_name", value = "user_sequence"),
    	@Parameter(name = "initial_value", value = "4"),
    	@Parameter(name = "increment_size", value = "1")
    	}
	)
	private long userId;

	// ...
}

ஐடியை உருவாக்க இன்னும் பல வழிகள் உள்ளன. எடுத்துக்காட்டாக, பல நெடுவரிசைகளைக் கொண்ட ஒரு கூட்டு தனிப்பட்ட விசை உங்களிடம் இருக்கலாம். தரவுத்தளத்தில் ஒரு பொருளை எழுதும்போது, ​​​​இந்த நெடுவரிசைகள் அனைத்தையும் நீங்கள் நிரப்ப வேண்டும்.

நான் அவற்றை விரிவாகக் கொடுக்க மாட்டேன். இருப்பினும், எங்கள் விரிவுரைகளின் நோக்கம் ஹைபர்னேட்டைப் பற்றி தெரிந்துகொள்வதே தவிர, அதிகாரப்பூர்வ ஆவணங்களை மறுபரிசீலனை செய்வதல்ல.

கருத்துக்கள்
  • பிரபலமானவை
  • புதியவை
  • பழையவை
ஒரு கருத்தைத் தெரிவிக்க நீங்கள் உள்நுழைந்திருக்க வேண்டும்
இந்தப் பக்கத்தில் இதுவரை எந்தக் கருத்தும் வழங்கப்படவில்லை