如何使用Hibernate保存对象

时间:2014-09-17 13:54:48

标签: java hibernate annotations

我有3个课程,我使用DAOHelper。 但我的朋友说:“DAOHelper中的对象问题” 你能帮我解释一下吗?全部。 你能用其他方式建议我吗?

1.EMPLOYEE

@Entity
@Table(name = "EMPLOYEE")
public class Employee{
@Id
@GeneratedValue
@Column(name = "ID")
private long Id;

@Column(name="EMPNAME")
private String empName;

@Column(name="PHONE")
private String phone;
protected Employee(){}
// get and set method()
}

@Entity
@Table(name = "DEPARTMENT")
public class Department{
@Id
@GeneratedValue
@Column(name = "ID")
private long Id;

@Column(name="DEPNAME")
private String depName;

@Column(name="ADDRESS")
private String Address;
protected Department(){}
// get and set method()
}

3.客户

@Entity
@Table(name = "CUSTOMER")
public class Customer{
@Id
@GeneratedValue
@Column(name = "ID")
private long Id;

@Column(name="CUSNAME")
private String cusName;

@Column(name="ADDRESS")
private String Address;
protected Customer(){}
// get and set method()
}

我使用DAOHelper类。

public class DAOHelper{
public Long save(Object obj) {
    Long idInput = null;
    try {
        startOperation();
        idInput = (Long) session.save(obj);
        tx.commit();
    } catch (HibernateException e) {
        if (tx != null)
            tx.rollback();
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        session.close();
    }
    return idInput;
}
}

1 个答案:

答案 0 :(得分:0)

API方法Session.save(Object)将输入作为对象,因此如果您尝试在session.save(obj)类中调用DAOHelper,则没有问题,因此DAOHelper中的Object没有问题。 / p>

可是:

idInput = (Long) session.save(obj);

您正在将返回类型转换为Long,因此如果实体对象的标识符类型不是Long类型,您将面临异常。

根据您的代码,您似乎将session变量声明为实例变量。由于session不是线程安全的,因此您将面临多线程环境中的问题。