我即将用 Java 编写一个基于 JPA 的 Web 应用程序,因为这是我第一次认真地使用持久类和数据库,我想了解在设计整体类结构时是否需要特别考虑 fi它尽可能平坦,以保持持久类的数量低且数据库结构简单。我真的不希望得到长篇大论的解释,但想简要概述一下一般注意事项,这对于没有数据库应用程序经验的人来说似乎并不那么明显。提前致谢。
3 回答
对于不熟悉数据库应用程序的人来说,一般注意事项可能看起来并不那么明显
使用 ORM 表面上简单且透明,但有许多小问题需要考虑:
对象身份。了解关系数据库使用行和键的根本不匹配,而在对象世界中,每个对象都有一个标识。有多种方法可以正确或错误地处理身份。
映射数据。首先了解如何映射简单数据类型(字符串、数字、URL 等)。查看并理解处理转换问题(URL 或字符串、字节或 blob)的技术。
映射关系。了解如何映射关系(单向和双向),如何通过适当的封装维护不变量,失去父对象的“孤儿”对象的问题,以及如何以不同的方式将多个关系映射到同一个类,如何加载急切地或懒惰地与“N+1”选择问题的链接。
映射继承。了解对象、类和表之间的不匹配。了解使用 ORM 可以支持多远的继承。
使用会话。理解使用会话:当一个对象被附加或分离时,对延迟加载有什么影响,如何处理乐观锁定,事务和会话之间的联系。
一般来说,有大量关于 JPA 和 ORM 的文献。上面的列表正是我想到的。
理想情况下,ORM 不应对您的设计施加约束。但是,我的建议是保持平坦和简单。
因为您使用的是 JPA,所以无需让您的数据库更简单。
JPA 的主要好处之一是它可以为您管理关系。
如果您不得不为了使用它而简化数据库,那将是一个非常糟糕的 API!
(特别是因为它通常用于 JavaEE 环境)