熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

JPA和hibernate對刪除操作的不同[1]

2013-11-23 20:46:07  來源: Java開源技術 

  在hibernate裡面調用session的delete方法以後無論這個被刪除的對象有沒有被人外鍵引用到都可以被刪除並且此時的外鍵設為null也就是說他會自動幫我們去查看他被誰引用到了然後把引用全部去掉後再把自己刪掉而在JPA裡面如果調用EntityManagerremove方法時傳進去的對象有被外鍵引用到則會失敗因為JPA裡面的實現就是直接執行delete語句也不管他有沒有被外鍵引用此時當然會出錯了

  測試時候使用的兩個類分別如下

  舉的例子是部門和員工的關系一個部門可以有多個員工然後把部門刪掉的時候員工的部門屬性就為null了不過按照嚴謹來說還是JPA的嚴謹一些這樣可以防止誤操作呵呵

  部門的實體對象

/*
 * To change this template choose Tools | Templates
 * and open the template in the editor
 */
package comhadesleejpaentity;

import javaioSerializable;
import javautilHashSet;
import javautilSet;
import javaxpersistenceEntity;
import javaxpersistenceGeneratedValue;
import javaxpersistenceGenerationType;
import javaxpersistenceId;
import javaxpersistenceOneToMany;
import javaxpersistenceTable;

/**
 *
 * @author hadeslee
 */
@Entity
@Table(name = JPADepartment)
public class Department implements Serializable {

    private static final long serialVersionUID = L;
    @Id
    @GeneratedValue(strategy = GenerationTypeAUTO)
    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) {
        thisdeptName = deptName;
    }

    public String getDescription() {
        return description;
    }

[]  []  []  []  []  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29049.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.