hibernate 笔记(4)





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) 方法。他会根据不同的底层数据库来显示指定数量的记录。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值