పొందు () పద్ధతి

మీరు ఒక వస్తువును దాని ID (లేదా ప్రాథమిక కీ) ద్వారా పొందాలనుకుంటే, హైబర్నేట్ దీనికి మూడు పద్ధతులను కలిగి ఉంది:

  • లోడ్ ()
  • పొందండి()
  • కనుగొను()

వారు అదే పని చేస్తారు, కానీ సూక్ష్మ నైపుణ్యాలు ఉన్నాయి. get() పద్ధతి యొక్క సాధారణ ఆకృతి :

EntityClass Name = session.get(EntityClass.class, Object primaryKey);

get() పద్ధతి దాని రెండవ పరామితిగా అది తిరిగి ఇవ్వాల్సిన వస్తువు యొక్క ID (ప్రాధమిక కీ)ని తీసుకుంటుంది. ఇది డేటాబేస్ నుండి ఆ వస్తువును లోడ్ చేస్తుంది మరియు దానిని తిరిగి ఇస్తుంది. ఉదాహరణ:

User user = session.get(User.class, 2);

ఈ IDతో ఉన్న రికార్డ్ డేటాబేస్లో కనుగొనబడకపోతే, అప్పుడు పద్ధతి శూన్యతను అందిస్తుంది.

లోడ్ () పద్ధతి

వస్తువును లోడ్ చేయడానికి రెండవ పద్ధతి లోడ్ () పద్ధతి . లోడ్ () పద్ధతి యొక్క సాధారణ ఆకృతి ఒకే విధంగా ఉంటుంది:

EntityClass Name = session.load(EntityClass.class, Object primaryKey);

అయితే, దాని ప్రవర్తన get() పద్ధతికి భిన్నంగా ఉంటుంది .

మొదట, ఈ పద్ధతి నిజమైన వస్తువును తిరిగి ఇవ్వదు, కానీ ప్రాక్సీ: వర్చువల్ స్టబ్.

రెండవది, లోడ్ () పద్ధతిని ఉపయోగిస్తున్నప్పుడు , డేటాబేస్లో అలాంటి ఎంట్రీ ఉందో లేదో తనిఖీ చేయడం లేదు. బదులుగా, హైబర్నేట్ పాస్ అయిన IDతో ప్రాక్సీ ఆబ్జెక్ట్‌ను వెంటనే సృష్టించి, దానిని తిరిగి అందిస్తుంది.

మూడవదిగా, ప్రాక్సీ ఆబ్జెక్ట్ యొక్క పద్ధతులను కాల్ చేస్తున్నప్పుడు డేటాబేస్తో అన్ని పని జరుగుతుంది. మీరు కాల్ చేయడానికి ప్రయత్నిస్తే, ఉదాహరణకు, getName() పద్ధతి , అప్పుడు డేటాబేస్‌కు మొదటి కాల్ జరుగుతుంది. ఉదాహరణ:

User user = session.load(User.class, new Integer(123));
String name = user.getName(); //this is where the first call to the database will occur

డేటాబేస్లో వస్తువుల ఉనికిని తనిఖీ చేయడానికి లోడ్ () పద్ధతిని ఉపయోగించకూడదు - ఇది కేవలం దీన్ని చూపదు. అదనంగా, మీరు శూన్యం వంటి చెల్లని IDని దానికి పంపినట్లయితే, అది కేవలం శూన్యతను అందిస్తుంది.

కనుగొనేందుకు () పద్ధతి

JPA స్టాండర్డ్ నుండి సెషన్ ఇంటర్‌ఫేస్‌కు ఫైండ్() పద్ధతి పాస్ చేయబడింది. మరియు మీకు తెలిసినట్లుగా, ఈ ప్రమాణం పద్ధతుల సంతకాన్ని మాత్రమే కాకుండా, ప్రవర్తనను కూడా నియంత్రిస్తుంది.

ఈ పద్ధతి సరిగ్గా get() పద్ధతి వలె పనిచేస్తుంది . పాస్ చేసిన కీ ద్వారా ఆబ్జెక్ట్ కనుగొనబడకపోతే, అప్పుడు పద్ధతి శూన్యంగా తిరిగి వస్తుంది.

User user = session.find(User.class, -2); //method will return null

రిఫ్రెష్ () పద్ధతి

డేటాబేస్ నుండి ఆబ్జెక్ట్‌ను లోడ్ చేయడంతో సంబంధం ఉన్న మరొక ఉపయోగకరమైన పద్ధతి రిఫ్రెష్ () పద్ధతి .

పాస్ చేసిన ఆబ్జెక్ట్ ఆధారంగా డేటాబేస్‌లోని డేటాను అప్‌డేట్ చేసిన పెర్సిస్ట్() పద్ధతిని గుర్తుంచుకోవాలా ? కాబట్టి, రిఫ్రెష్ () పద్ధతి సరిగ్గా విరుద్ధంగా పనిచేస్తుంది: ఇది డేటాబేస్ నుండి డేటా ఆధారంగా ఇప్పటికే ఉన్న వస్తువును నవీకరిస్తుంది.

ఉదాహరణకు, డేటాబేస్‌కు ఒక వస్తువును వ్రాసేటప్పుడు, వ్రాసిన డేటాను సరిచేసే వివిధ నిల్వ చేసిన విధానాలు అక్కడ పిలువబడితే ఈ ప్రవర్తన అవసరం.

అటువంటి సందర్భాలలో, ఆబ్జెక్ట్ మారిన అవకాశం ఉన్నట్లయితే, డేటాబేస్ నుండి ఆబ్జెక్ట్‌ని మళ్లీ చదవడం ఉపయోగపడుతుంది. ఉదాహరణ:

User user = new User();
user.setName("Kolyan");
session.persist(user);
session.flush();  //Force called SQL INSERT and call triggers

session.refresh(user);
// here we continue to work with the updated object