【问题标题】:How to avoid duplicate code when writing various methods in DAOImpl class?在DAOImpl类中编写各种方法时如何避免重复代码?
【发布时间】:2016-09-18 22:47:47
【问题描述】:

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

2) 我的 Resource 类可以直接从 DAO 层访问数据,那为什么要选择服务层呢?

3) 我在某处读到,在 MVC 架构中,一层应该只从其紧邻的下一层访问数据,例如服务层应该只从 DAO 层访问数据。这个说法是真的吗? 谁能给我一个合适的链接或材料,提供所有 MVC 相关术语的清晰概念,如业务对象、价值对象、DTO 等,因为我经常遇到这些疑问。

【问题讨论】:

    标签: hibernate rest model-view-controller


    【解决方案1】:
    1. 使用 Wrapper 类,所以只使用了 1 个重复的代码行: session= HibernateUtil.getSession(); 或者使用 Spring 初始化 session/entityManager

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

    simple spring app - why use service layer?

    DAO and Service layers (JPA/Hibernate + Spring)

    【讨论】:

      【解决方案2】:

      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);
           }
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-02
        • 2019-04-01
        • 2020-11-23
        • 1970-01-01
        • 2011-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多