在DAOImpl类中编写各种方法时如何避免重复代码?

时间:2016-05-21 20:14:21

标签: hibernate rest model-view-controller

我有疑虑。需要澄清: 1)我在EmployeeDAOImpl类中实现了getEmployee和addEmployee方法,这两种方法都有Hibernate API的通用代码,如SessionFactory,Session等。如何防止这种情况以避免重复代码?

2)我的Resource类可以直接访问DAO层的数据,然后为什么要去服务层呢?

3)我在某处读到,在MVC架构中,一层应仅从其紧邻的下一层访问数据,例如服务层应仅从DAO层访问数据。这个陈述是真的吗? 有人也可以给我一个合适的链接或材料,提供所有MVC相关术语的清晰概念,如Business对象,Value对象,DTO等因为我经常得到这些疑问。

2 个答案:

答案 0 :(得分:0)

  1. 使用Wrapper类,因此只使用了1个重复的代码行:session = HibernateUtil.getSession(); 或者使用Spring初始化session / entityManager

  2. 如果您有单独的DAO层,则可以更轻松地将数据存储切换为任何内容:文件备份,键值数据库或关系数据库;

  3. simple spring app - why use service layer?

    DAO and Service layers (JPA/Hibernate + Spring)

答案 1 :(得分:0)

1.您可以将重复的代码抽象为名为" BaseDAO"

的bean

2.然后UserDAO扩展BaseDAO,例如:

protected abstract BaseDAO<T>{

    //get Session

    public Integer save(T t) ...
}


public UserDAO extends BaseDAO<User>{

     public void saveUser(User u){
           save(u);
     }
}