6.Session 接口

session 管理数据库的一个任务单元

常用的方法(CURD):

save()

delete():从数据库删除数据,缓存中也同时删掉

update():数据库有记录 才可以更新,不然出错
只更新部分字段,该如何设置?
    方法1:在对应的字段的getter方法上进行注解@Column(updatable=false),或者在映射文件的<property name="property_name" update="false" />中进行设定,不够灵活
    方法2:在xml映射文件(User.hbm.xml)对应的class标签添加dynamic-update="true":  <class name="User" table="user" dynamic-update="true" >...</class>
    方法3:直接使用HQL(推荐使用)

merge():跨session更新,较少使用

saveOrUpdate()

load()
get()
get/load方法的区别:
    1.不存在对应记录时,表现不一样。get找不到记录是,会报错,load不会报错
    2.load返回的是代理对象,等到真正用到了这个对象,才会发出sql语句,进行查询
    3.get直接从数据库加载,不会延迟

clear():清除session缓存
无论load还是个体,都会首先查找缓存(一级缓存),若没有,再查找数据库。clear()会清除缓存里面的数据

flush():强制缓存与数据库数据做同步

 

SchemaExport是org.hibernate.tool.hbm2ddl包下的一个类,可以以程序的方式(相对以配置文件<property name="hbm2ddl.auto">create</property>)自动创建建表语句,在测试中很好用

posted @ 2015-06-27 17:18  cbirdq  阅读(131)  评论(0编辑  收藏  举报