首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate的优化抓取跟高速缓存(未完)

2012-09-10 
Hibernate的优化抓取和高速缓存(未完)优化抓取和高速缓存?1.对象获取方法:??导航对象图,从一个已经加载的

Hibernate的优化抓取和高速缓存(未完)

优化抓取和高速缓存

?

1.对象获取方法:?

?导航对象图,从一个已经加载的对象开始,通过如User.getAddress().getCity()等属性访问方法访问被关联的对象。

?通过标识符获取,当一个对象的唯一标识符值已知时,这是最方便的方法

?HQL(Hibernate Query Language, ?Hibernate查询语言),它是一种完全面向对象的查询语言。Java QL(Java Persistence query language, JPA持久化查询语言)是HQL的一个标准子集。

Query q = session.createQuery(“from User as u where u.firstname = :first”);

q.setString(“fname”,”John”);

List result = q.list(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

HQL常用于对象获取,而不是更新、插入或者删除数据,对象状态同步是持久化管理器的工作,而不是开发人员的工作。HQL除了查询更有一个高级的特性,例如:

1.对按引用相关或者处于集合中的被关联对象的属性,应用限制能力(用查询语言导航对象图)

2.只获取一个或者多个实体的属性的能力,没有加载实体本身到持久化上下文的系统开销。有时这被称作报告查询,更准确的称呼是投影。

3.对查询结果进行排序的能力。

4.对查询结果进行分页的能力。

5.与group by、having和聚集函数(如sum、min和max/min)联合使用。

6.当每一行获取多个对象时使用外部联结。

7.调用标准的和用户定义的SQL函数的能力。

8.子查询(嵌套查询)。

?Hibernate Criteria接口,它提供了一种类型安全和面向对象的方式来查询,而不需要进行字符串操作。

1.按条件查询. Hibernate的条件查询(Query By Criteria, QBC)API允许查询在运行时通过criteria对象的操作进行创建。

Criteria criteria = session.createCriteria(User.class);

Criteria.add(Restrictions.like(“firstname”, “John”);

List result = criteria.list();

2.按示例查询,作为Criteria工具的一部分,Hibernate支持按示例查询(Query By Example, QBE).查询思想是,应用程序通过某些属性设置,提供被查询类的实例。查询结果返回带有匹配属性值的所有持久化实例。

Criteria criteria = session.createCriteria(User.class);

User exampleUser = new User();

exampleUser.setFirstname(“john”);

criteria.add(Example.create(exampleUser));

criteria.add(Restricitions.isNotNull(“homeAddress.city”));

List result = criteria.list();

?原生的SQL查询,包括存储过程的调用(在这里Hibernate仍然把JDBC的结果集映射到持久化对象图中)。


热点排行