2012年12月23日
摘要: 主键增长策略increment:主键类型是数值型,适用于所有数据库identity: 主键类型是数值型,适用于支持identity的数据库(mysql,sql server)sequencenative:根据数据类型来选择(identity,sequence,hilo )uuid: 主键类型是String,根据uuid算法,生成128-bit的字串assigned基本使用原则:oracle: 主键是int/long/short,建议使用 sequence,如果主键是字串使用uuid或者assingedmysql: 主键是int/long/short,建议使用 increment/assigen 阅读全文
posted @ 2012-12-23 19:53 Chenyong Liu 阅读(102) 评论(0) 推荐(0)
摘要: 二级缓存(SessionFacotry级共享)弥补一级缓存生命周期短的缺陷1、需要手动配置2、jar包由第三方开发,常见的Hashtable,OSCache,EHCache3、二级缓存的对象可能放在内存,也可能放在磁盘举例:配置OSCache细节:(1)引入jar包D:\Download\hibernate-distribution-3.3.1.GA\lib\optional\oscache\oscache-2.1.jar(2)在项目src目录下引入oscache.propertiesD:\Download\hibernate-distribution-3.3.1.GA\project\etc 阅读全文
posted @ 2012-12-23 17:18 Chenyong Liu 阅读(145) 评论(0) 推荐(0)
摘要: 一级缓存(session级共享)什么操作会向一级缓存放入数据?save,update,saveOrUpdate,load,get,list,iterate,lock什么操作会从一级缓存取数据?get/load query.list()/query.uniqueResult()不会从一级缓取数据,但会向一级缓存放数据注意:一级缓存不需要配置,它本身没有保护机制,可以使用evict()或clear()来清除session缓存中的对象session级缓存中对象的生命周期,当session关闭后,就自动销毁 阅读全文
posted @ 2012-12-23 15:50 Chenyong Liu 阅读(115) 评论(0) 推荐(0)
摘要: 获取项目名称的方法,例如:/hbnAndstruts1、<%=this.getServletContext().getContextPath() %>2、${pageContext.request.contextPath } 阅读全文
posted @ 2012-12-23 14:51 Chenyong Liu 阅读(135) 评论(0) 推荐(0)
2012年12月19日
摘要: 级联(cascade)简述:用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作通常,对many-to-one,many-to-many不设置级联,在one-to-one和one-to-many(one的一方)中设置级联 阅读全文
posted @ 2012-12-19 16:40 Chenyong Liu 阅读(119) 评论(0) 推荐(0)
2012年12月18日
摘要: 懒加载简述: 当我们查询一个对象的时候,在默认情况下,返回的只是该对象的普通属性,当用户要对象属性时,会向数据库再一次的查询,这种现象我们称为懒加载解决方法:1、显示初始化代理对象Hibernate.initialize(stu.getDept());2、修改 Department1.hbm.xml<class name="Department1" lazy="false">...</class> 阅读全文
posted @ 2012-12-18 14:57 Chenyong Liu 阅读(120) 评论(0) 推荐(0)
2012年12月17日
摘要: hibernate对象的三种状态瞬时态(transient): 没有session管理,同时数据库中没有对应记录持久态(persistent): 有session管理,同时在数据库中有对应记录,如:save()之后,commit()之前脱管态/游离态(detached):没有session管理,但是在数据库中有记录 阅读全文
posted @ 2012-12-17 21:29 Chenyong Liu 阅读(250) 评论(0) 推荐(0)
摘要: 如何由domain中的xxx类和对应的xxx.hbm.xml,在数据库自动创建对应的表?1、配置 hibernate.cfg.xml<property name="hbm2ddl.auto">create</property>这里有四个配置值: create , update , create-drop, validatecreate: 当我们的应用程序加载hibernate.cfg.xml [ new Configuration().config(); ]就会根据映射文件,在数据库中创建对应的表,如果有,则会覆盖原表update: 如果数据库中没有 阅读全文
posted @ 2012-12-17 20:21 Chenyong Liu 阅读(2393) 评论(0) 推荐(0)
2012年12月12日
摘要: myeclipse开发hibernate项目1、在myeclipse database explorer中配置并测试连接数据库2、Add Hibernate Capabilities,自动创建hibernate.cfg.xml3、使用myeclipse提供的Hibernate Reverse Engineering,自动的创建domain类和对象关系映射文件 阅读全文
posted @ 2012-12-12 19:48 Chenyong Liu 阅读(160) 评论(0) 推荐(0)
2012年12月11日
摘要: get()和load()的区别1、get()方法直接返回实体类,如果查不到数据则返回null;load()会返回一个实体代理对象,当代理对象被调用时,如果不存在,会抛出 org.hibernate.ObjectNotFoundException;2、查询顺序:一级缓存(session缓存)->二级缓存->数据库如果缓存中没有记录,则从数据库查到的记录会自动缓存到缓存中 缓存中查不到记录,get()直接向数据库发送sql语句,而load()使用懒加载load()懒加载:返回一个代理对象(不马上到DB中去找),等后面使用这个代理对象的时候,才到DB中查询注:如果不希望使用懒加载,可以在 阅读全文
posted @ 2012-12-11 14:54 Chenyong Liu 阅读(134) 评论(0) 推荐(0)