java – 获取EntityManager的不同方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 获取EntityManager的不同方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2016字,纯文字阅读大概需要3分钟。
内容图文
![java – 获取EntityManager的不同方法](/upload/InfoBanner/zyjiaocheng/702/299be54bbb464f78b63e3cde9c90056d.jpg)
我在创建EntityManager时看到的常用习惯是这样的:
public class BaseDao {
private static final String PERSISTENCE_UNIT_NAME = "Employee";
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
public EntityManager getEntityManager() {
return factory.createEntityManager();
}
}
然后就像这样使用:
Employee emp = new Employee();
emp.setName("Joe M");
getEntityManager().persist(emp);
问题是为什么不这样做:
public class BaseDao{
private static final String PERSISTENCE_UNIT_NAME = "Employee";
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
private EntityManager entityManager = null;
public void setEntityManger() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
this.entityManager = factory.createEntityManager();
}
public EntityManager getEntityManager() {
return this.entityManager;
}
}
换句话说,是否需要始终通过factory.createEntityManager()获取实体管理器?或者它可以创建为实例(甚至静态)变量并像这样检索?
为了澄清,我在谈论一个不使用EJB或Spring容器的环境.
谢谢.
解决方法:
有两种方法可以创建EntityManager实例.
一种方法是SDK应用程序,我在单元测试中使用这种方式很多.这就是你的例子:
EntityManagerFactory factory =
Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
在Enterprise应用程序中,您让容器为您创建它们并在需要时注入它们.
EntityManager只是JDBC连接的包装器.它的重量非常轻,可以创建和销毁而不会降低性能.
请记住,EntityManager不是线程安全的,因此如果您有一个实例,则可能需要同步对它的访问.有关详情,请参见transaction basics.
这是我将如何做到(大致):
public class BaseDao{
private static final String PERSISTENCE_UNIT_NAME = "Employee";
private static EntityManagerFactory factory =
Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
public void create(MyEntiy person){
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
// do what ever you need
em.getTransaction().commit();
em.close();
}
// add more methods to the dao.
}
一旦你得到这个原型并准备就绪,你就可以使用通用的DAO.
内容总结
以上是互联网集市为您收集整理的java – 获取EntityManager的不同方法全部内容,希望文章能够帮你解决java – 获取EntityManager的不同方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。