本章讲的是Hibernate高级特性,其实Hibernate就是对JDBC的轻量级封装,所以Hibernate的高级特性,就是数据库有关知识,对这方面比较熟悉的小伙伴,可以选择性的跳过。
第一部分 Hibernate事务管理
事务有4个重要特性:
综上,一个完整的应用Hibernate事务的实例如下:
第二部分 Hibernate并发处理
但是在实际应用中,事务隔离级别越高,对并发性能的影响必然越大。对于大多数程序,可以优先考虑把隔离级别设置为“读已提交数据”,能够避免脏读,且具有较好的并发性能。
第三部分 Hibernate的拦截器
运行结果图:
至此本篇介绍Hibernate高级特性文章结束,下篇我们开讲第11章 Hibernate与Struts 2整合应用案例,敬请期待!(✿◡‿◡)
数据库相关知识补充:
1:原子性:事务包含的所有操作要么全部成功,要么全部失败回滚;成功必须要完全应用到数据库,失败则不能对数据库产生影响;
2:一致性:事务执行前和执行后必须处于一致性状态,
例:用户A和用户B的前加起来一共是5000; 无论AB用户之间是如何相互转换的,事务结束后两个用户的钱加起来还是5000,这就是事务的一致性。
3:隔离性:当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不被其他事务的操作所干扰,多个并发事务之间要相互隔离;
4:持久性:一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便在数据库系统遇到故障的情况下也不会丢失事物的操作。
数据库提供的四种隔离级别: 01:Read uncommitted(读未提交):最低级别,任何情况都会发生。 02:Read Committed(读已提交):可避免脏读的发生。 03:Repeatable read(可重复读):可避免脏读、不可重复读的发生。 04:Serializable(串行化):避免脏读、不可重复读,幻读的发生。
注: 四种隔离级别最高的是Seralizable级别,最低的是Read uncommitted级别; 级别越高,执行效率就越低; 隔离级别的设置只对当前链接有效,对JDBC操作数据库来说,一个Connection对象相当于一个链接,只对该Connection对象设置的隔离级别只对该connection对象有效,与其它链接connection对象无关。
01:Mysql的默认隔离级别是:可重复读:Repeatable read;
02:oracle数据库中,只支持seralizable(串行化)级别和Read committed();默认的是Read committed级别;
Serializabale:最高的事务隔离级别,代价花费最高,性能很低,很少使用,在此级别下,事务顺序执行,避免上述产生的情况。
本章实例源代码GitEE地址:
https://gitee.com/jahero/bookManage.git
数据库相关:
https://blog.csdn.net/qq_41866572/article/details/81326922