hibernate入门2

  • Hibernate的持久化类的编写规则

1.无参数构造----因为hibernate中用到了反射机制
2.属性私有属性私有后,提供get和set方法,符合hibernate的规则
3.属性尽量使用包装类----使用包装类在向表中插入记录的时候,某些字段不填,会插入null
4.提供一个唯一OID与主键对应----hibernate中区分是不是同一个对象是使用OID区分的
5.不要使用final修饰----使用final修饰后,session.load和session.get就没有区别了,一级缓存就失效

什么是持久化类?
hibernate中将一个类和数据表使用映射文件进行关联后,该类就是一个持久化类

  • Hibernate的主键生成策略

1.主键分类
自然主键----该主键是持久化类对象紧密相关的一个属性,例如人员对象的身份证号
代理主键----该主键是虚拟的一个字段,本身和对象没有关系,例如用户ID,而在开发中我们一般都采用代理主键,这样我们就可以对对象中的任意一个紧密相关的属性进行修改,例如如果我们将身份证号作为主键,我们就没办法对身份证号进行修改了。
2. 主键生成策略(以下是常见的)
 increment----自动增长,long,int,byte,是hibernate实现的自增长
identity----自动增长,long,int,byte,例如mysql中使用,采用数据库底层的自增长
 sequence----long,int,byte,例如oracle中使用
uuid----字符串类型作为主键时使用
native----自动检测是什么数据库,然后进行选择
 assigned
 foreign

  • hibernate的持久化类的三种状态

1.瞬时态----没有唯一标识OID,没有被session管理
2.持久态----有唯一标识OID,有被session管理
3.游离态(托管态)----没有唯一标识OID,有被session管理

  • hibernate一级缓存

hibernate的一种优化手段,被称为session级别缓存。hibernate在进行持久化的时候会生成一个快照区,将持久化的对象在快照区中写一份快照,然后在下一次查询,如get或load操作时,会将查询的对象和快照区的对象进行对比,如果OID是一致,就表明是同一个对象,别直接从快照区中去数据,不会发送sql语句。

  • hibernate设置隔离级别

hibernate在进行实物操作的时候为了解决读的问题,可以设置隔离级别。只需要在hibernate的核心配置文件中进行配置就行,如下:

 <property name="hibernate.connection.isolation">4</property>

事务隔离级别 (2,4比较常用)
0:TRANSACTION_NONE
1:TRANSACTION_READ_UNCOMMITTED
2:TRANSACTION_READ_COMMITTED
4:TRANSACTION_REPEATABLE_READ
8:TRANSACTION_SERIALIZABLE

  • hibernate的其他API

 Query :HQL(hibernate query language) 面向对象方式的查询。
 Criteria :QBC 完成面向对象化。
 SQLQuery :SQL查询----开发中使用hibernate框架,但是sql比较复杂时,我们最好使用SQLQuery

猜你喜欢

转载自blog.csdn.net/Roriring/article/details/88913867
今日推荐