Hibernate
文章平均质量分 64
zjkilly
这个作者很懒,什么都没留下…
展开
-
hibernate集合映射inverse和cascade详解
1、到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或删除对像时更方便一些,只要在cascade的源头上插入或是删除,所有cascade的关系就会被自己动的插入或是删除。便是为了能正确的cascade,unsaved-value是个很重要的属性。Hibernate通过这个属性来判断一个对象应该save还是update,如果这个对象的id...2009-11-01 21:32:01 · 65 阅读 · 0 评论 -
Criteria条件查询
Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。简单来讲,Criteria Query可以看作是传统SQL的对象化表示,如:Criteria criteria = session.createCriteria(User.class);criteria.add(Expression.eq("name","Erica");criteria.add(Expression....原创 2010-08-17 14:05:30 · 515 阅读 · 0 评论 -
JPA注解
@Column 默认情况下,JPA 持续性提供程序假设每个实体的持久字段存储在其名称与持久字段的名称相匹配的数据库表列中。 使用 @Column 批注: 将持久字段与其他名称关联(如果默认列名难于处理、与事先存在的数据模型不兼容或作为数据库中的列名无效) 将持久字段与辅助表中的列关联(请参阅 @SecondaryTable ) 微调数据库中列的特征 表 ...原创 2010-08-17 13:59:24 · 104 阅读 · 0 评论 -
Hibernate点点
实体状态 自由状态……实体对象在内存中自由存在,与数据库中的记录没有任何关联,处理自由状态的实例可以通过Session的save方法转换成持久状态。 持久状态……实体对象处于由Hibernate框架所管理的状态,持久状态的对象其变更将由Hibernate固化到数据库中,持久对象对应数据库中的一条记录。 游离状态……处于持久状态的实例,其关联...原创 2010-08-17 13:49:31 · 119 阅读 · 0 评论 -
抓取策略优化
抓取策略是指Hibernate如何检索关联对象,抓取策略可以通过映射设置,也可以在HQL和规则查询中重写。Hibernate支持以下几种抓取策略: join……使用外连接抓取。 Select……使用一个单独的查询语句抓取关联数据。 Subselect…… Batch……select抓取的优化,通过指定一个...原创 2010-08-17 13:48:30 · 136 阅读 · 0 评论 -
Hibernate缓存性能监听
Statistics接口提供三种类别的统计信息: Sesssion使用相关的,比如打开的会话数目,检索的JDBC连接数目。 实体,集合,查询和缓存相关的全局信息。 特定实体,集合,查询和缓存区域的详细信息。 具体细节可以参考Statistics, EntityStatistics, Collectio...原创 2010-08-17 13:44:48 · 102 阅读 · 0 评论 -
Hibernate JPA 的索引的使用
在Hibernate中Model中一个对象关联的对象相当多是必须使用索引,如果多个表关联更要使用关联,否则效率相等的低下,例如在项目中酒店的查询中大约有几千条数据但是查询就需要5分钟以上,实在是一个严重的效率瓶颈,采用的方案,在集合等地方添加相应的索引,加快搜索效率。 如下: 针对重复几率比较大的使用索引: /** * 开始日期(YYYY-MM-DD)priDate(旧)...原创 2010-08-17 13:43:31 · 711 阅读 · 0 评论 -
条件查询(Criteria Queries)
15.1. 创建一个Criteria 实例 org.hibernate.Criteria接口表示特定持久类的一个查询。Session是 Criteria实例的工厂。 Criteria crit = sess.createCriteria(Cat.class); crit.setMaxResults(50); List cats = crit.list(); ...原创 2010-08-17 13:38:56 · 131 阅读 · 0 评论 -
HQL要点
Hibernate拥有一种功能非常强大的查询语言,这种语言被有意得与SQL非常相似,便于开发人员掌握。但不要被HQL的语法表面所迷惑,HQL完全是面向对象的,可以用来过程多态、继承、关联等关系。 1大小写敏感(Case Sensitivity) HQL中的使用的Java的类名和属性名是大小写敏感的,其他的关键字都是大小写不敏感的。所以“SeLeCT”等同与“sELEct”,也等同于“SE...原创 2010-08-17 13:36:03 · 92 阅读 · 0 评论 -
Hibernate的注解many-to-one
項目中一個實例: 最近使用annotation做hibernate映射,有两张表乘客(Passanger)表 和订单(VacationOrder )表,乘客表和订单表是ManyToOne,业务只需要从订单表出发设置不同乘客,根据乘客查看预订的订单,采用双向关联,ManyToOne 和Many-To-One VacationOrder 對象中关于乘客的注解: Vacation...原创 2010-08-17 13:31:13 · 101 阅读 · 0 评论 -
Hibernate关联查询中with的经典使用
在项目采用Hibernate关联,采用关联使用比较简单,在关联时添加条件,减轻迪卡儿集的从而提高效率! 项目写HQL时使用的其中一个实例如下: StringBuilder sb = new StringBuilder(); sb.append(" from Hotel h, RoomType r left join r.roomTypeSpecialPrices as rp ...原创 2010-08-17 11:36:31 · 330 阅读 · 0 评论 -
HQL中lements的使用
在传递索引和元素给集合时(elements and indices函数)和传递子查询的结果集时,SQL函数any, some, all, exists, in都是被支持的: 可编写如下Hql 语句完成查询: HQL代码 select Blog from Blog, Book where Blog.author in elements...原创 2010-08-17 11:28:32 · 201 阅读 · 0 评论 -
Hibernate查询之后设置缓存
在项目中一些关于酒店的环境的条件的统计中,数据量比较大,在页面显示但是不影响客户的各种信息时,采用此种方案可以减轻服务器的压力,提供效率: Query q = session.createQuery(hql); applyCondition(q, params); q.setCacheable(true); q.setCacheRegion("hotelSearch")...原创 2010-08-17 11:22:47 · 125 阅读 · 0 评论 -
hibernate 不寻常的查询
/** * 前台查询酒店的级别,设备,类型 * * @param propertyName * @return */ @SuppressWarnings("unchecked") public Map<String, Integer> findByHotelInfo(final String propertyName) { final Str...原创 2010-08-17 11:20:55 · 100 阅读 · 0 评论 -
hibernate中注解和hbm共存时的加载规律
项目中使用Spring2.5+hibernate3.3+Struts2.0 注解,但是在项目的工作流中使用到工作流的配置文件hbm文件。所以研究一下注解和hbm的的加载顺序。 首先注解使用的AnnotationSessionFactoryBean 的bean: public class AnnotationSessionFactoryBean extends LocalSession...原创 2010-08-17 11:09:24 · 114 阅读 · 0 评论 -
利用ThreadLocal绑定Hibernate的session
如果不用spring,单用hibernate如何来解决延迟加载的问题. 无论是立即加载还是延迟加载必须要连接数据库的,而在java中连接数据库是依赖java.sql.Connection,在hibernate中session就是Connection的一层高级封装,一个session对应了一个Connection,要实现延迟加载必须有session才行.而且要进行延迟加载还必须保证是同一个se...原创 2010-08-16 11:47:26 · 106 阅读 · 0 评论 -
Hibernate之"unsaved-value"详解释
当你显式的使用session.save()或者session.update()操作一个对象的时候,实际上是用不到unsaved-value的。某些情况下(父子表关联保存),当你在程序中并没有显式的使用save或者update一个持久对象,那么Hibernate需要判断被操作的对象究竟是一个已经持久化过的持久对象,是一个尚未被持久化过的内存临时对象。例如: java代码: Ses...2009-11-01 21:33:38 · 198 阅读 · 0 评论 -
Hibernate Annotation
在spring中需要进行特别的声明配置Annotation风格的SessionFactory.具体见SimpleSSHF的ApplicationContext.xml @Entity将一个Javabean类声明为一个实体的数据库表映射类...也可以成为持久化POJO类,最好实现序列化 @Id注释为主键类的定义,定义在对应属性的get方法之上 @Table是类一级的注解,定义在@Entity下,为实...原创 2010-08-17 14:06:37 · 82 阅读 · 0 评论