【问题标题】:JPA Entitities vs EntityManager with simple db query带有简单数据库查询的 JPA 实体 vs EntityManager
【发布时间】:2014-04-17 01:54:59
【问题描述】:

我对 Java 比较陌生,但对数据库有相当多的经验。过去一周,我一直在阅读有关在 JAVA 中访问数据库以获取 Web 服务的各种方法,并且为此阅读了几个 Netbeans 教程。

我需要创建一个简单的 Web 服务,从数据库中查询和检索相当少的数据。我需要根据唯一键查找单个值并将其返回,然后将单个记录插入到子表中。我正在尝试决定是通过一些简单的查询还是使用 JPA 实体来完成此操作。

在其他语言中,我本来只是编写代码来建立数据库连接并自己处理数据,但我看到 Java 能够使用实体来表示不同的表并完成所有“繁重的工作”使用 JPA。但是,对于一些简单的 Web 服务查询来说,这似乎是一大笔开销。我很好奇是否有人能告诉我使用 JPA 和实体与仅使用带有简单 SQL 语句的 EntityManager 来提取数据的开销是多少?您发现使用其中一种与另一种相比有什么好处吗?过去,当我看到开发平台构建额外的对象时,通常会增加复杂性和性能层次。

提前谢谢你。

【问题讨论】:

    标签: java jpa netbeans


    【解决方案1】:

    我认为使用 JPA 与使用带有 SQL 查询的 EntityManager 相比,开销并不是什么大问题。

    事实上,你会增加更多的开销来尝试使用 EntityManager 来执行 SQL 查询。在 JPA 的领域中,这些查询被命名为“Native Queries”。

    使用 JPA 与 Query 方法的一个直接好处是 ORM,它允许您避免创建任何类型的查询并在大的插入语句中传递命名参数并自动从 resultSet 创建对象,您将不再担心循环ResultSet 并提取列以创建您的 bean。

    实际上,如果你想执行查询,你需要创建相同的 Java Bean 来管理返回的对象,所以添加一些注释不会有什么大不了的。

    对于您想要创建的项目类型,只需花费更多时间配置您的应用程序会更容易,但是当您调用 em.persist(entity) 而不是 INSERT INTO table values (?,?,?,?,?) 时,您会喜欢它,以及其他持久性操作.

    在 JPA 中将其视为一种解决方案,使对象关系映射更容易、非侵入性持久层、基于 POJO。

    最后,JPA 的模型简单优雅,功能强大且灵活,当你想配置数据库模型时可以画满但不是你的情况。

    【讨论】:

    • Koitoer。谢谢您的意见。对此,我真的非常感激。我将继续沿着 JPA 的道路前进,看看会发生什么。再次感谢您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    • 2017-08-16
    相关资源
    最近更新 更多