Hibernate事务

Hibernate事务控制
    在实际生产中,每个业务逻辑都是由一系列对数据库访问完成的,这一系列的数据访问可能包括删除一些数据,然后再插入一些数据,
这里的删除和插入的动作不可分割,要么全部执行,要么都不执行,这就需要事务。

事务具备4个特性:原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持续性(Durability)
    
    从编程角度来看,Hibernate事务是由Session对象开启的;但是从底层的实现来看,Hibernate事务由TransactionFactory来产生的。
    
    在编写应用程序时无须手动操作TransactionFactory产生事务,这是因为SessionFactory底层以及封装了TransactionFactory。但是
SessionFactory对象的创建代价很高,它是线程安全的对象,它可以被所有的线程共享。
    
    通常,SessionFactory会在应用程序启动时创建,一档创建了SessionFactory它将不会轻易关闭,只有当应用退出时才关闭SessionFacotry。

Session对象是轻量级,非线程安全的。在进行一次业务操作时,会创建,使用和关闭Session。但是Session在创建后,并不会立即打开与数
据库之间的连接,只有在需要进行数据库操作时,Session才会获取JDBC连接。因此打开和关闭Session并不会对性能造成很大的影响。所以,对于
程序的性能关键还是在于对于数据库的操作部分,即数据库事务。所以数据库事务应尽可能的短,从而降低数据库锁定造成资源争用。

Hibernate的所有持久化操作都必须在Session中进行。
    
    Hibernate建议采用每个请求对应一个Session的模式————通常一个请求表示需要执行的一个完整业务功能。
    
    对于一些大批量的数据处理,推荐使用DML风格的HQL语句完成。

时间: 2024-10-10 14:02:53

Hibernate事务的相关文章

Hibernate事务管理

Hibernate 是JDBC 的轻量级封装,本身并不具备事务管理能力.在事务管理层, Hibernate将其委托给底层的JDBC或者JTA,以实现事务管理和调度功能.      Hibernate的默认事务处理机制基于JDBC Transaction.我们也可以通过配置文件设定采用JTA作为事务管理实现: <hibernate-configuration>          <session-factory>                   ……               

Spring+hibernate事务配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"    xmlns:task="http://www.springframework.org/schema/task"    xmlns:xsi="http://www.w3.org/2001/XMLSchem

Hibernate事务代码规范写法

----------------siwuxie095 事务相关概念 1.什么是事务 逻辑上的一组操作,构成这组操作的各个单元,要么一起成功, 要么一起失败 2.事务的四个特性 1)原子性 2)一致性 3)隔离性 4)持久性 3.不考虑隔离性,产生的问题 1)脏读 2)不可重复读 3)幻读(也称 虚读) 4.设置事务隔离级别,即可解决不考虑隔离性所产生的问题 「MySQL 默认的隔离级别:Repeatable Read(可重复读)」 5.Hibernate 也可以在核心配置文件中配置事务隔离级别

spring hibernate 事务整合 使用测试类 事务不自动提交的问题!!!

使用JUnit 测试hibernate 事务管理的时候应注意 ,测试类完成是默认回滚的. 所以只能查询数据库却不能增删改数据库. 应该在测试类上面加上注解 @Rollback(false)  表似默认不回滚. package TestHibernate; import java.util.List; import javax.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import or

JTA与Hibernate事务

Hibernate是JDBC的轻量级封装,本身并不具备事务管理能力,在事务管理层,Hibernate将其委托给底层的JDBC或者JTA,以实现事务的管理和调度. Hibernate的默认事务处理机制基于JDBCTransaction,也可以通过配置文件设定采用JTA作为事务管理实现: <hibernate-configuration> <session-factory> …… <property name = "hibernate.transaction.facto

Hibernate 事务提交和事务回滚

Hibernate 事务提交和事务回滚 最近在用做hibernate做项目,一直不明白session.beginTransaction().commit() 和 session.beginTransaction().rollback(); 有什么区别 一组业务整体处理的行为叫一个事务.这一组的业务都能成功处理,我们就可以把这个事务提交来保存你已做的行为结果.但如果一组中有任何的差错出现的话,我们就认为这事务不成功,需要回滚来撤消之前的操作.举例:你去银行转账,转账我们有两步吧,从你账户中取出钱再

Hibernate事务和并发控制

Hibernate事务和并发控制 ++YONG原创,转载请注明 1.    事务介绍: 1.1.       事务的定义: 事务就是指作为单个逻辑工作单元执行的一组数据操作,这些操作要么必须全部成功,要么必须全部失败,以保证数据的一致性和完整性. 1.2.       事务具有ACID属性: o  原子性(Atomic):事务由一个或多个行为绑在一起组成,好像是一个单独的工作单元.原子性确保在事务中的所有操作要么都发生,要么都不发生. o  一致性(Consistent):一旦一个事务结束了(不

第十二节:Hibernate 事务隔离,对象状态

瞬时态:当new一个实体对象后,这个对象处于瞬时态,即这个对象只是一个保存临时数据的内存区域,如果没有变量引用这个对象,则会被JVM的垃圾回收机制回收.这个对象所保存的数据与数据库没有任何关系,除非通过Session的save().saveOrUpdate().persist().merge()方法把瞬时态对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久态对象. 持久态:持久态对象的实例在数据库中有对应的记录,并拥有一个持久化标识(ID).对持久态对象进行delete操作后,

Spring与Hibernate整合,实现Hibernate事务管理

1.所需的jar包 连接池/数据库驱动包 Hibernate相关jar Spring 核心包(5个) Spring aop 包(4个) spring-orm-3.2.5.RELEASE.jar                 [spring对hibernate的支持] spring-tx-3.2.5.RELEASE.jar                     [事务相关] 2.配置文件 Product.hbm.xml <?xml version="1.0" encoding=