通用Hibernate DAO

如果有人可以提供帮助,请欣赏它。

我的计划是有两层。 一个是服务层,第二个是DAO层。 服务层将执行业务逻辑,DAO层将执行CRUD数据操作。

有两个名为Person和Order的hibernate实体。 这两个实体实现了BaseEntity接口。 想在DAO层中编写一个generics方法,以便它可以占用任何实体。

有关如何编写该genericsdao方法的任何建议吗?

@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 getOrderItems() { return orderItems; } public void setOrderItems(Set orderItems) { this.orderItems = orderItems; } } 

您能否建议如何创建一个generics方法,该方法应该将Person或Order实体作为输入参数?

这是一篇关于编写可重用的通用DAO类的文章 。

有Person和Order子类一个基础DAO,有方法在DAO中。

这是你编写genericsfetch方法的方法:

  public  T get(long id,Class 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; } 

忽略exception处理。 使用您自己的exception处理技术。