CodeGym /Java Course /All lectures for TA purposes /சேகரிப்புகளை மேப்பிங் செய்யும் போது சோம்பேறியாக ஏற்றுகிறத...

சேகரிப்புகளை மேப்பிங் செய்யும் போது சோம்பேறியாக ஏற்றுகிறது

All lectures for TA purposes
நிலை 1 , பாடம் 853
கிடைக்கப்பெறுகிறது

2.1 பெற விருப்பம்

ஹைபர்னேட்டின் டெவலப்பர்கள் நீண்ட காலமாக குழந்தை நிறுவனங்களை ஏற்றுவதில் உள்ள சிக்கலைப் பற்றி அறிந்திருக்கிறார்கள். எனவே அவர்கள் செய்த முதல் விஷயம் , சிறுகுறிப்புகளுக்கு ஒரு சிறப்பு பெறுதல் அளவுருவைச் சேர்ப்பதாகும் @OneToMany.@ManyToMany

இந்த அளவுரு இரண்டு மதிப்புகளை எடுக்கலாம்:

  • ஆவலுடன்
  • சோம்பேறி

உதாரணமாக:

@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")

பெறுதல் அளவுரு EAGER க்கு சமமாக இருந்தால் , பெற்றோர் நிறுவனம் ஏற்றப்படும் போது, ​​அதன் அனைத்து குழந்தை நிறுவனங்களும் ஏற்றப்படும். மேலும், ஹைபர்னேட் ஒரு SQL வினவலில் அதைச் செய்ய முயற்சிக்கும், அதிக வினவலை உருவாக்கி, எல்லா தரவையும் ஒரே நேரத்தில் பெறுகிறது.

பெறுதல் அளவுரு LAZY மதிப்பை எடுத்துக் கொண்டால் , பெற்றோர் நிறுவனம் ஏற்றப்படும்போது, ​​குழந்தை நிறுவனம் ஏற்றப்படாது. அதற்கு பதிலாக, ஒரு ப்ராக்ஸி பொருள் உருவாக்கப்படும்.

இந்த ப்ராக்ஸி பொருளின் உதவியுடன், ஹைபர்னேட் இந்த குழந்தை நிறுவனத்திற்கான அணுகலைக் கண்காணித்து, அதை முதல்முறை அணுகும்போது நினைவகத்தில் ஏற்றும்.

கருத்துகளுடன் எங்கள் நிலைமையை நினைவுபடுத்தினால்:


@Entity
@Table(name="user")
class User {
   @Column(name="id")
   public Integer id;
 
   @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
   @JoinColumn(name = "user_id")
   public List<Comment> comments;
}

பின்னர் உங்களுக்கு ஒரு "சிக் தேர்வு" உள்ளது:

என்றால் fetch = FetchType.EAGER, ஹைபர்னேட் அனைத்து கருத்துகளையும் குறியீட்டின் 1வது வரியில் ஏற்றும்:

User user = session.get(User.class, 1);		//load all comments here
List<Comment> comments = user.getComments();

என்றால் fetch = FetchType.LAZY, 2வது வரியில் உள்ள அனைத்து கருத்துகளையும் Hibernate ஏற்றும்:

User user = session.get(User.class, 1);
List<Comment> comments = user.getComments(); //load all comments here

நீங்கள் ஏற்கனவே யூகித்தபடி, எல்லா கருத்துகளையும் ஏற்றாதபோது உங்களுக்கு விருப்பம் இல்லை :)

2.2 இயல்புநிலை மதிப்பு

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

வெவ்வேறு சிறுகுறிப்பு வகைகளுக்கு அவை சற்று வித்தியாசமாக இருக்கும். சிறுகுறிப்புகளுக்கு ஆர்வமாக @OneToOneஉள்ளது @ManyToOne, சிறுகுறிப்புகளுக்கு சோம்பலாக @OneToManyஇருக்கிறது @ManyToMany. நினைவில் கொள்வது எளிது - நாம் ஒரு பொருளைக் குறிப்பிட்டால், அது முழுமையாக ஏற்றப்படும். நாம் ஒரு தொகுப்பைக் குறிப்பிட்டால், அது முதல் முறையாக அணுகப்படும்போது ஏற்றப்படும்.

2.3 @LazyCollection சிறுகுறிப்பு

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

@LazyCollection(LazyCollectionOption.TRUE)

சேகரிப்பு புலங்களை மேப்பிங் செய்யும் போது அதை நீங்கள் குறிப்பிட வேண்டும்:


@Entity
@Table(name="user")
class User {
   @Column(name="id")
   public Integer id;
 
   @OneToMany(cascade = CascadeType.ALL)
   @LazyCollection(LazyCollectionOption.TRUE)
   public List<Comment> comments;
}

இந்த சிறுகுறிப்பில் மூன்று மதிப்புகளில் ஒன்றை எடுக்கக்கூடிய மதிப்பு அளவுரு உள்ளது:

  • சோம்பேறி சேகரிப்பு விருப்பம். உண்மை
  • சோம்பேறி சேகரிப்பு விருப்பம். பொய்
  • சோம்பேறி சேகரிப்பு விருப்பம். கூடுதல்

முதல் இரண்டு விருப்பங்களும் பெறுதல் விருப்பத்திற்கு மிகவும் ஒத்தவை.

அளவுரு க்கு அமைக்கப்பட்டால் , பெற்றோர் பயனர் பொருள் ஏற்றப்படும்போது LazyCollectionOption.TRUEகருத்துகள் புலத்தின் மதிப்புகள் தரவுத்தளத்திலிருந்து ஏற்றப்படாது என்று அர்த்தம் . கருத்துப் புலத்தை அணுகும் போது கருத்து வகையின் பொருள்கள் முதல் முறை ஏற்றப்படும். உண்மையில், இது அளவுருவுக்கு சமமானதாகும்FetchType.LAZY

அளவுரு க்கு அமைக்கப்பட்டால் , பெற்றோர் பயனர் பொருளை ஏற்றும் நேரத்தில் LazyCollectionOption.FALSEகருத்துகள் புலத்தின் மதிப்புகள் தரவுத்தளத்திலிருந்து ஏற்றப்படும் என்று அர்த்தம் . கருத்துப் புலத்தை அணுகும் போது கருத்து வகையின் பொருள்கள் முதல் முறை ஏற்றப்படும். உண்மையில், இது சமமானதாகும் FetchType.EAGER.

கருத்துக்கள்
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION