drx*_*drx 0 java persistence entity final
来自 另一个线程
根据定义,实体是一个可以持久化到数据库的类,因此在最终将成为数据库中的记录的上下文中,拥有最终字段是没有意义的。
有人可以详细说明为什么拥有最终字段没有意义吗?
小智 5
通常,持久性提供程序使用某些库(如 CGLIB 或 javassist)创建对象代理。这些代理正在创建实体的运行时子类。这就是为什么它们不应该是最终的。
\n\n详细说明:
\n\n您可以将 Hibernate Entity 类设为 Final,但这不是一个好的做法。由于Hibernate使用代理模式来提高性能,因此,在惰性关联的情况下,通过将实体设为final,Hibernate将不再能够使用代理,因为Java不允许扩展final类,从而限制了您的性能改进选项。不过,如果您的持久类是接口的实现,并且声明了实体类中定义的所有公共方法,则可以避免这种惩罚。
\n\n代理是通过在运行时对对象进行子类化(例如 Student 实体类)动态创建的。子类重写父类的所有方法,当访问任何方法时,代理从数据库加载真实对象并调用该对象的实际方法。如果我们将实体类设置为最终类,那么该实体类就不能被子类化,因为最终类不能被继承。
\n| 归档时间: |
|
| 查看次数: |
6859 次 |
| 最近记录: |