博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate第四天
阅读量:5357 次
发布时间:2019-06-15

本文共 1750 字,大约阅读时间需要 5 分钟。

extra策略:

与 lazy=“true” 类似. 主要区别是增强延迟检索策略能进一步延迟 Customer 对象的 orders 集合代理实例的初始化时机:
• 当程序第一次访问 orders 属性的 iterator() 方法时, 会导致 orders 集合代理类实例的初始化
• 当程序第一次访问 order 属性的 size(), contains() 和 isEmpty() 方法时, Hibernate 不会初始化 orders 集合类的实例, 仅通过特定的 select 语句查询必要的信息, 不会检索所有的 Order 对象

----------------------

懒加载:

也叫延迟加载,不是在执行获取操作时马上生成SQL,而是在第一次使用时生成SQL。
分成两种:
类级别的:
<class ... lazy="true/false">
属性级别的:
<set/list/map/bag ... lazy="...">
<many-to-one ... lazy="...">
<one-to-one ... lazy="...">
在使用懒加载特性时,可能会有LazyInitializationException异常:
原因:
真正的去获取数据时,Session已经没有了。
解决办法:
方式一:让Session在真正加载后再关闭。
方式二:或是在Sessoin关闭前执行Hibernate.initialize(department.getEmployees());

HashMap Hashtable

 

不管是一级缓存,还是二级缓存,都地在使用OID的获取对象时才有效。

get()
load()
对于Query.list()默认不会使用缓存,哪怕写成where id=1也不会使用缓存。

 

Update \____ 不会通知Session缓存。

Delete / 通知二级缓存

 

// ==============================================

class TxFilter implements Filter{

puboic void doFilter(request, response, chain){

session = sf.openSession();
Utils.threadLocal.set(session); // 绑定到当前线程上
try{
tx = session.beginTransaction();
chain.doFitler(); // 放行
tx.commit();
}catch(e){
tx.rollback();
throw e;
}finallay{
session.close();
Utils.threadLocal.remove(); // 移除
}

}

}

class UserDao{
public void saveUser(User user){
session = Utils.threadLocal.get();
session.save(user);
}
}

// ==============================================

class TxFilter增强 implements Filter{

puboic void doFilter(request, response, chain){

session = sf.getCurrentSession();
try{
tx = session.beginTransaction();
chain.doFitler(); // 放行
tx.commit();
}catch(e){
tx.rollback();
throw e;
}

}

}

class UserDao增强{

public void saveUser(User user){
session = sessionFactory.getCurrentSession();
session.save(user);
}
}

 

转载于:https://www.cnblogs.com/mxf97826/p/8708135.html

你可能感兴趣的文章
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>
Week03-面向对象入门
查看>>
一个控制台程序,模拟机器人对话
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>