kaedah get().

Jika anda ingin mendapatkan objek dengan IDnya (atau Kunci Utama), maka Hibernate mempunyai tiga kaedah untuk ini:

  • beban()
  • dapatkan()
  • cari()

Mereka melakukan perkara yang sama, tetapi ada nuansa. Format umum kaedah get() ialah:

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

Kaedah get() mengambil sebagai parameter kedua ID (Kunci Utama) objek yang perlu dikembalikan. Ia kemudian memuatkan objek itu daripada pangkalan data dan mengembalikannya. Contoh:

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

Jika rekod dengan ID ini tidak ditemui dalam pangkalan data, maka kaedah akan mengembalikan nol.

kaedah load().

Kaedah kedua untuk memuatkan objek ialah kaedah load() . Format umum kaedah load() adalah sama:

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

Walau bagaimanapun, kelakuannya berbeza daripada kaedah get() .

Pertama, kaedah ini tidak mengembalikan objek sebenar, tetapi proksi: rintisan maya.

Kedua, apabila menggunakan kaedah load() , tiada semakan sama ada terdapat kemasukan sedemikian dalam pangkalan data. Sebaliknya, Hibernate segera mencipta objek proksi dengan ID yang diluluskan dan mengembalikannya.

Ketiga, semua kerja dengan pangkalan data akan berlaku apabila memanggil kaedah objek proksi. Jika anda cuba memanggil, sebagai contoh, kaedah getName() , maka panggilan pertama ke pangkalan data akan berlaku. Contoh:

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

Kaedah load() tidak boleh digunakan untuk menyemak kehadiran objek dalam pangkalan data - ia tidak akan menunjukkan ini. Di samping itu, jika anda menghantar ID yang tidak sah, seperti null, kepadanya, ia hanya akan mengembalikan null.

kaedah cari().

Kaedah find() telah disampaikan kepada antara muka Sesi daripada standard JPA. Dan seperti yang anda ketahui, piawaian ini menerangkan bukan sahaja tandatangan kaedah, tetapi juga mengawal tingkah laku.

Kaedah ini berfungsi sama seperti kaedah get() . Jika objek tidak ditemui oleh kunci yang diluluskan, maka kaedah itu hanya akan mengembalikan null.

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

kaedah refresh().

Kaedah berguna lain yang berkaitan dengan memuatkan objek daripada pangkalan data ialah kaedah refresh() .

Ingat kaedah persist() yang mengemas kini data dalam pangkalan data berdasarkan objek yang diluluskan? Jadi, kaedah refresh() berfungsi sebaliknya: ia mengemas kini objek sedia ada berdasarkan data daripada pangkalan data.

Tingkah laku ini diperlukan jika, sebagai contoh, semasa menulis objek ke pangkalan data, pelbagai prosedur tersimpan dipanggil di sana yang membetulkan data bertulis.

Dalam kes sedemikian, adalah berguna untuk membaca semula objek daripada pangkalan data jika ada kemungkinan ia telah berubah. Contoh:

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