JPA4

1.JPQL

jpql:就是jpa提供的一种查询语言,类似sql。

最基本的JPQL的格式
只能写java的类名和属性名
SELECT o[o.property,o.property*] FROM Entity o

[WHERE conditions]

[GROUP BY conditions]

[HAVING conditions]

[ORDER BY o.property[ASC|DESC]]

JPQL本质是JPA通过antlr-2.7.7.jar翻译成sql并且封装执行的。

jpql和sql的区别:
(1)jpql操作对象和对象里面的属性 sql操作 表 和表里面的列 区分大小写

(2)在jpql里面 不能出现 * ,不能出现表名

(3) jpql和sql 他们关键字是相同 ,关键字不区分大小写

JPQL书写规则:

JPA的查询语言,类似于sql
1.里面不能出现表名,列名,只能出现java的类名,属性名,区分大小写
2.出现的sql关键字是一样的意思,不区分大小写
3.不能写select * 要写select 别名

2.集合的操作

sql里面没有size(最终换成sql的count查询)

2.1JOIN:
JPA中的JOIN和LEFT JOIN(使用SQL/JPQL对比)
sql:select * 表1 join 表2 on 条件
jpql:
1.不写on子句
2.模型 模型的别名 join 写前面模型别名.出来的对象属性
Employee e join e.department d

2.2 聚集(组)函数/GROUP/HAVING

count 求记录数 max 求最大值 sum 求和 min 求最小 avg 求平均

3.SQL的支持

createNativeQuery

4.事务并发

事务的四个特性:
1.原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行

2.一致性(consistent),事务在完成时,必须使所有的数据都保持一致状态。

3.隔离性(insulation),由事务并发所作的修改必须与任何其它并发事务所作的修改隔离。

4.持久性(Duration),事务完成之后,它对于系统的影响是永久性的。

5.数据库隔离机制

四种

READ UNCOMMITTED(读未提交) 幻想读(虚读)、不可重复读和脏读都允许。

READ COMMITTED 允许幻想读,不可重复读,不允许脏读

REPEATABLE READ 允许幻想读,不允许 不可重复读和脏读

SERIALIZABLE 幻想读、不可重复读和脏读都不允许–性能肯定会变低

6.JPA的使用规则

经验:

1.使用双向一对多关联,不使用单向一对多–效率高一点

2.灵活使用单向多对一关联 --多方来维护外键效率高一点

3.不用一对一,用多对一取代(不要使用共享主键一对一,使用唯一外键一对一)
4.配置对象二级缓存(配置 Cacheable),查询缓存(jpql查询),
没有查询条件才使用查询缓存(如果有条件命中是很低)
查询缓存:
同一个EntityManagerFactory 不同entityManager 发送jpql相同和条件值相同

5.组合关系集合使用list(顺序,重复)–第二个项目 单据模块,多对多集合使用set

6.设计表的时候,表字段要少,表关联不要怕多,有二级缓存撑腰,设计表尽量达到第三范式(外键)
数据库范式:数据库规则
1NF:设计的时候,尽量保证 表里面列不能存放多个值,列最小单元,不能分割 --体系列原子性
2NF:表里面每一行数据都应该有一个唯一能够区分的值,建议你都创建主键
3NF:表里面不应该存放另外一个表非主键的信息 --建议你一个外键

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值