脏数据更新:
作用:持久化对象,一旦修改,事务提交的时候也会自动修改
1、没有执行meger,也能完成修改
2、加了meger,内容没有改变,方法也没有执行
执行流程:
第一步:拿到entityManager,开启事务
第二步:通过entityManager拿到一个对象,那么现在这个对象就是持久化的对象
这个对象会放到一级缓存里面,JPA会为当前这个对象准备一个快照(把这个对象进行了备份)
第三步:提交事务
它会把快照 与 你现在这个对象的数据进行对比
如果相同,就不需要修改,也不会发送SQL(性能就高了)
当不相同的时候,JPA就会认为现在这个数据是脏数据
脏数据它就会在事务提交的时候,把它进行数据库的同步(发送update SQL语句)
单向多对一
我们可以通过一个员工知道它属于那个部门,而不需要知道一个部门里 有哪些员工,这就是所谓的单向的。
可以通过保存员工的数据的同时达到保存部门信息的效果,但是不能通过保存部门信息而保存员工数据,这也是单向的。
多对一映射原理:在多的一端加入一个外键指向一的一端,它维护的关系多指向一。
一的一方,不需要维护关系,所以和普通的配置一样既可以了。
多的一方,需要维护双方关系,所以里面配置有一的一方的引用。
创建两个类,一个员工,一个部门,多个员工指向部门,然后在员工类加上外键,指向部门,从而产生关联关系,也属于从属关系。
再添加数据的时候,一定要先添加员工,在添加部门,这样效率更加快,如果先添加部门,在添加员工,从而会产生多条SQL语句,是先查询了再增加,推荐使用先多后一