我有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;
}
}
答案 0 :(得分:0)
API方法Session.save(Object)将输入作为对象,因此如果您尝试在session.save(obj)
类中调用DAOHelper
,则没有问题,因此DAOHelper中的Object没有问题。 / p>
可是:
idInput = (Long) session.save(obj);
您正在将返回类型转换为Long
,因此如果实体对象的标识符类型不是Long
类型,您将面临异常。
根据您的代码,您似乎将session
变量声明为实例变量。由于session
不是线程安全的,因此您将面临多线程环境中的问题。