dapatkan() metode

Jika Anda ingin mendapatkan objek dengan ID (atau Kunci Utama), maka Hibernasi memiliki tiga metode untuk ini:

  • memuat()
  • mendapatkan()
  • menemukan()

Mereka melakukan hal yang sama, tetapi ada nuansa. Format umum dari metode get() adalah:

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

Metode get() mengambil sebagai parameter kedua ID (Kunci Utama) dari objek yang perlu dikembalikan. Itu kemudian memuat objek itu dari database dan mengembalikannya. Contoh:

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

Jika record dengan ID ini tidak ditemukan di database, maka metode akan mengembalikan null.

beban() metode

Metode kedua untuk memuat objek adalah metode load() . Format umum dari metode load() adalah sama:

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

Namun, perilakunya berbeda dengan metode get() .

Pertama, metode ini tidak mengembalikan objek nyata, tetapi proxy: rintisan virtual.

Kedua, saat menggunakan metode load() , tidak ada pemeriksaan apakah ada entri seperti itu di database. Sebagai gantinya, Hibernate segera membuat objek proxy dengan ID yang diteruskan dan mengembalikannya.

Ketiga, semua pekerjaan dengan database akan terjadi saat memanggil metode objek proxy. Jika Anda mencoba memanggil, misalnya, metode getName() , maka panggilan pertama ke database akan dilakukan. 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

Metode load() tidak boleh digunakan untuk memeriksa keberadaan objek dalam database - metode ini tidak akan menampilkannya. Selain itu, jika Anda memasukkan ID yang tidak valid, seperti null, ke ID tersebut, ID tersebut hanya akan mengembalikan null.

menemukan() metode

Metode find() diteruskan ke antarmuka Sesi dari standar JPA. Dan seperti yang Anda ketahui, standar ini tidak hanya menjelaskan tanda tangan metode, tetapi juga mengatur perilakunya.

Metode ini bekerja persis seperti metode get() . Jika objek tidak ditemukan oleh kunci yang diteruskan, maka metode ini hanya akan mengembalikan nol.

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

menyegarkan() metode

Metode berguna lainnya yang berkaitan dengan memuat objek dari database adalah metode refresh() .

Ingat metode persist() yang memperbarui data dalam database berdasarkan objek yang diteruskan? Jadi, metode refresh() bekerja persis sebaliknya: memperbarui objek yang ada berdasarkan data dari database.

Perilaku ini diperlukan jika, misalnya, saat menulis objek ke database, berbagai prosedur tersimpan dipanggil di sana yang mengoreksi data tertulis.

Dalam kasus seperti itu, akan berguna untuk membaca ulang objek dari database jika ada kemungkinan objek tersebut 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