为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle:HQL连接查询和注解

标签:
Oracle

一: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;

  1. 子查询关键字:
    all:子查询返回所有记录。
    any:子查询返回的任意的一条记录。
    some:与“any”意思相同
    in:与“=any意思相同”
    exists:子查询语句至少返回一条记录。
  2. 操作集合函数或属性。
    size()或size:获取集合中的元素数目。
    minIndex()或minIndex:对于建立索引的集合,获取最小的索引
    maxIndex()或maxIndex:对于建立索引的集合,获取最大的索引。
    minElement()或minElement:对于包含基本类型的元素集合,获得集合中取值最小的元素。
    maxElement()或maxElement: 对于包含基本类型的元素集合,获得集合中取值最大的元素。
    Elements();获取集合中的所有元素。
    二:查询性能优化
  3. 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。
    三:注解
  4. 使用hibernate注解的步骤如下:
    (1.)使用注解配置持久化类及对象的关联关系。
    (2.)在hibernate配置文件(hibernate.cfg.xml)中声明持久化类,语法如下:
    <mapping class=”持久化类完整限定名”>
  5. 配置持久化类的常用注解:
    @Entity:将一个类声明为持久化类。
    @Table:为持久化映射指定表。
    @Id:声明了持久化类的表示属性。
    @GeneratedValue:定义表示属性的生成策略。
    @UniqueConstraint:定义表的唯一约束。
    @Lob:表示属性将被持久化为BLOD或者CLOD类型。
    @Column:将属性映射到数据库字段。
    @Transient:指定可以忽略的属性,不用持久化到数据库。
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
40
获赞与收藏
344

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消