Hibernate的事务(Transaction)使用的很简单,和Spring整合后也就用不着了,简单的记下几个方法.
//取得session |
Session session = sessionFactory.openSession(); |
//打开事务 |
Transaction tx = session.beginTransaction(); |
//取得OID为7的持久对象 |
Person person = (Person) session.load(Person.class, 7); |
//回滚事务 |
tx.rollback(); |
//设置事务超时时间 |
tx.setTimeout(30000); |
//判断事务是不是已经提交 |
tx.wasCommitted(); |
//判断事务是不是已经回滚 |
tx.wasRolledBack(); |
//提交事务 |
tx.commit(); |
//关闭session(关闭连接) |
session.close(); |
事务的隔离级别,可以配置的值(隔离级别,对应的整数表示):
READ UNCOMMITED 1
READ COMMITED 2
REPEATABLE READ 4
SERIALIZEABLE 8
可以在主配置文件中增加<property>标签的hibernate.connection.isolation属性来修改隔离级别.隔离级别标准有4种,但具体应看数据库支持几种,Oracle 只支持2种事务隔离级别:READ COMMITED, SERIALIZABLE.Oracle 默认的事务隔离级别为 READ COMMITED;Mysql 支持4中事务隔离级别,Mysql 默认的事务隔离级别为: REPEATABLE READ,可以修改,Mysql中对事务进行操作:
查看当前连接隔离级别:SELECT @@tx_isolation;
查看全局隔离级别:SELECT @@global.tx_isolation;
设置当前连接连接的隔离级别:set transaction isolation level read committed;
设置全局连接的隔离级别:set global transaction isolation level read committed;设置是否自动提交(0为false):set autocommit=0;
查看当前的自动提交状态:select @@autocommit;