Web 应用程序:用于数据层的 DAO 和 JPA

Posted

技术标签:

【中文标题】Web 应用程序:用于数据层的 DAO 和 JPA【英文标题】:Web Application: DAO and JPA for data layer 【发布时间】:2011-12-13 14:02:40 【问题描述】:

我正在尝试使用OWASP specification for hashing 进行安全登录以防止 SQLInjection,但对于我的应用程序的其他部分,我正在考虑使用 JPA,但我不知道使用混合,还是我应该坚持对所有数据层使用 DAO 并保持一致?

我也想知道同时使用 JPA 和 DAO 是否会导致运行时出现兼容性问题?

谢谢

【问题讨论】:

【参考方案1】:

这是关于在使用 JPA 时使用 DAO 层是否有意义的讨论的答案。

How should EntityManager be used in a nicely decoupled service layer and data access layer?

我认为这同样适用于任何数据访问逻辑(例如登录)

【讨论】:

所以我应该只使用 DAO 进行身份验证,其余部分使用 JPA,因为我使用自定义查询更容易。 如上面的帖子中提到的,如果您的数据访问逻辑只涉及调用 EntityManager 的 crud 方法,我认为最好不包含 DAO,在这种情况下它只是EntityManager 不添加任何值。 好的,我现在明白了,你说得对,我应该只坚持 JPA。感谢您的澄清。【参考方案2】:

最好的方法是您可以使用 DAO 来实现安全登录哈希目的。您的应用程序的其余部分可以使用 JPA。在我的项目中,我使用的是 Hibernate 而不是 JPA。

【讨论】:

好的,这不会导致任何兼容性问题吗?【参考方案3】:

您的 DAO 应该是基于接口的,这意味着您可以通过插入新的实现来随意修改实现。客户端应该只知道 DAO 接口。

如果这是正确的,那么我不明白你的问题。你的 DAO 就是接口; JPA 将是您在众多实现中选择的一种。不是非此即彼;它是接口/实现。

【讨论】:

好吧,你说得清楚一些,“更清楚”,因为我打算使用接口来公开服务,但我认为 DAO 是实现而不是模式。

以上是关于Web 应用程序:用于数据层的 DAO 和 JPA的主要内容,如果未能解决你的问题,请参考以下文章

存储库注释不适用于 Spring 数据 JPA

Java 新手 - 啥是 JPA 和 DAO? [关闭]

Spring Data JPA:概述

Spring Data JPA:概述

Spring Data JPA:概述

java web spring jpa 在以接口为dao的方法里使用原生sql,联合查找没有对应实体,用啥来接收? 求大神