【问题标题】:Generic DAO Hibernate Java通用 DAO 休眠 Java
【发布时间】:2015-09-21 02:08:49
【问题描述】:

我试图从最基本的层面理解通用 DAO。我已经在 DAO Here 中创建了基本的 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;
}
}

【问题讨论】:

  • 那个会话类来自休眠?如果是这样,我通常使用这种代码Session sess = getSession(); IdentifierLoadAccess byId = sess.byId(persistentClass); T entity = (T) byId.load(id); sess.update(entity); sess.delete(entity);

标签: java sql hibernate generics crud


【解决方案1】:

好吧,如果您想检索刚刚插入的对象的 id。你实际上可以得到你刚才调用的save方法的返回值。

因此,在示例代码中,当您save 对象时,您可以返回对象的 id,而不是返回 true。

您可以查看示例here

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2023-03-16
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 2011-11-11
    • 2018-01-14
    • 2013-11-10
    • 1970-01-01
    相关资源
    最近更新 更多