Hibernate 构建应用程序后的新数据库连接
在每次重建应用程序之后创建JPA实体管理器时,我遇到了一个非常奇怪的问题。现在在应用程序中,我有一个从DAO类获取EntityManger的静态类:Hibernate 构建应用程序后的新数据库连接,hibernate,jpa,playframework,playframework-2.3,Hibernate,Jpa,Playframework,Playframework 2.3,在每次重建应用程序之后创建JPA实体管理器时,我遇到了一个非常奇怪的问题。现在在应用程序中,我有一个从DAO类获取EntityManger的静态类: import javax.persistence.EntityManager; import play.db.jpa.JPA; public class AppEntityManager { private static EntityManager em = JPA.em("default"); public static E
import javax.persistence.EntityManager;
import play.db.jpa.JPA;
public class AppEntityManager {
private static EntityManager em = JPA.em("default");
public static EntityManager getInstance() {
return em;
}
}
我如何使用此is类的示例:
public static User getUserByUsername(String username) {
Query query = AppEntityManager.getInstance().createQuery("select u from User u where u.username = :username", User.class);
query.setParameter("username", username);
try {
return (User) query.getSingleResult();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
第一次创建到数据库的5个连接时。但在重新编译应用程序后,每次都会添加到同一个连接上。我不明白为什么以及如何修复它。请举例说明如何正确使用JPA+Hibernate。那么您是否真的在任何地方关闭了这些EntityManager?因为你迟早要这么做。还是使用单一的EntityManager进行所有用途?(单线程?)不,我从不关闭EntityManager。也许我没有正确使用它。如果即时最佳实践取决于“JPA.em(…)”的功能,我会很高兴。建议你看看它的javadocs