Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 构建应用程序后的新数据库连接_Hibernate_Jpa_Playframework_Playframework 2.3 - Fatal编程技术网

Hibernate 构建应用程序后的新数据库连接

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

在每次重建应用程序之后创建JPA实体管理器时,我遇到了一个非常奇怪的问题。现在在应用程序中,我有一个从DAO类获取EntityManger的静态类:

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