簡體   English   中英

通用DAO Hibernate Java

[英]Generic DAO Hibernate Java

我試圖從最基本的角度理解通用DAO。 我已經在DAO中創建了基本的CRUD方法:

public interface ObjectDAO <T>{

boolean insert(T t);

boolean update(int id, T t);



boolean delete(int id);

T retrieveByID(int id);

List<T> retrieveAll();



}

但是,我不知道如何獲取傳遞給ObjectDAOImpl的類的ID。 這是實現:

public class ImplObjectDAO<T> implements ObjectDAO<T>{

Session session;

public ImplObjectDAO() {

    session= SessionSingleton.getInstance();
}

@Override
public boolean insert(T t){

        try{

        session.beginTransaction();

        session.save(t);

        session.getTransaction().commit();

        }
        catch(HibernateException he){

            he.printStackTrace();
            return false;
    }   
    return true;
}


@Override
public boolean update(int id, T t) {

    try{

        session.beginTransaction();




        session.update(t);

        session.getTransaction().commit();

        return true;
        }
        catch(HibernateException he){
            he.printStackTrace();
            return false;
        }
        catch(NullPointerException np){
            np.printStackTrace();
            return false;
        }
}


public boolean delete(int id){



    return true;

}

@Override
public <T> retrieveByID(int id){

    return T;
}

@Override
public List<T> retrieveAll(){
    return new ArrayList<T>(objectSet);

}


}

因此,如果我傳遞我創建的類似於雇員類的對象。 插入方法工作正常。 但是,一旦將其插入數據庫中,我如何獲取實體的ID,以便可以執行諸如更新,刪除或檢索之類的操作? 我不理解。 任何幫助表示贊賞。

這是實體類:

@Entity
@Table(name="Employee_Records")
public class Employee {

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private int eID;

@Column(name="EMP_NAME", length=20)
private String empName;

@Column(name="EMPLOYEE_AGE")
private int empAge;

public Employee(){
    eID= 0;
    empName="temp";
    empAge=0;
}

public Employee(int eID, String empName, int empAge) {
    this.eID = eID;
    this.empName = empName;
    this.empAge = empAge;
}

public int geteID() {
    return eID;
}

public void seteID(int eID) {
    this.eID = eID;
}

public String getEmpName() {
    return empName;
}

public void setEmpName(String empName) {
    this.empName = empName;
}

public int getEmpAge() {
    return empAge;
}

public void setEmpAge(int empAge) {
    this.empAge = empAge;
}



@Override
public String toString() {
    return "Employee ID=" + eID + ", Employee Name=" + empName + ", Employee    Age="
            + empAge;
}
}

好吧,如果要檢索剛插入的對象的ID。 實際上,您可以獲取剛剛調用的save方法的返回值。

因此,在示例代碼中,您可以返回對象的ID,而不是在save對象時返回true。

您可以在此處查看示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM