我发现 JPA 或类似的,不鼓励 DAO 模式。我不知道,但我有这种感觉,尤其是对于服务器管理的 JTA 管理器。
在使用 DAO 模式进行了充分的实践之后,我开始围绕该模式设计基于 JPA 的应用程序。但它不适合,IMO。我倾向于失去 JPA 的相当多的功能和所有功能。
好吧,假设您使用悲观锁定触发了一个查询,它从 DAO 方法返回了一个实体列表。返回后,事务结束并且锁定消失(服务器管理的 JTA 管理器的情况)。所以,没有意义,松散地说。不过,也有有效的案例。
另一个例子要简单得多。假设您触发查询以获取某个实体,该实体与其他实体具有延迟加载一对多关联。返回 DAO 方法后,事务结束。延迟加载将不再起作用,您只需获取null
或其他东西。为了解决这个问题,我们急切地手动加载它。我们做类似的事情a.getBList().size()
。
因此,IMO 最好不要专门创建 DAO,而是在您的业务 bean 中进行,这样您就可以利用这些有用的功能。或者 ORM API 可以被认为是一个 DAO/数据层本身,可以说。所以,我们不需要再做一个。
大家怎么看呢?
注意:无论如何,我并不是说 DAO 模式已经过时。确实,这取决于具体情况。