我刚开始学习JPA 2.0,我有一段代码:
em = SessionFactory.startSession();
tx = em.getTransaction();
我的问题是:我不确定自己完全理解使用会话和使用事务之间的区别。能否请有经验的人在几句话中告诉我它们之间最大的区别?谢谢!
我刚开始学习JPA 2.0,我有一段代码:
em = SessionFactory.startSession();
tx = em.getTransaction();
我的问题是:我不确定自己完全理解使用会话和使用事务之间的区别。能否请有经验的人在几句话中告诉我它们之间最大的区别?谢谢!
session.close()
时会抛出异常... - Don Cheadleem = SessionFactory.startSession();
在JPA中,没有Session和SessionFactory。SessionFactory是一个特定于Hibernate的接口,如果你使用JPA,就不应该使用它(可以使用Hibernate自己的API或将Hibernate作为JPA提供者,但不要两者同时使用)。会话是您用来与数据库交互的方式。
事务用于指定会话操作的边界。
实际上,事务通过只允许一个会话与其交互来防止数据库被损坏。(这比较复杂,因为您可以有许多事务从数据库中读取,但只有一个事务在写入。)
Session session = null;
Transaction tx = null;
try{
session = HibernateUtil.getSessionFactory().openSession();
tx = session.beginTransaction();
tx.setTimeout(5);
//doSomething(session);
tx.commit();
}catch(RuntimeException e){
try{
tx.rollback();
}catch(RuntimeException rbe){
log.error("Couldn’t roll back transaction", rbe);
}
throw e;
}finally{
if(session!=null){
session.close();
}
}