hibernate要点

***在*.hbm.xml文件中加入自建表语句
<property name= "hbm2ddl.auto" >update</property>
 
***在*.hbm.xml文件中加入如下BEAN的属性:
*作用是让数据库不再改一个字段值更新全部的字段,而是改一个字段便更新一个字段,不改就不更新了
< class  name= "com.cyjch.hibernate.User"  dymamic-update= "true" >
 
***提交session时,
*用merge()时意为合并一个对像数据库
*先SELECT 再去比较 现有的对象,不同时更新
 
***用HQL语句不用以上的更新,效率高些
 
***clear() 无论是load还是get,都会先查找缓存(一级缓存),如果没有,才会去数据库中查找,调用clear()可以清存缓存
 
***flash() 强制commit() 更新数据库
 
 
 
Hibernate常用的关系映射
一对多
a)单向
b)双向
 
多对一
a)单向
b)双向
 
多对多
a)单向
b)双向
 
双向操作:双向关系在程序中要设定双向关联,还要设定mappedBy(注解)
这样在哪一方做增删改查都不会出问题
 
SQLQuery q = session.createSQLQuery( "select * from category limit 2,4" ).addEntity(Category. class );
说明:.addEntity() 意为将查出的结果交予一个对象
 
*一级缓存和二级缓级和查询缓存
 
1 )一级缓存:Session级别的缓存
 
2 )二级缓存:SessionFactory级别的缓存,可以跨越Session存在
 
3 )打开二级缓存:
hibernate.cfg.xml设定:
<property name= "cache.use_second_level_cache" > true </property>
<property name= "cache.provider_class" >org.hibernate.cache.EhCacheProvider</property>
 
4 ) @Catche 注解
 
5 )load默认使用二级缓存, iterate默认使用二级缓存
 
6 )list默认往二级缓存加数据,但是查询的时候不使用
 
7 )如果要query用二级缓存,需要打开查询缓存
 
8 )查询缓存设定:<property name= "cache.use_query_cache" > true </property>

你可能感兴趣的:(java,Hibernate)