通用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处理技术。
- 如何使用Hibernate / JPA2实现Spring Security用户/权限?
- 集合中元素的hibernate标准
- 当我只访问外键id时,如何阻止Hibernate获取已连接的实体?
- Java Hibernate与SQL Server 2012无法正常工作?
- Spring 4 + Hibernate 5 = org.springframework.orm.jpa.EntityManagerHolder无法强制转换为org.springframework.orm.hibernate5.SessionHolder
- Spring Data Repository不会删除ManyToOne Entity
- Crudrepository /从其他表到实体的单个字段作为只读
- 如果找不到实体,则为空对象
- JPA SQL Server没有JDBC类型的Dialect映射:-9