Hibernate
文章平均质量分 63
geminiroy
这个作者很懒,什么都没留下…
展开
-
在HQL中使用new的方式限制查取的字段
使用"from XXX where XXX"的方式,当然是将整条记录查取出来封装进相应的bean里 但是很多时候,你并不需要查取出全部的字段值,特别是有BLOB,CLOB字段的时候,把不需要的内容查取封装进来,会造成巨大的内存浪费. 这时候就可以使用HQL的new操作类似如下: select new PerformanceValue(P.id,P.regionNo,P.re原创 2009-12-10 16:05:00 · 833 阅读 · 0 评论 -
saveOrUpdate问题
Hibernate会给主键为"null"的值执行insert操作如果,主键生成方式是assigned,人工指定,那么试图新增的数据,其主键不为"null",Hibernate会执行update操作但是原意是想要新增,就会报错! 结论:对于主键值不是系统自动生成的表别指望hibernate会使用saveOrUpdate()方法自动正确的保存更新数据.只能手动采用save()、update()函数完成.原创 2011-04-19 15:38:00 · 363 阅读 · 0 评论 -
Criteria的分页查询
以下两个方法控制分页取值://设置本次查询第一个取值数的rowno index,注意这个值是从0开始的 public Criteria setFirstResult(int firstResult); //设置本次查询最大的取值数 public Criteria setMaxResults(int maxResults);Hibernate会根据以上两个输入计算出本次分页要查取的rowno范围,注意这是个“前开后闭”区间!比如 firstResult=3;maxResults=5的情况下,Hiberna原创 2011-01-19 16:07:00 · 289 阅读 · 0 评论 -
hibernate的级联操作
save-update: 级联保存(load以后如果子对象发生了更新,也会级联更新). 但它不会级联删除delete: 级联删除, 但不具备级联保存和更新all-delete-orphan: 在解除父子关系时,自动删除不属于父对象的子对象, 也支持级联删除和级联保存更新.all: 级联删除, 级联更新,但解除父子关系时不会自动删除子对象. delete-orphan:删除所有和当前对象解除关联原创 2010-03-24 23:05:00 · 8881 阅读 · 1 评论 -
集合类型映射
<!-- key是集合表中引用T_Collection_Mapping表的外键,建立两表的关系 节点是用来表示集合真正存放数据的地方,每个集合映射都必须又element节点 --> <!-- set是无序的,因此最简单,一个key与主表原创 2010-03-05 11:37:00 · 167 阅读 · 0 评论 -
Hibernate报出NoInitialContextException异常
提示信息: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.i原创 2010-03-08 16:03:00 · 187 阅读 · 0 评论 -
Hibernate的缓存
一级缓存:一级缓存的生命周期很短,与session同时,也叫session级缓存或事务级缓存 支持一级缓存的方法:* get()* load()* iterate() ---查询实体对象的时候,非实体对象不缓存管理一级缓存的方法:* session.clear()---清空整个缓存* session.evict()---逐出某个实体对象 如何避免原创 2010-03-07 13:35:00 · 196 阅读 · 0 评论 -
继承映射
单表继承:每棵类继承树映射成一张表 缺点:用一张表表示整个继承结构,会有大量的冗余字段,而且如果子类的独有属性被置为not-null,则无法保存,但仍然是最常用的继承映射 具体表继承:每个子类一张表原创 2010-03-04 14:19:00 · 153 阅读 · 0 评论 -
Lazy策略
hibernate lazy 策略可以使用在:* 标签上,可以取值true/false* 标签上,可以取值true/false 可以使用类增强工具* 标签上,可以取值true/false/extra* 单端关联上,可以取值true/false/noproxy lazy概念:只有真正使用该对象时才会创建,对于hibernate而言,只有真正使用的时候才会发出sql原创 2010-03-02 16:14:00 · 169 阅读 · 0 评论 -
组件映射 和 复合主键映射
component映射 在hibernate中,component是某个实体的逻辑组成部分,它与实体的根本区别是没有oid(在程序中而言,同样,它不对应一张表),component可以成为值对象 优点:它实现了对像模型的细粒度划分,层次更分明,复用率会更高 <!-- hibernate提供了很多种主键生成策略,但是,一般还是用native的好,因为很难做到所有对原创 2010-03-04 16:03:00 · 242 阅读 · 0 评论 -
几种关联映射的心得
最简单的关联映射,就是many的一端外键引用one一端的主键 不需要你显式的在many的类中指定一个对应外键的属性,这个外键名是由标签中的column属性定义的,如果没有此属性,则默认的外键名就是实体属性名 标签内的cascade可以用来解决存储顺序的问题,解决级联操作。但是这个属性是属于hibernate管理的而不是数据库 有all,none,save-updat原创 2010-02-24 14:58:00 · 324 阅读 · 0 评论 -
Hibernate 中Session的load和get方法的区别
Hibernate中Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:1.get()方法直接返回实体类,load()方法可以返回实体的代理类实例。2.hibernate load是采用延迟机制(当lazy属性为true时) 而get不采用延迟机制(get语句马上读库)3.找不到符合条件的数据 get方法将返回原创 2010-02-24 23:58:00 · 1578 阅读 · 2 评论