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

一.缓存

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值