首页 新闻 会员 周边 捐助

hibernate 不要用final修饰实体 (将无法生成代理对象进行优化)?

0
悬赏园豆:10 [已解决问题] 解决于 2018-04-03 22:13

就是说实体对象不能用final修饰吗?

现有个实体类

public final class User

{......}

那如果无法产生代理对象进行优化,能保存成功吗?

session.save(new User());

Jinke2017的主页 Jinke2017 | 菜鸟二级 | 园豆:237
提问于:2018-01-23 09:13

难道就没有人能回答了吗 ,,纠结好久

Jinke2017 6年前
< >
分享
最佳答案
0

Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。

  • final类不能被继承,没有子类,final类中的方法默认是final的。 

  • final方法不能被子类的方法覆盖,但可以被继承。 

  • final成员变量表示常量,只能被赋值一次,赋值后值不再改变。 

  • final不能用于修饰构造方法。 

收获园豆:10
DanBrown | 小虾三级 |园豆:1321 | 2018-01-23 09:35

我明白,我问的是关于框架的问题。

Jinke2017 | 园豆:237 (菜鸟二级) | 2018-01-23 19:15

@Jinke2017: 实体对象可以用final修饰,只能赋值一次,可以保存成功;

DanBrown | 园豆:1321 (小虾三级) | 2018-01-24 08:05

@DanBrown: 首先,这里我代码里用final修饰的是类,不是实体对象。其次,hibernate框架的代理模式是用继承的方式实现的,这里User 类被final 修饰无法继承,那么就无法生成User的代理对象,那为什么还可以保存成功?如果依旧能保存成功,那么代理对象的功能是什么?

Jinke2017 | 园豆:237 (菜鸟二级) | 2018-01-24 10:11

@Jinke2017: 不你是new了一个user么就给他实例化了;你试一下应该可以保存数据的;代理对象不了解;

DanBrown | 园豆:1321 (小虾三级) | 2018-01-24 10:15
其他回答(1)
0

确实无法产生代理对象优化,但是可以保存成功。

Jinke2017 | 园豆:237 (菜鸟二级) | 2018-04-03 22:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册