【问题标题】:Will adding a column externally to a table mapped by JPA break normal functioning?在 JPA 映射的表中添加外部列会破坏正常功能吗?
【发布时间】:2012-07-19 14:15:12
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java jpa eclipselink


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      不,不会。

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

      【讨论】:

        【解决方案3】:

        诸如 JPA、Hibernate 或 EclipseLink 之类的 ORM 在底层做了什么?它从您的数据模型开始生成 SQL,让您以透明的方式与数据库交互。

        如果您对数据库应用任何不需要修改用于与之交互的 SQL 的修改(您没有添加任何约束和非空列),则不会有任何问题。从数据库写入/读取时,您的 SQL 查询将根本不使用添加的列。

        如果相反,您对约束应用更改,即使不添加列,您也可以使您的代码不再工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-06-23
          • 1970-01-01
          • 1970-01-01
          • 2018-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多