该用户从未签到
|
hibernate 延时加载
load支持延时加载(懒加载)
get不支持延时加载
解决懒加载方法 设置lazy="false"
lazy="true"默认使用懒加载
lazy="false"立即加载
在hiberante中设置lazy=“false”
在javaWEB开可以使用过滤器解决
在struts2可以使用过滤器或者拦截器
在spring开始中SessionFilterInView过滤器解决
数据库关系
双向one-to-many
静态导包用法:
1、JDK5.0以上版本才可以使用
2、方法必须static 修饰
3、import static 类名.方法名
4、使用: 方法名()==类.方法名()
hibernate高级查询
1、HQL 查询对象 有SQL影子
2、QBC 语句 只支持查询
3、SQL语句 ibatis
hibernate缓存机制
1、一级缓存
一级缓存也叫session缓存、事务缓存
一级缓存和session绑定
支持session缓存方法:
1:get
2:load
3: save
createQuery、createCriteria不支持一级缓存
session缓存中数据不能共享
//管理session缓存
session.close()关闭缓存
session.clear();//清空session缓存中所有的数据
session.evict(user);//清空当前对象
2、二级缓存
二级缓存也叫sessionFactory缓存
(1)添加第三方类库
ehcache-1.2.3.jar
log4j-1.2.15.jar
commons-logging.jar
(2)把hibernate-3.3.2.GA\project\etc\ehcache.xml
复制到工程src根目录
<defaultCache
maxElementsInMemory="10000" --最大对象数
eternal="false"
<!--eternal="true"缓存不清空
timeToIdleSeconds、timeToLiveSeconds失效
-->
timeToIdleSeconds="120"<!--对象最大活动状态时常-->
timeToLiveSeconds="120"<!--缓存中对象的生命周期-->
overflowToDisk="true" <!--对象超出最大值,就放入到临时目录-->
/>
//超出缓存最大,放置临时目录
<diskStore path="java.io.tmpdir"/>
(3)在hibernate.cfg.xml中添加
a: <!--
是否使用二级缓存
默认支持二级缓存
-->
<property name="hibernate.cache.use_second_level_cache">
true
</property>
b: <!-- 二级缓存提供者 -->
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
(4)使用:
a:在hibernate映射文件中使用*.hbm.xml
<cache usage="read-only"/><!-- 设置只读二级缓存 -->
b:在hiberante.cfg.xml统一管理
<class-cache class="com.tarena.entity.User" usage="read-only" />
二级缓存可以实现session数据共享
|
|