`

八、Session

 
阅读更多
方法 (CRUD)

save

delete:只要对象有主键,并且数据库里面有,就能删除。

load

get

get与load的区别:
1、不存在对应记录时表现不一样,get方法返回null,尔load方法先返回一个代理对象,在使用时报错。
2、load返回的是代理对象,等到真正用到对象的内容时才发出sql语句
3、get直接从数据库加载,不会延迟
update
1、用来更新detached对象,更新完成后转为persistent状态
2、更新transient对象会报错
3、更新自己设定id的transient对象可以(数据库有对应记录)
4、persistent状态的对象只要设定(如:t.setName…)不同字段就会在事务提交或者session关闭时,自动发起更新
5、更新部分更改的字段
(1)xml 设定 property 标签的 update 属性,annotation 设定@Column 的 updatable属性,不过这种方式很少用,因为不灵活
(2)使用xml中的dynamic-update,JPA1.0 Annotation 没有对应的属性
          同一个session可以,跨session不行,不过可以用merge()(不重要)
(3)使用 HQL(EjBQL)(建议)
saveOrUpdate
clear:清除session缓存。
无论是load还是get,都会首先査找缓存(一级缓存),如果没有,才会去数据库査找,调用
clear()方法可以强制清除session缓存。
flush:强制将内存(session缓存)与数据库同步
当session的事务提交后,会强制将内存(session缓存)与数据库同步。默认情况下是session的事务提交(commit)时才同步!
session的FlushMode设置,可以设定在什么时候同步缓存与数据库(很少用)
例如: session.setFlushMode(FlushMode.AUTO)
SchemaExport (自动建表)
new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);
第一个boolean值表示是否显示建表的ddl语句
第一个boolean值表示是否显示在数据库中执行ddl建表语句
 
 
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics