博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate中的Entity类未必final
阅读量:4179 次
发布时间:2019-05-26

本文共 456 字,大约阅读时间需要 1 分钟。

Hibernate中定义的Entity类(无论是JPA实现,还是Hibernate Native实现),都建议Entity类是final的,但这不是必须的。

事实上,如果不考虑利用Entity类的延迟加载特性,那么Entity类无需是final的。

Hibernate中Entity类的延迟加载是通过运行时动态代理实现的。而Java动态代理实现中,要求被代理类(就是这里的Entity类)不能是final的,其中的实例变量也不能是final的。这是因为Java动态代理是通过创建Entity类的子类对象并强制转换为Entity类对象,实现被代理对象的。而final的Entity类是无法被继承的,因而也就没有子类了。

Hibernate的动态代理实现还要求Entity类必须实现接口,Entity类为实例变量定义getter/setter方法。

不过,从Hibernate 5开始,Hibernate利用CGLIB和ASM支持了更底层的对Java字节码的增强技术,这使得Entity类的延迟加载有了新的实现方式。

转载地址:http://inlai.baihongyu.com/

你可能感兴趣的文章
速算,以后留着教孩子
查看>>
让你变成ps高手
查看>>
在可执行jar中动态载入第三方jar(转贴)
查看>>
考虑体积重量的01背包问题—基于遗传算法
查看>>
K-means 聚类算法
查看>>
带约束的K-means聚类算法
查看>>
约束优化方法
查看>>
VRPTW建模与求解—基于粒子群算法
查看>>
数据结构与算法(1):大O表示法
查看>>
Java学习知识树
查看>>
文科生,你为啥学编程?
查看>>
使用Eclipse时出现Unhandled event loop exception错误的有效解决办法
查看>>
JAVA之路:第一章 JAVA入门初体验
查看>>
菜鸟文科生的java之路:运算符
查看>>
菜鸟文科生的java之路:变量和常量
查看>>
菜鸟文科生的java之路:流程控制语句
查看>>
北海糖:Java初阶练习题
查看>>
不知道什么是数组?看这里就好了
查看>>
文科生北海唐的Java之路:方法(慕课)
查看>>
自学Java的轨迹线路
查看>>