码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate02

时间:2018-03-29 20:09:20      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:set   private   批量   指定   log   绑定   div   获得   串行化   

一 hibernate中的实体规则

1.1 实体类创建的注意事项

  1. 持久化类提供无参数构造         --在调用instance()方法时默认调用空参构造
  2. 成员变量私有,提供共有get/set方法访问.需提供属性   ---Private String name 不叫属性 叫成员变量   --Get和set方法才叫属性
  3. 持久化类中的属性,应尽量使用包装类型       
  4. 持久化类需要提供oid.与数据库中的主键列对应  --没有主键是无法到hibernate里面的
  5. 不要用final修饰class      hibernate使用cglib代理生成代理对象.代理对象是继承被代理对象.如果被final修饰.将无法生成代理.

1.2 主键类型

自然主键(少见)

表的业务列中,有某业务列符合,必须有,并且不重复的特征时,该列可以作为主键使用.

代理主键(常见)

表的业务列中,没有某业务列符合,必须有,并且不重复的特征时,创建一个没有业务意义的列作为主键

1.3 主键生成策略

代理主键

identity : 主键自增.由数据库来维护主键值.录入时不需要指定主键.

自然主键

assigned:自然主键生成策略. hibernate不会管理主键值.由开发人员自己录入.

increment 有线程安全问题,只在测试下用,在开发中不用

 技术分享图片

 

二 hibernate中的对象状态

2.1 对象分为三种状态

 

瞬时状态    

没有id,没有在session缓存中

持久化状态

有id,在session缓存中

游离|托管状态

有id,没有在session缓存中

 

2.2 三种状态的转换图

技术分享图片

 

三 hibernate进阶-一级缓存

缓存:提高效率.hibernate中的一级缓存也是为了提高操作数据库的效率.

 提高效率手段1:提高查询效率

 技术分享图片

 

 提高效率手段2:减少不必要的修改语句发送

 技术分享图片

四 hibernate中的事务

4.1 事务

事务特性

a 原子性

c 一致性

 i 隔离性

d 持久性

事务并发问题

1.脏读

2.不可重复度

3.幻|虚读

事务的隔离级别

读未提交- 123

读已提交 - 23

可重复读(mysql默认级别)-3

串行化 - 没有问题

4.2 hibernate隔离级别

知识点:如何在hibernate中指定数据库的隔离级别

在主配置文件中可以设置

技术分享图片

 

4.3 管理事务

 知识点2:在项目中如何管理事务

 业务开始之前打开事务,业务执行之后提交事务. 执行过程中出现异常.回滚事务.

在dao层操作数据库需要用到session对象.在service控制事务也是使用session对象完成. 我们要确保dao层和service层使用的使用同一个session对象

 在hibernate中,确保使用同一个session的问题,hibernate已经帮我们解决了. 我们开发人员只需要调用sf.getCurrentSession()方法即可获得与当前线程绑定的session对象

注意1: 调用getCurrentSession方法必须配合主配置中的一段配置

 技术分享图片

注意2:通过getCurrentSession方法获得的session对象.当事务提交时,session会自动关闭.不要手动调用close关闭.

 crm项目中

事务一般在sevice中处理.需要保证同一个session.这时要要在线程中取session

service层

技术分享图片

 

 Dao

技术分享图片

五 hibernate中的批量查询

5.1 HQL查询

hibernate Query Language(多表查询,但不复杂时使用)

Hibernate独家查询语言,属于面向对象的查询语言

基本查询

 技术分享图片

 

技术分享图片

 

 条件查询

?号占位符

技术分享图片

命名占位符

技术分享图片

分页查询

 技术分享图片

 

5.2 Criteria查询

(单表条件查询)

Hibernate自创的无语句面向对象查询

 

基本查询

技术分享图片

条件查询

 技术分享图片

技术分享图片

分页查询

技术分享图片

设置查询总记录数

技术分享图片

5.3 原生SQL查询

(复杂的业务查询)

基本查询

返回数组List

技术分享图片

返回对象List

 技术分享图片

条件查询

 技术分享图片

分页查询

技术分享图片

 

 

Hibernate02

标签:set   private   批量   指定   log   绑定   div   获得   串行化   

原文地址:https://www.cnblogs.com/liu-wang/p/8670726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!