【问题标题】:Design considerations: Java database applications (JPA) [closed]设计注意事项:Java 数据库应用程序 (JPA) [关闭]
【发布时间】:2012-11-29 18:00:35
【问题描述】:

我即将用 Java 编写一个基于 JPA 的 Web 应用程序,因为这是我第一次认真使用一般的持久类和数据库,我想知道我是否必须做出具体的考虑 f.i.在设计整体类结构时,例如将其构建为尽可能平坦,以保持持久类的数量较少且数据库结构简单。我真的不希望得到长篇大论的解释,但希望简要概述一般注意事项,这对于没有数据库应用程序经验的人来说似乎并不那么明显。 提前致谢。

【问题讨论】:

  • 这样的开放式问题不适合 SO
  • @hd1 - 如果你有这种感觉,你真的应该投票结束。
  • 拥有一个回顾 ORM 最佳实践的社区 wiki 会很棒。也许这个问题已经存在了,但我找不到。

标签: java database jakarta-ee jpa


【解决方案1】:

一般注意事项可能看起来并不那么明显 对数据库应用程序缺乏经验的人

使用 ORM 表面上简单且透明,但有许多小问题需要考虑:

  • 对象身份。了解关系数据库使用行和键的根本不匹配,而在对象世界中,每个对象都有一个标识。有various ways 可以正确或错误地处理身份。

  • 映射数据。首先了解如何映射简单的数据类型(字符串、数字、URL 等)。查看并了解处理转换问题(URL 或字符串、字节或 blob)的技术。

  • 映射关系。了解如何映射关系(单向和双向),如何通过适当的封装维护不变量,失去父对象的“孤儿”对象的问题,以及如何以不同的方式将多个关系映射到同一个类,如何加载急切地或懒惰地与“N+1”选择问题的链接。

  • 映射继承。了解对象、类和表之间的不匹配。了解使用 ORM 可以支持多远的继承。

  • 使用会话。理解使用会话:当一个对象被附加或分离时,对延迟加载有什么影响,如何处理乐观锁定,事务和会话之间的联系。

一般来说,有大量关于 JPA 和 ORM 的文献。上面的列表正是我想到的。

理想情况下,ORM 不应对您的设计施加限制。但是,我的建议是保持平坦和简单。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      没有必要让您的数据库更简单,因为您使用的是 JPA。

      JPA 的主要优点之一是它可以为您管理关系。

      如果为了使用它而不得不简化数据库,那将是一个非常糟糕的 API!

      (尤其是因为它通常用于 JavaEE 环境)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 2023-03-14
        相关资源
        最近更新 更多