java - 具有简单数据库查询的 JPA 实体与 EntityManager

标签 java jpa netbeans

我是 Java 的新手,但对数据库有相当多的经验。过去一周,我一直在阅读有关在 JAVA 中访问数据库以获取 Web 服务的各种方法,为此我阅读了一些 Netbeans 教程。

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

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

提前谢谢你。

最佳答案

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

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

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

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

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

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

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

关于java - 具有简单数据库查询的 JPA 实体与 EntityManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359861/

相关文章:

java - 为什么在paint或paintComponent方法中语句被执行多次?

java - 自定义类加载失败,出现 java.lang.IllegalAccessError : Class ref in pre-verified class resolved to unexpected implementation

java - GWT 将点击处理程序添加到面板和元素

java - 在 Spring Boot 中获取 EntityManager 的句柄

database - 如何将 derby 数据库连接到 jsp 项目

java - 为多个条目附加 StringReader

jpa - JPA @Entity 注解的确切含义是什么?

java - 您如何在 Java 中使用 Google App Engine 数据存储中的列表属性?

javascript - 为什么 Netbeans 导航器 Pane 不使用特定文件名填充 javascript 文件?

java - 为什么我的代码可以在某些网站上运行,但不能在 NetBeans 中运行?