JPQL的一些总结和看法

JPQL:Java持久化查询语言。是一种与数据库无关的,基于实体(entity-based)的查询语言。JPQL在语法上与SQL相似:“ select from [where] [group by] [having] [order by] ”。但两者之间有一个重要的区别,JPQL操作的是“抽象持久化模型(abstract persistence schema)”,而不是数据库定义的物理模型。使用SQL,你可以直接查询数据库中表的字段;使用JPQL,你可以查找实体的属性。

注意:除实体名称和实体字段外,JPQL查询不区分大小写。

例如,有下面这样一个查询语句: SELECT u.username FROM User u

在这个查询语句中,u.username一个表达式的结果是一个String类型。这个查询会返回一个String对象的list。list中的各个对象代表系统中一个不同的用户名。

联结(连接/关联)

       JPQL仍然支持和SQL中类似的关联语法:

       left out join/left join

       left out join/left join等,都是允许符合条件的右边表达式中的Entities 为空(需要显式使用left join/left outer join 的情况会比较少。)

       inner join

       inner join 要求右边的表达式必须返回Entities。

       left join fetch/inner join fetch

       在默认的查询中,Entity中的集合属性默认不会被关联,集合属性默认是延迟加载( lazy-load )。那么,left fetch/left out fetch/inner join fetch提供了一种灵活的查询加载方式来提高查询的性能(集合属性被关联,同Entity同时加载而不是在需要时再加载,这样就转换为SQL语句时为一条SQL语句,而不是加载Entity时一条语句,加载集合属性时有N(等于Entity数量)条语句,避免了N+1问题,提高了查询性能)。

从一关联到多的查询和从多关联到一的查询来简单说说关联查询。 实体Team:球队。 实体Player:球员。 球队和球员是一对多的关系。 

http://wenku.baidu.com/link?url=EQ2cExXecXTDmRASb6m6jSp4DDAHjlSFYTtkgQK-fl2aRvW0tAuSb0-x397QHDmbTWs12e17rPSugu6YpbHXiybT5RR3effbEoKYAjagfbi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值