Dari forum Hibernate :
Ini dari buku Hibernate in Action. Bagus membaca ini ..
Mengambil objek dengan pengidentifikasi Potongan kode Hibernate berikut mengambil objek pengguna dari database:
User user = (User) session.get(User.class, userID);
Metode get () adalah khusus karena pengenal secara unik mengidentifikasi satu instance kelas. Oleh karena itu, aplikasi umum untuk menggunakan pengenal sebagai pegangan yang nyaman untuk objek yang persisten. Pengambilan dengan pengenal bisa menggunakan cache saat mengambil objek, menghindari database yang terkena jika objek sudah di-cache. Hibernate juga menyediakan metode load ():
User user = (User) session.load(User.class, userID);
Metode load () lebih lama; get () ditambahkan ke API Hibernate karena permintaan pengguna. Perbedaannya sepele:
Jika load () tidak dapat menemukan objek dalam cache atau database, pengecualian akan dilemparkan. Metode load () tidak pernah mengembalikan nol. Metode get () mengembalikan null jika objek tidak dapat ditemukan.
Metode load () mungkin mengembalikan proxy alih-alih instance persisten yang nyata. Proksi adalah placeholder yang memicu pemuatan objek nyata saat diakses pertama kali; Di sisi lain, get () tidak pernah mengembalikan proxy. Memilih antara get () dan load () itu mudah: Jika Anda yakin objek persisten ada, dan tidak ada akan dianggap luar biasa, load () adalah pilihan yang baik. Jika Anda tidak yakin ada instance persisten dengan pengenal yang diberikan, gunakan get () dan uji nilai yang dikembalikan untuk melihat apakah nilainya null. Menggunakan load () memiliki implikasi lebih lanjut: Aplikasi dapat mengambil referensi yang valid (proxy) ke instance persisten tanpa menyentuh database untuk mengambil status persistennya. Jadi, load () mungkin tidak memunculkan pengecualian jika tidak menemukan objek persisten dalam cache atau database; pengecualian akan dilempar nanti, saat proxy diakses. Tentu saja, mengambil objek dengan pengenal tidak sefleksibel menggunakan kueri arbitrer.