JPQL

1 jpql

1.1 jpql是jpa提供的一种查询语言,类似sql。
1.2 jpql和sql的区别
	(1)jpql操作对象和对象里面的属性,sql操作数据库,区分大小写
	(2)在jpql里面 不能出现 * ,不能出现表名 
	(3)jpql和sql关键字相同且不区分大小写
1.3 jpql的语法
	select o from Employee o  join o.department d
	给类名加别名o ,操作属性的时候用o.属性名
1.4链接查询
	外连接 :分为左外连接(左边表数据全部必须包含 .和 右边表的交集部分)和 右外连接(反之) left join right join
	内连接 :取交集部分的数据 join
1.5 聚集函数 --和sql一样
	count记录数
	max最大值
	min最小值
	avg平均值
	sum总数
1.6 子查询 --和sql一样
	子查询:嵌套查询
		把一个查询的结果 作为另外一个查询的条件或者表来使用
1.7 jpql集合
	使用size 判断有没有值(select o from Project o where o.employees.size = 0)
1.8分页
	query.setFirstResult(5).setMaxResults(5);
	setFirstResult 起始条数
	setMaxResults 每页条数

2 SQL的支持

使用createNativeQuery方法(Query query = entityManager.createNativeQuery(sql);)

3 事务并发

3.1事务(transaction):一组逻辑操作 要么都成功,要么都失败 (同生共死)
3.2 事务的特性
	原子性:事务已经是最小单元,不能再去分割
	一致性:数据一致性
	隔离性:体现2个事务以上的操作,事务之间应该具备隔离性
	持久性:事务提交(commit)的时候,数据就永久的存在下来
3.3 事务并发:多个事务(2个或者2个以上的事务)同时操作同一个数据
	事务并发会带来以下问题
		第一类丢失更新,第二类丢失更新, 脏读,虚读(幻读),不可重复读
 3.4数据库隔离机制
 	READ UNCOMMITTED(读未提交) 幻想读(虚读)、不可重复读和脏读都允许。
 	READ COMMITTED 允许幻想读,不可重复读,不允许脏读
 	REPEATABLE READ 允许幻想读,不允许 不可重复读和脏读
 	SERIALIZABLE 幻想读、不可重复读和脏读都不允许--性能肯定会变低
3.5 第一类和第二类丢失更新
	锁机制
		悲观锁:需要等待锁释放,才能操作数据,性能不高
		乐观锁:不用等待,底层需要版本号控制  第一个修改之后,版本号会变更,第二人对这个产品就无法操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值