近期项目在使用jpa 一开始对这个很抵触,但是既然用了就还是硬着头皮使用了.今天又恰巧看了这方面的书,记录一下学习笔记!
在jpa 中经常用到的就是 对象关系的映射!因为这是直接以操作对象来操作数据库,而不是我们写sql 语句,因此对象关系的梳理就比较是重点了!
注意:所有的关系都是说的是当前对象对于这个属性这个角度来说的,比如:
@ManyToOne
有这么两个类
@Entity
public class User{
//jpa 中需要空参的构造函数 因为Java 默认有一个空参的 如果你确认不会写到 有参数构造 ,那么这个可以省略,不过还是建议直接加上的
private User user(){}
//此处省略其他的属性....
@ManyToOne //多个用户对应一个部门 所以使用这个注解
@JoinColumn(name="department_id")//数据库中在user表中 有部门的id
private Depatrment department;
//忽略 get set 方法}
//接下来写部门
public class Department{
//构造函数...
//此处省略其他的属性....
@OneToMany(mappedBy="department") 这里one 的一端必须加上mappedBy 以声明many端的对象的department属性是
提供了对应的关系映射
private Set<User> users=new hashSet<User>(); jpa 要求使用set 而不是list
//忽略 get set 方法
}
jap 查询遵循规则 findBy , getBy,queryBy开头 spring Data JPA 才能自动转化为JPQL
查询结果排序的话 方法名包含OrderBy+属性+ASC(DESC)
可以通过top first 来限定查询结果
对于查询的结果 不能映射到任意的pojo 或 者map 对象上 对于这种非实体返回结果 只能使用object[]来处理 比如count(*)返回的可能是BigInteger 或者BigDecimal
可以使用Pageable 当做入参 来进行分页