`
bcc123hf
  • 浏览: 47657 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

事务级别

阅读更多
事务隔离级别:
a:脏读取:一个事务读取了另外一个并行事务未提交的数据
b:不可重复读取:一个事务再次读取之前的 数据时得到的数据不一致,被另外一个事务修改
c:虚读:一个事务重新执行一个查询,返回的记录包含了其他事务提交的新记录

jdbc支持四种(默认 防止脏读)
con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);//最底级别:只保证不会读到非法数据,上述3个问题有可能发生
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); //默认级别:可以防止脏读
con.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);//可以防止脏读和不可重复读取
con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); //最高级别:防止上述3种情况,事务串行执行

Hiberate
根据数据库默认级别而默认,mysql默认为repeatable_read,但mysql做了些特殊处理,也可以防止虚读.

问题:
我在spring里写了一个声明的事务,在这个事务里,重复查询一一条数据,但在中间向别一个事务请求(这个事务向数据库里插入了数据),我想查询插入的数据,但怎么也查询不到.

解决方案:1在查询的时候使用jdbc去查询就是了
           2,设置事务隔离级别,
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics