在我的开发项目中,我使用 JPA (hibernate) 作为 OR Mapping 技术进行数据库访问。当我将数据库表直接映射到实体以实现复杂关系时,有时会遇到性能问题和技术难题。
我发现一种解决方法是将数据库视图映射到 JPA 实体。这使编码更容易,有时性能更好。您认为以这种方式使用 JPA 是一种反模式吗?
在我的开发项目中,我使用 JPA (hibernate) 作为 OR Mapping 技术进行数据库访问。当我将数据库表直接映射到实体以实现复杂关系时,有时会遇到性能问题和技术难题。
我发现一种解决方法是将数据库视图映射到 JPA 实体。这使编码更容易,有时性能更好。您认为以这种方式使用 JPA 是一种反模式吗?
这不是解决方法,也不是反模式。有一个关于将 JPA 实体映射到 SQL 视图的主题。它为您提供了是否使用此方法的足够信息。
就个人而言,我更喜欢 Java 类,因此我使用Result Classes Constructor Expression。它根据结果查询返回实例化和填充提供的类的对象。
您可以查看这两种方法,它们可以提高性能并降低结构复杂性。
我对 JMelnik 友好提供的链接有疑问:我在 Javadb 中将复杂查询创建为视图,然后尝试将视图拖到表单上,但 Netbeans 不允许我删除它(因此我无法自动创建绑定表.我在那个链接上看到我不是唯一一个经历过这个的人。
对我有用的解决方案:
在 db 中为您的复杂 SQL 创建视图
实体包中的“从数据库创建实体”,并将其命名为xxxViewName
在 Navigator 中创建 java 持久性查询:
确保表单设计可见,然后在 Navigator 中右键单击“其他组件”,然后选择 Add From Palette > Java Persistence > Query
配置查询:不要使用通常的“show xxxViewName”(因为 JPA 不支持显示而失败)。使用 Select w from xxxViewName w"
在 Navigator 中创建 java 持久化结果列表:
将您的 JTable 绑定到列表。