HQL链接查询和注解

HQL链接查询和注解数据库

一:HQL链接查询

  1. 各类链接查询: 内链接:inner join或join From Entity inner [inner] join [fetch] Entity.property;

左外链接:left outer join或left join From Entity left[outer] join [fetch] Entity.property;缓存

迫切左外链接:left outer join fetch或left join fetch 右外链接:right outer join或right join 迫切链接:inner join fetch或join fetch 注:迫切链接要使用对象链接,否则的话会出错。性能优化

等值链接:
From  Dept d,Emp p where d=e.dept;
  1. 聚合函数 select count(),sum(sal),min(sal),max(sal),avg(sal)from Emp; List<Object[]>list=query.list(); for (Object[] o:list) { System.out.println("总:"+o[0]+"和:"+o[1]+"最小值:"+o[2]+"最大值:"+o[3]+"平均数:"+o[4]); }//省略其它代码 按职位统计员工个数: select e.job,count() from Emp e group by e.job

统计每一个部门下的员工个数而且大于2的显示输出: select e.job,count() from Emp e group by e.job having count()>2; 3. 子查询关键字: all:子查询返回全部记录。 any:子查询返回的任意的一条记录。 some:与“any”意思相同 in:与“=any意思相同” exists:子查询语句至少返回一条记录。 4. 操做集合函数或属性。 size()或size:获取集合中的元素数目。 minIndex()或minIndex:对于创建索引的集合,获取最小的索引 maxIndex()或maxIndex:对于创建索引的集合,获取最大的索引。 minElement()或minElement:对于包含基本类型的元素集合,得到集合中取值最小的元素。 maxElement()或maxElement: 对于包含基本类型的元素集合,得到集合中取值最大的元素。 Elements();获取集合中的全部元素。app

二:查询性能优化

  1. hibernate查询优化策略: (1.)使用迫切左外链接,或迫切链接查询策略,配置二级缓存和查询等方式,减小select语句数目,下降访问数据库的频率。 (2.)使用延迟加载等方式避免加载多余不须要访问的数据。 (3.)使用Query接口的iterate()方法减小select语句的字段,下降访问数据库的数据量,并结合缓存等机制减小数据库的访问次数,提升查询效率。 2.HQL优化: (1.)避免使用or操做的不当。 (2.)避免使用not。 (3.)避免使用like的特殊形式。 (4.)避免使用having子句。 (5.)避免使用distinct。 (6.)索引在如下状况下失效,使用时注意。 对字段使用函数,该字段的索引将不起做用。如:substring(aa,1,2)=’xxx’ 对字段进行计算,该字段的索引将不起做用。如:price+10。

三:注解

  1. 使用hibernate注解的步骤以下: (1.)使用注解配置持久化类及对象的关联关系。 (2.)在hibernate配置文件(hibernate.cfg.xml)中声明持久化类,语法以下: <mapping class=”持久化类完整限定名”>
  2. 配置持久化类的经常使用注解: @Entity:将一个类声明为持久化类。 @Table:为持久化映射指定表。 @Id:声明了持久化类的表示属性。 @GeneratedValue:定义表示属性的生成策略。 @UniqueConstraint:定义表的惟一约束。 @Lob:表示属性将被持久化为BLOD或者CLOD类型。 @Column:将属性映射到数据库字段。 @Transient:指定能够忽略的属性,不用持久化到数据库。
相关文章
相关标签/搜索