云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Hibernate框架Day6

Hibernate框架Day6

  • 62 次阅读
  • 3 次下载
  • 2025/6/13 14:02:58

延迟加载:hibernate在调用查询方法后,不会立即的执行sql语句 把对应的数据库中的数据查询出来,只有当用户明确的需要使用非主键数据时,才会发送sql语句进行查询

延迟加载的分类

1 一般属性的延迟加载

一般属性的延迟记载 发生在 session.load(class,pk)进行的查询操作中 好处:

某些只需要使用pk进行操作的代码中,一般属性的延迟加载可以减少内存占用

典型应用场景:获得主键设置关系的操作

UserDAO{

public void deleteUser(int id); }

HibernateUserDAO{

public void deleteUser(int id){

//User user = session.load(User.class,id); User u = new User(); u.setId(id); session.delete(u); } }

注册员工的应用场景

注意:session.get() session.load();

区别:1 get立即加载 load一般属性延迟加载

2 如果传入的主键参数不存在 get()可以执行查询 但是返回 null load()抛出异常

2 关系属性的延迟加载

普遍存在存在延迟加载

一个对象的关系属性 会进行延迟加载 只有当需要使用关系属性中非id的属性值时,hibernate才会发送sql语句查询关系属性的内容 好处:

当只需要使用本对象相关数据时,关系属性进行延迟,减少不别要的内存占用

注意:session.load(Dept.class,1) 一般属性 关系属性的延迟加载

session.get(Dept.class,2) 只有关系属性延迟加载

3 延迟加载原理:

Teacher t = (Teacher)session.load(Teacher.class,1); t.getName();

hibernate通过动态字节码技术(早期 cglib技术 现阶段 javassist技术) 动态生成的一个 Teacher类的子类 hibernate:

HibernateTeacher extends Teacher{

@Override

public String getName(){

连接数据库 发送sql命令查询的代码 return name; }

@Override

public String getSalary(){ } }

4 延迟加载异常

当延迟加载一个数据时,在事务提交后,在进行加载,就会产生延迟加载异常,主要原因在于事务提交session关闭 解决延迟加载异常:

1 扩大事务边界:把延迟加载的代码放置到事务的内部 Spring OpenSessionInView

2 fetch迫切连接:关系属性的延迟加载

inner join

left outer join 使用 重复数据 LinkedHashSet过滤

3 改变延迟加载的默认策略

不让延迟

1 不让一般属性延迟加载

3 Hibernate继承关系映射

?

继承关系映射概念:t

实体间的关系2类

1 关联关系映射 1:1 1:* *:* has a 2 继承关系 (了解) is a

?

什么情况下会出现实体间的继承关系

Teacher extends Employee{

搜索更多关于: Hibernate框架Day6 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

延迟加载:hibernate在调用查询方法后,不会立即的执行sql语句 把对应的数据库中的数据查询出来,只有当用户明确的需要使用非主键数据时,才会发送sql语句进行查询 延迟加载的分类 1 一般属性的延迟加载 一般属性的延迟记载 发生在 session.load(class,pk)进行的查询操作中 好处: 某些只需要使用pk进行操作的代码中,一般属性的延迟加载可以减少内存占用 典型应用场景:获得主键设置关系的操作 UserDAO{ public void deleteUser(int id); } HibernateUserDAO{ public void deleteUser(int id){ //User user = session.lo

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com