18

在我的开发项目中,我使用 JPA (hibernate) 作为 OR Mapping 技术进行数据库访问。当我将数据库表直接映射到实体以实现复杂关系时,有时会遇到性能问题和技术难题。

我发现一种解决方法是将数据库视图映射到 JPA 实体。这使编码更容易,有时性能更好。您认为以这种方式使用 JPA 是一种反模式吗?

4

2 回答 2

12

这不是解决方法,也不是反模式。有一个关于将 JPA 实体映射到 SQL 视图的主题。它为您提供了是否使用此方法的足够信息。

就个人而言,我更喜欢 Java 类,因此我使用Result Classes Constructor Expression。它根据结果查询返回实例化和填充提供的类的对象。

您可以查看这两种方法,它们可以提高性能并降低结构复杂性。

于 2012-07-04T12:38:21.633 回答
0

我对 JMelnik 友好提供的链接有疑问:我在 Javadb 中将复杂查询创建为视图,然后尝试将视图拖到表单上,但 Netbeans 不允许我删除它(因此我无法自动创建绑定表.我在那个链接上看到我不是唯一一个经历过这个的人。

对我有用的解决方案:

在 db 中为您的复杂 SQL 创建视图

实体包中的“从数据库创建实体”,并将其命名为xxxViewName

  • 通过在其上方添加“@Id”确保实体中的字段被标识为键。

在 Navigator 中创建 java 持久性查询:

  • 确保表单设计可见,然后在 Navigator 中右键单击“其他组件”,然后选择 Add From Palette > Java Persistence > Query

  • 配置查询:不要使用通常的“show xxxViewName”(因为 JPA 不支持显示而失败)。使用 Select w from xxxViewName w"

在 Navigator 中创建 java 持久化结果列表:

  • 类似于创建查询。确保将 List 的类型参数设置为

将您的 JTable 绑定到列表。

于 2017-01-30T16:44:20.847 回答