Gönderen hazırda forumu :
Bu, Hazırda Bekleme kitabından. İyi biri bunu okudu ..
Tanımlayıcıya göre nesneleri alma Aşağıdaki Hazırda Bekletme kod parçacığı, veritabanından bir Kullanıcı nesnesi alır:
User user = (User) session.get(User.class, userID);
Get () yöntemi özeldir çünkü tanımlayıcı, bir sınıfın tek bir örneğini benzersiz şekilde tanımlar. Bu nedenle, uygulamaların tanımlayıcıyı kalıcı bir nesne için uygun bir tutamaç olarak kullanması yaygındır. Tanımlayıcıya göre geri alma, bir nesneyi alırken önbelleği kullanabilir ve nesne zaten önbelleğe alınmışsa veritabanı isabetini önler. Hazırda bekletme ayrıca bir load () yöntemi sağlar:
User user = (User) session.load(User.class, userID);
Load () yöntemi daha eskidir; get (), kullanıcı isteği nedeniyle Hazırda Bekletme API'sına eklendi. Fark önemsiz:
Load () nesneyi önbellekte veya veritabanında bulamazsa, bir istisna atılır. Load () yöntemi hiçbir zaman null döndürmez. Get () yöntemi, nesne bulunamazsa null döndürür.
Load () yöntemi, gerçek bir kalıcı örnek yerine bir proxy döndürebilir. Proxy, ilk kez erişildiğinde gerçek nesnenin yüklenmesini tetikleyen bir yer tutucudur; Öte yandan, get () hiçbir zaman bir proxy döndürmez. Get () ve load () arasında seçim yapmak kolaydır: Kalıcı nesnenin var olduğundan eminseniz ve yokluğun istisnai olduğu düşünülürse, load () iyi bir seçenektir. Verilen tanımlayıcıya sahip kalıcı bir örnek olup olmadığından emin değilseniz get () kullanın ve boş olup olmadığını görmek için geri dönüş değerini test edin. Load () kullanımının başka bir anlamı vardır: Uygulama, kalıcı durumunu almak için veritabanına vurmadan kalıcı bir örneğe geçerli bir referans (bir proxy) alabilir. Bu nedenle load (), kalıcı nesneyi önbellekte veya veritabanında bulamadığında bir istisna atmayabilir; istisna, daha sonra proxy'ye erişildiğinde atılır. Elbette, bir nesneyi tanımlayıcıya göre almak, rastgele sorgular kullanmak kadar esnek değildir.