Hibernate 再学习

 load 没有报异常
get 不报



   1. <class name="Child" table="child">  
   2. <id column="id" name="id" type="integer" unsaved-value="null">  
   3.   <generator class="identity"/>  
   4. </id>  
   5. ...  
   6. </class>  
unsaved-value="null" (默认情况,适用于大多数对象类型主键 Integer/Long/String/...)
当Hibernate取一下child的Id,取出来的是null(在上例中肯定取出来的是null),和unsaved-value设定值相等,发送save(child)
当Hibernate取一下child的id,取出来的不是null,那么和unsaved-value设定值不相等,发送update(child)

unsaved-value="none" 的时候,由于不论主键属性为任何值,都不可能为none,因此Hibernate总是对child对象发送update(child)
unsaved-value="any" 的时候,由于不论主键属性为任何值,都肯定为any,因此Hibernate总是对child对象发送save(child)



事务级缓存  session           一级
    1 现在内存中查询对象或id
    2 在没有存在对象
    3 查询sql

    load(xxx.class,id) 能充分利用一,二级缓存,读取出来的是代理类实例,但是查不出来则报错
        get()   读取出来的永远是实体,读不出来返回null

    find() 直接使用HQL,没有利用缓存,写入缓存(大数据包内存溢出Memony异常,由于一次性加载)
    iterator()  先执行sql查找很多id,然后在用id到缓存中去查找相当于session.load()方法,写入缓存
    session.evict(bean)大数据量,可以清除缓存,减少Memony异常


应用级缓存  sessionFactory    二级
分布式缓存




select * from table for update  (独占,别人update不了,悲观锁)
乐观锁,加入版本号,每次修改都加入版本号,每次修改比较版本号


hibernate 3  延迟加载是true ,不想马上加载
hibernate 2  延迟加载是false




<property name="hibernate.hbm2ddl.auto" value="create-drop" />
validate               加载hibernate时,验证创建数据库表结构
 create                  每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。
 create-drop        加载hibernate时创建,退出是删除表结构
 update                 加载hibernate自动更新数据库结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值