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>