码迷,mamicode.com
首页 > 其他好文 > 详细

JPA事务简介

时间:2015-03-15 23:02:54      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

1.事务

是指访问并可能更新数据库中各种数据项的一个程序执行单元。事务管理是对一系列操作的管理,它最终只要两个结果,要么成功,要么失败。一旦失败,所有的操作将回滚到初始状态;成功才最终提交,最终持久化。

2.事务的特性ACID

原子性、一致性、隔离性、持久性

原子性(atomicity)。一个事务是一个不可分割的工作单位,要么都做,要么都不做。

一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即并发执行的各个事务之间不能互相干扰。

持久性(durability)。指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

3.JPA中的事务

JPA中的事务管理有两种方式,分别是JTARESOURCE_LOCAL。他的事务类型是通过persistence.xml文件中的“transaction-type”元素来配置的。

<persistence>

 

    <persistence-unit name="demo"transaction-type="JTA">

 

        //其他配置。。。。。。

 

    </persistence-unit>

 

</persistence>

 

<persistence>

 

    <persistence-unit name="demo"transaction-type="RESOURCE_LOCAL">

 

        //其他配置。。。。。。

 

    </persistence-unit>

 

</persistence>

1JTA事务

JTA事务(Java TransactionAPI)是J2EE规范中有关事务的标准。它是容器级别的事务,只能运行在J2EE服务器中。它的最大优势是可以支持分布式的事务,如果系统采用的是分布式的数据库,那么只能选择JTA管理EntityManager事务。注意:

JTA事务只能运行在J2EE的环境中,即EJB容器中和Web容器中;而在J2SE环境中只能使用RESOURCE_LOCAL管理事务。

容器托管的EntityManager对象只能采用JTA的事务,而不能采用RESOURCE_LOCAL事务。

 

2)RESOURCE_LOCAL事务

RESOURCE_LOCAL事务是本地的事务。它是数据库级别的事务,只能针对一种数据库,不支持分布式的事务。对于中小型的应用,可以采用RESOURCE_LOCAL管理 EntityManager事务。注意:

J2SE环境中,只能使用RESOURCE_LOCAL管理EntityManager事务,并且EntityManager对象是以应用托管方式获得的。

代码中使用RESOURCE_LOCAL管理事务时要通过调用EntityManager的getTransac-tion()方法获得本地事务对象。

4.总结

如果要使用分布式事务就只能选择JTA,RESOURCE_LOCAL事务不支持分布式事务,且得自己手动管理事务,每次操作都得手动开启事务——getTransaction().begin()和关闭事务——getTransaction().commit()。

JPA事务简介

标签:

原文地址:http://blog.csdn.net/zuozuo1245/article/details/44281385

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!