jpql

1 jpql

1.1 jpql和sql有区别

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

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

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

1.2 jpql的语法

jpql一般查询
1
​select o.name,o from 类 o where o.属性名

1.3 jpql里面join

jpql:
select o from Employee o join o.department d

1.4jpql的数据计算

jpql里面不能使用没有* 所以没有count(*)用的是size(最终换成sql的count查询)

select o from Department o where o.employees.size>0

.

1.5jpql的分页查询

String jpql = “select o from Employee o”;
Query query = entityManager.createQuery(jpql);
// 从那里开始取数据,索引从0开始
int firstResult = (currentPage - 1) * pageSize;
// 取多少条
int maxResults = pageSize;
query.setFirstResult(firstResult).setMaxResults(maxResults);

2. 事务4个特性ACID回顾

原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行
一致性(consistent),事务在完成时,必须使所有的数据都保持一致状态。
隔离性(insulation),由事务并发所作的修改必须与任何其它并发事务所作的修改隔离。
持久性(Duration),事务完成之后,它对于系统的影响是永久性的。

2.1事务并发

通常为了获得更好的运行性能,各种数据库都允许多个事务同时运行,这就是事务并发。

当并发的事务访问或修改数据库中相同的数据(同一行同一列)时,通常需要采取必要的隔离机制。隔离机制的实现必须使用锁

JPA只能处理第一、二类丢失更新,其他3种必须由数据库自己处理

如果使用了悲观锁(加了一个行锁),如果事务没有被释放,就会造成其他事务处于等待
不用

乐观锁的配置
@Version
private Integer version

3.如何优化JPA

1.使用双向一对多关联,不使用单向一对多–效率高一点
2.灵活使用单向多对一关联 --多方来维护效率高一点
3.不用一对一,用多对一取代(不要使用共享主键一对一,使用唯一外键一对一)
4.配置对象二级缓存(配置 Cacheable),查询缓存(jpql查询),
没有查询条件才使用查询缓存(如果有条件命中是很低)
5.组合关系集合使用list(顺序,重复)–第二个项目 单据模块,多对多集合使用set
6.表字段要少,表关联不要怕多,有二级缓存撑腰,设计表尽量达到第三范式(外键)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值