您的位置:首页 > 其它

hibernate之缓存以及pojo对象的三种状态

2016-05-01 17:16 435 查看

一.缓存

1.分类

a) 一级缓存(存放session)

可以直接使用

私有的

--当查询时,如果有缓存,先查缓存,如果没有,才查数据库
session.clear();   //清除所有缓存
session.evict(s1); //清空一个缓存


b) 二级缓存(存放sessionFactory)

需要配置才能使用

b1) 复制二级缓存实现类放在lib下 ehcache.jar

b2) 在总的配置文件使用这个实现类(在show_sql)

cache.provider_class=org.hibernate.cache.EhCacheProvider

b3) 哪张表使用二级缓存就在哪个映射文件中配置(如下)

<hibernate-mapping>
<class name="com.pojo.Emp" table="emp" catalog="s3839">
<!--在class里,在id前配置下面这条语句   nonstrict-read-write:读写     read-only :只读 -->
<cache usage="nonstrict-read-write"/>

<id name="empId" type="java.lang.Integer">
<column name="empId" />
<generator class="native" />
</id>

</class>
</hibernate-mapping>


c) 查询缓存(存放sessionFactory) hql语句使用

c1) 配置好二级缓存(b1步,b2步)

c2) 在总的配置文件中开启查询缓存开关(show_sql)

cache.use_query_cache=true

c3) 哪个语句要使用查询缓存就在哪个query后面.setCacheable(true)

二.pojo对象的三种状态

状态在一级缓存在数据库示例
临时(transient)falsefalsenew POJO() /session.delete
持久(persistent)truetruesession.save/update/get/load/saveOrUpdate/lock
游离(detached)falsetruesession.clear/evict/close

三. dao的操作(session操作)

session.save                保存
session.update              修改
session.saveOrUpdate        保存或修改
session.merge               合并(保存或修改)
session.delete              删除
session.get                 查询
session.load
session.clear
session.evict
session.close
session.lock               锁入缓存
session.createQuery
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: