代码之家  ›  专栏  ›  技术社区  ›  Karel Bílek

为什么JPA中的实体类不能是final?

  •  24
  • Karel Bílek  · 技术社区  · 16 年前

    为什么JPA中的实体类不能是final或具有final方法?引用自 here -

    实体类必须遵循以下要求:

    ...

    不能声明类 final 最终的

    原因是什么?JPA是实体类的子类化和方法的重新定义吗?

    2 回复  |  直到 16 年前
        1
  •  31
  •   Kara Praveen Prasad    12 年前

    根据定义,实体是一个可以持久化到数据库中的类,因此在最终成为数据库中记录的内容的上下文中,拥有final字段是没有意义的。没有final类和final方法的要求与JPA实现实际处理实体类的持久实例的方式有关。

    实现通常在运行时对类进行子类化和/或向类动态添加字节码,以便检测实体对象何时发生更改。如果您的类被声明为final,那么这是不可能的。

    article 这提供了更多关于ORM如何在幕后工作的信息,这可能会帮助您更好地理解JPA实体的其他需求。

        2
  •  0
  •   Muhammad Soliman    8 年前

    因为持久性提供者是对象的代理。这些代理正在创建实体/类的运行时子类,还可能添加一些标志来标识数据中是否有更改。所以,这就是为什么你的课程不应该是最终的有能力改变它。