5

我是 JPA 的新手,我从中学到了很多东西。我最近部署了一个使用 EclipseLink 作为我的 JPA 提供程序的应用程序,它运行良好。

现在需要向其中一个映射表添加一个额外的列。这个额外的字段用于报告目的,不会影响我的应用程序,所以我真的不想触及运行良好的东西。我当然会在适当的时候更新我的应用程序以将此字段包含在我的映射中,但我现在不想这样做。

此列添加将由 DBA 在外部直接添加到表中。这个添加会破坏我的应用程序吗?

我相信这不应该发生,因为映射字段没有变化,而且就 JPA 而言,没有任何变化。JPA 不会知道添加了什么,因此一切都应该正常工作而不会中断。

如果我错了,请纠正我。谢谢。

4

3 回答 3

9

你可以做到,它没有理由破坏,JPA 不会强制你将每一列映射到实体中的一个字段。除非新列是强制性的 ( NOT NULL) 并且没有默认值(例如在插入时)。

于 2012-07-19T14:18:58.327 回答
5

这个添加会破坏我的应用程序吗?

不,它不会。

JPA 允许您仅映射您实际需要的表和字段。

于 2012-07-19T14:17:59.833 回答
4

What does an ORM such as JPA, Hibernate, or EclipseLink do under the hood ? It generates the SQL starting from your data model to let you interact with a database in a transparent way.

If you apply any modification to the database which do not require modification to the SQL you use to interact with it (you are not adding any constraints and non null columns), nothing will break. Your SQL queries will simply not use the added columns when writing/reading from the db.

If on the contrary you apply changes on the constraints, you can make your code not working anymore even without adding a column.

于 2012-07-19T14:27:56.690 回答