hibernate入门笔记(4)

原创 2007年10月08日 14:50:00

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) 方法。他会根据不同的底层数据库来显示指定数量的记录。 

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1528

Python笔记之入门(基础篇)

Python 3笔记之入门Python简单介绍  Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其...
  • zhangyifei521
  • zhangyifei521
  • 2016年05月15日 15:31
  • 5189

oracle入门学习笔记

oracle学习笔记
  • conanswp
  • conanswp
  • 2014年07月15日 22:36
  • 8651

hibernate4框架学习笔记

  • 2017年11月04日 12:21
  • 156KB
  • 下载

Hibernate入门(代码+笔记)

  • 2008年07月09日 22:56
  • 5.22MB
  • 下载

Hibernate入门笔记

  • 2010年06月06日 16:43
  • 399KB
  • 下载

Hibernate4从入门到精通五——————ID生成策略

一、使用assigned 拷贝上一个项目 1、在org.zttc.itat.model包下新建POJO类 Book.java package org.zttc.itat.model; p...
  • arronxu1989
  • arronxu1989
  • 2013年03月20日 10:03
  • 627

Hibernate4.x框架之一简介及入门实例

Hibernate框架历史简介 Hibernate简单实例—— step1:环境搭建 step2:配置文件 step3:编码 Step4:流程运行及总结...
  • tangzenglei
  • tangzenglei
  • 2015年07月21日 13:32
  • 377

Hibernate4从入门到精通四——————延迟加载

一、   延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就 是当在真正需要数据的时候,才真正执行数据加载操作。在Hibernate中提供了对 实体对象的延迟加载以及对集合的延迟加...
  • arronxu1989
  • arronxu1989
  • 2013年03月19日 08:59
  • 553

hibernate入门4

1.HQL多表操作:            fetch: 不能和单独条件的with一起使用     1.交叉连接 :     2.内连接        显示内连接 :    ...
  • xc123_java
  • xc123_java
  • 2017年07月02日 10:34
  • 72
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate入门笔记(4)
举报原因:
原因补充:

(最多只允许输入30个字)