java - 在 java spring hibernate 的 userDAO 类中写什么东西

标签 java hibernate spring

我有具有属性和 setter/getter 的域类用户

然后我有包含所有功能的 userService 类

添加用户 删除用户

public void register(User person) {
      logger.debug("Adding new Registration");
      Session session = sessionFactory.getCurrentSession();
      session.save(person);
     }

我正在使用 hibernate 。

我的系统运行良好。但我对 UserDAO 在我的案例中的位置感到困惑。我需要它还是我需要在里面写些什么

最佳答案

没有什么可以迫使您拥有 DAO 层。

UI <-> Service <-> DAO <-> persistence

session 层中的代码通常进入 DAO 层。 IE。小的(几乎是原子的)操作,例如存储、删除等。

服务层用于隔离在简单存储层中难以处理的业务逻辑。例如,如果您想一次对多个 Person 实例进行操作,或者在保存对象之前对一些非常具体的业务逻辑进行操作。 RDBM 的另一个常见用途是在服务层进行事务管理,将可能的多个 DAO 请求协调到事务中。

在许多简单的应用程序中,服务层有些毫无意义。它只是代理操作,就像你上面的那样,从 UI 到 DAO - 没有添加逻辑。在这些情况下,我个人不一定会创建 DAO 层,将存储保留在服务中,而是在它增长到不仅仅是一个简单的持久层的那一刻重构它。

另一个方面是单元测试。一个简单的 DAO 层可以很容易地被模拟掉,这是保持业务逻辑和持久性严格分离的论据。

关于java - 在 java spring hibernate 的 userDAO 类中写什么东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5374207/

相关文章:

java - 使用 Stream 还是 Loop 之间的决定

java - 如何从 Hibernate 配置获取数据源

java - 如何将 Hibernate 中的 BigInteger 映射到 DB2

spring - Webflux JWT 授权无法正常工作

java - Spring + EJB 3.1 CMT 与 BMT 事务

java - 方法错误包含 Vector java

java - @Transactional 和packagesToScan 是相互关联的吗?

java - 根据条件切换自动连线服务?

java - 在 Java 中的一个 println 语句中打印数组的所有元素

java - 尝试使用 hibernate 4 测试记录的存在