mybatis多表查询用对象接收 JPA和hibernate对删除操作的不同[1]
JPA和hibernate对删除操作的不同[1]
在hibernate里面调用session的delete方法以后 无论这个被删除的对象有没有被人外键引用到 都可以被删除 并且此时的外键设为null 也就是说他会自动帮我们去查看他被谁引用到了 然后把引用全部去掉后 再把自己删掉 而在JPA里面 如果调用EntityManager remove方法时 传进去的对象 有被外键引用到 则会失败 因为JPA里面的实现就是直接执行delete语句 也不管他有没有被外键引用 此时 当然会出错了
测试时候使用的两个类分别如下
举的例子是部门和员工的关系 一个部门可以有多个员工 然后把部门删掉的时候 员工的部门属性就为null了 不过 按照严谨来说 还是JPA的严谨一些 这样可以防止误操作 呵呵
部门的实体对象
![mybatis多表查询用对象接收 JPA和hibernate对删除操作的不同[1]](http://img.zhputi.com/uploads/1d87/1d876e7f1a44b8bc8e6b5f55903f9ac730588.jpg)
/* * To change this template choose Tools | Templates * and open the template in the editor */package hadeslee jpaentity;
import java io Serializable;import java util HashSet;import java util Set;import javax persistence Entity;import javax persistence GeneratedValue;import javax persistence GenerationType;import javax persistence Id;import javax persistence OneToMany;import javax persistence Table;
/** * * @author hadeslee */@Entity@Table(name = JPADepartment )public class Department implements Serializable {
private static final long serialVersionUID = L; @Id @GeneratedValue(strategy = GenerationType AUTO) private Long id; @OneToMany(mappedBy = department ) private Set<Person> persons = new HashSet<Person>(); private String deptName; private String description;
public String getDeptName() { return deptName; }
public void setDeptName(String deptName) { this deptName = deptName; }
public String getDescription() { return description; }
lishixinzhi/Article/program/Java/ky/201311/29049相关文章
- spring+atomikos+mytatis+jpa实现分布式事务管理实战篇
- JVM优化之逃逸分析与分配消除
- java如何根据对象属性排序 java中对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?
- jvm垃圾收集三个基本原则 Java垃圾收集算法与内存泄露
- 应用数据能不能删除 Oracle中如何快速的卸载和加载数据
- 知乎发起的咨询怎么删除 如何删除自己发在百度知道里的提问与回答
- 数据库级联 Java相关:应用数据库Hibernate对多表关联查询
- 二叉树查找算法java 数据结构 9.10 二叉查找树的删除算法演示(二)
- mybatis多表查询用对象接收 JPA和hibernate对删除操作的不同[3]
- mybatis多表查询用对象接收 hibernate关联关系-多对一
爱学记

微信收款码
支付宝收款码