hibernate入门笔记(4)
来源:互联网 发布:java js 编辑:程序博客网 时间:2024/05/16 15:44
day4
Hibernate控制的事务
事务保证原子操作的不可分,也就是操作的同时成功或同时失败。
Transaction tran=session.beginTranaction();
tran.commit();
tran.rollback();
以上是事务对象的方法,来实现对事务的支持。
hibernate的事务隔离级别
hibernate的事务隔离级别和JDBC中大致相同。
设置时要在hibernate.cfg.xml配置
<property name="hibernate.connection.isolation">4</property>
1,读未提交的数据(Read uncommitted isolation)
2,读已提交的数据(Read committed isolation)
4,可重复读级别(Repeatable read isolation)
8,可串行化级别(Serializable isolation)
hibernate的锁(悲观锁,乐观锁)
悲观锁是由数据库本身所实现的,会对数据库中的数据进行锁定,也就是锁行。
LockMode.UPGRADE,修改锁,在get()方法中加上这个设置作为第三个参数。
LockMode.NONE 无锁机制
LockMode.READ 读取锁
LockMode.WRITE 写入锁,不能在程序中直接使用
还可以使用Session.lock() Query.setLockMode() Criteria.setLockMode()方法来设置锁
乐观锁,也就是通过对记录加上某些信息来解决并发访问的问题。
版本检查
要在其表中多加上一列表示版本信息,会在读取时读到这个版本号,并在修改之后更新这个版本号,并且只有版本号相同才会予以更新,如果版本号低,就会抛出例外。
<version name="version" column="version" type="integer" />
时间戳
使用时间戳,是通过最后修改时间来判断是否来做更新操作,也就是只有在最后更新时间之后才会做更新。
<timestamp name="updateTime" column="updatetime"/>
hibernate组件映射
组件不会生成唯一标识,但是也需要对应实体类。
hibernate中可以把一个类的对象当作一个属性组件来使用,并且在使用时会自动创建,所以同一组件对象是不会被两次引用的。
例:
<hibernate-mapping package="alan.hbn.rel.inherit" auto-import="false">
<class name="Guest" table="guest">
<id name="id" column="id" type="long" unsaved-value="0">
<generator class="native"/>
</id>
<property name="userName" column="userName" type="string"/>
<property name="password" column="pwd" type="string"/>
<property name="birthday" column="birthday" type="date"/>
<component name="homeAddress" class="Address">
<property name="street" column="street" type="string"/> <property name="zipcode" column="zipcode" type="string"/> </component>
</class
</hibernate-mapping>
hibernate的HQL(hibernate Query Language)
HQL是hibernate的查询语言,他可以支持面向对象的查询。使用HQL语句,只能通过session.createQuery("...") 。
使用hibernate分页显示,使用Query对象的setFirstResult(int firstResult)(firstResult从零开始)方法和setMaxResults(int maxResults) 方法。他会根据不同的底层数据库来显示指定数量的记录。
- hibernate入门笔记(4)
- 【Hibernate学习笔记】hibernate入门
- hibernate笔记02 Hibernate入门
- hibernate入门笔记(1)
- hibernate入门笔记(2)
- hibernate入门笔记(3)
- Hibernate入门笔记
- Hibernate入门笔记
- hibernate学习笔记--入门
- JavaEE-Hibernate入门笔记
- Hibernate入门学习笔记
- Hibernate入门学习笔记
- hibernate入门笔记
- Hibernate入门笔记
- hibernate 入门笔记
- Hibernate入门学习笔记
- Hibernate入门笔记 1, 2
- Hibernate入门学习笔记1
- hibernate入门笔记(1)
- hibernate入门笔记(2)
- hibernate入门笔记(3)
- [转贴]使用 Excel Services ,结合 Analysis Services 在 SharePoint 中发布报表
- 网络收集:PL/SQL常用方法汇总
- hibernate入门笔记(4)
- 使用Eclipse RCP进行桌面程序开发(一):快速起步
- 成员函数指针与高性能的C++委托(上篇)
- SAP 报废资产时出现 "无法找到区域 01 的账户 '资产销售收入的结算科目' " 的解决(二) 解决问题
- VS.NET2005安装部署之实战
- 双击文件名打开应用程序
- 嵌入式Linux文件系统制作详解
- Javascript中最常用的55个经典技巧
- 巫术的概念