6

bir bağlantı yalnızca JPA uygulamasında Bağlantı havuza döndü mı?Bir bağlantı, JPA uygulamasında bağlantı havuzuna ne zaman döndürülür? i</p> <pre><code>entityManager.close(); </code></pre> <p>ararsanız

Entitymanger'ı destekleyen bağlantı, kullanım ömrü boyunca değişebilir mi? peşin mojoo

+2

Hazırda bekletme stratejilerinin bu açıklamasını Hibernate ile buldum: http://docs.jboss.org/hibernate/stable/core.old/reference/en/html/transactions-connection-release.html – GlenPeterson

cevap

4

yılında

sayesinde JPA Spec bağlantılarını yönetmek için bu tür şeyleri ve onun kadar uygulanmasına tanımlamıyor. Bir işlem aktif olduğunda, açık nedenlerden dolayı, taahhüt edilene kadar bağlantının aynı olduğunu varsaymak için güvenli olursunuz. Txn sona erdiğinde, geri verilebilir veya uygulamaya bağlı olarak tutulabilir (ve sizinkinden bahsetmezsiniz)

2

Bu, JPA uygulamasına ve yapılandırmasına bağlıdır.

EclipseLink'te varsayılan olarak bir bağlantı sadece etkin (kirli) işlem süresince tutulur. yani ilk değişiklikten veya kilitlemeden, taahhüt veya geri alma işlemine kadar. İşlem dışı sorgularda, talep üzerine bir bağlantı elde edilir ve sorgu yürütme işleminden sonra iade edilir. Bu, bağlantı havuzunun maksimum kullanımını sağlar. Yani, normalde em.close() hiçbir şey yapmaz.

Bunu "eclipselink.jdbc.exclusive-connection.mode" persistence unit özelliğini kullanarak yapılandırabilirsiniz. "Always", EntityManager'ın ömrü için bir bağlantı tutacaktır.

İşlemler için farklı bağlantı havuzlarını ve işlem dışı okumaları kullanabilirsiniz. Bu, JTA'lar için yararlı değildir, çünkü JTA'lar için olmayan bir DataSource kullanabilirsiniz.

İlgili konular