我的计划是有两层。一个是服务层,第二个是DAO层。服务层将执行业务逻辑,DAO层将执行CRUD数据操作。
有两个名为Person和Order的休眠实体。这两个实体实现了BaseEntity接口。想在DAO层中编写一个泛型方法,以便它可以占用任何实体。
有关如何编写该泛型dao方法的任何建议吗?
@Entity
@Table(name = "PERSON")
public class Person implements BaseEntity, java.io.Serializable {
private int id;
private String firstName;
public Person() {
}
@Id
@Column(name = "PERSON_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name = "FIRST_NAME", nullable = false, length = 50)
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
@Entity
@Table(name = "PURCHASE_ORDER")
public class Order implements BaseEntity java.io.Serializable {
private int id;
public Order() {
}
@Id
@Column(name = "ORDER_ID")
@GeneratedValue(strategy = GenerationType.AUTO)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Transient
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
public Set<OrderItem> getOrderItems() {
return orderItems;
}
public void setOrderItems(Set<OrderItem> orderItems) {
this.orderItems = orderItems;
}
}
您能否建议如何创建一个泛型方法,该方法应该将Person或Order实体作为输入参数?
答案 0 :(得分:6)
答案 1 :(得分:0)
让Person和Order子类为基础DAO,有方法在DAO中。
答案 2 :(得分:0)
这是编写泛型fetch方法的方法:
public <T> T get(long id,Class<T> clazz) throws Exception{
Session session = null;
T t=null;
try
{
session=getSessionFactory().openSession();
t= (T) session.get(clazz.getCanonicalName(),id);
}
catch(Exception e)
{
throw e;
}
finally{
if(session!=null) session.close();
}
return t;
}
忽略异常处理。使用您自己的异常处理技术。