2009-05-08 22 views
13

Java, .NET ve Groovy'deki Kurumsal Uygulamaların geliştirilmesini araştırıyorum. Her platform için basit bir SOAP web servisinin gerçekleştirilmesinin ne kadar zor olduğunu deneyeceğiz. Gerçek dünyayı olabildiğince doğru bir şekilde araştırmak için en çok kullanılan araçları ve kütüphaneleri kullanacağız.Java Sürekliliği için JPA veya Hazırda Bekletme?

Bu bakımdan, kalıcılık için Hazırda Bekletme özelliğini kullanırken, yeni JPA (Java Persistence API) veya JPA'nın gelmeden önce var olan Hazırda Bekletme özel API'sini kullanmak için gerçek dünyayı daha iyi yansıtır mı?

cevap

14

Muhtemelen zaten bildiğiniz üzere, 3.2 Hibernate'ten itibaren JPA sertifikalıdır. Hibernate'in "özel" API'lerini kullanmadan, JPA sağlayıcınız olarak kolayca Hazırda Bekletme özelliğini kullanabilirsiniz.

Sağlayıcı olarak düz JPA'yı Hazırda Bekletme özelliğini kullanmanızı öneririz. Ve XML'den çok daha fazla açıklama kullanın (çok daha hoş).

Ardından, küçük bir şeye ihtiyacınız olduğunda, Hazırda Bekletme Oturumunu her zaman alabilirsiniz. Örneğin sık sık bir koleksiyona parametre olarak (setParameterList) bir sorguya geçmek için bunu yapmam gerektiğini buluyorum. biri etrafında sonsuza olmuştur gibi

+0

Biliyorum, ama yakın zamanda yaptığımız bir konuşmada, JPA'nın henüz olgunlaşmamış olduğunu ve henüz tüm gelişmiş özellikleri göstermediğini ifade ettik. –

+1

Ayrıca, JPA'nın, desteklediği temel kalıcılık katmanları arasında en düşük ortak payda olarak hareket etmesi gerektiğini unutmayın. Eğer hazırda bekletme özelliğine sahipse ve Toplink yapmıyorsa, JPA API bu özelliği gösteremez. –

1

Size

yeni JPA soru ifadeli nasıl komik ... ya düz eski hazırda

Sesler ve diğer sadece serbest bırakıldı . Elbette bu doğru değil. JPA sadece Hazırda Bekletme değil, aynı zamanda TopLink ve J2EE varlık fasulyeleri tarafından da etkilendi. JSR 220 taslağına yapılan ilk referans 2003'ten döndü - bu yeni için nasıl? Hazırda bekletme ile JPA kullanıyorsanız, hala Hazırda Bekletme özelliğini kullanırsınız ve hazırda bekletme uzantıları uygulamak ücretsizdir.

0
Eğer Hibernate takas istiyorum sadece durumda sen, saf JPA spec ile sopa olabilir

, ama ne' ... müseccel API kullanmak veya eşdeğer kurulmuş ve standart API kullanın:

Yani seçim sizin Muhtemelen bir noktada bulacağınız hiç bir zaman takas etmeyeceğiniz ve tüm büyük Hazırda Bekletme özelliklerine sahip olmamanız.

Hazırda bekletme özelliğini doğrudan ve Damo'nun önerdiği gibi XML yerine ek açıklamalar kullanmanızı öneririm. Hibernate'in getirdiği "sihir" hakkında kesin bir anlayışa sahip olduğunuzdan emin olun. Dikkatli değilsen, veritabanını gerçekten yıkabilirsin. Örneğin, bir n + 1 sorgu sorun @OneToOne katılır nasıl yapmanız bağlı vardır:

Hibernate OneToOne automatic join fetching (resolving n+1 problem)

Ben de hazırda sorgularında ünite/entegrasyon testleri için gömülü bir veritabanını kullanmak için tavsiye ve izle ediyorum El ile yazacağınız bir şeye benzediğinden emin olmak için oluşturulan SQL.

İlgili konular