metode get().

Yen sampeyan pengin entuk obyek kanthi ID (utawa Kunci Utama), banjur Hibernate duwe telung cara kanggo iki:

  • muatan()
  • entuk()
  • golek ()

Padha nindakake bab sing padha, nanging ana nuansa. Format umum metode get() yaiku:

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

Cara njaluk () njupuk minangka parameter kapindho ID (Kunci Utama) saka obyek sing perlu kanggo bali. Banjur mbukak obyek kasebut saka database lan ngasilake. Tuladha:

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

Yen rekaman karo ID iki ora ditemokake ing database, banjur cara bakal bali null.

metode load().

Cara liya kanggo ngemot obyek yaiku metode load() . Format umum metode load() padha:

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

Nanging, prilaku kasebut beda karo metode get() .

Kaping pisanan, cara iki ora ngasilake obyek nyata, nanging proxy: rintisan virtual.

Kapindho, nalika nggunakake cara load () , ora ana priksa manawa ana entri kasebut ing database. Nanging, Hibernate langsung nggawe obyek proxy karo ID liwati lan bali.

Katelu, kabeh karya karo database bakal kedadeyan nalika nelpon metode obyek proxy. Yen sampeyan nyoba nelpon, contone, getName () cara , banjur telpon pisanan kanggo database bakal kelakon. Tuladha:

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

Load () cara ngirim ora digunakake kanggo mriksa ngarsane obyek ing database - iku mung ora bakal nuduhake iki. Kajaba iku, yen sampeyan ngliwati ID sing ora bener, kayata null, iku mung bakal bali null.

golek () metode

Cara golek () diterusake menyang antarmuka Sesi saka standar JPA. Lan kaya sing sampeyan ngerteni, standar iki ora mung nggambarake cara teken, nanging uga ngatur prilaku.

Cara iki dianggo persis kaya metode get() . Yen obyek ora ditemokake dening tombol liwati, banjur cara mung bakal bali null.

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

metode refresh().

Cara migunani liyane sing ana hubungane karo ngemot obyek saka database yaiku metode refresh () .

Elingi persist () cara sing nganyari data ing database adhedhasar obyek liwati? Dadi, cara refresh () dianggo persis ngelawan: nganyari obyek ana adhedhasar data saka database.

Prilaku iki perlu yen, umpamane, nalika nulis obyek menyang database, macem-macem prosedur sing disimpen diarani ana sing mbenerake data sing ditulis.

Ing kasus kaya mengkono, iku bisa migunani kanggo reread obyek saka database yen ana kasempatan sing wis diganti. Tuladha:

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