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

[复制链接]
查看11 | 回复9 | 2009-1-4 14:52:28 | 显示全部楼层 |阅读模式
为什么ejb3的实体类不能是final的???
google了一下,没看到任何解释的,谁能告知一声??
只看到说hibernate下什么proxy模式要求class不能使final
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
这个到没研究过
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
proxy如果针对类的话需要适用继承方式来做,所以不能是FINAL的!
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
谢谢地虎
但是ejb3中的EB不存在一定要使用proxy的问题呀?通常也只是通过一个dao调用entity而已
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
多亏看了这个帖子,要不我整个元旦都不会翻书了……
关于这个问题,为什么需要将entity变成final的呢?换句话说就是final是不可被继承的,那为什么一定要entity变成一个不可被继承的?
在EJB3里面,关于实体继承的部分确实用到了继承,也就是说在某些时候需要继承已有的entity。
举个例子,在数据结构中,肯定会存在某个主表和几个子表,就像表PERSON(主)、CUSTOMER(子,需要继承PERSON)和EMPLOYEE
(子,需要继承CUSTOMER)这样。在这种映射机构中,有一种为A table per subclass,即每个子类一张表。
看这个scheme(摘自Enterprise JavaBeans 3.0)
create table PERSON
(
id
integer primary key not null,
firstNamevarchar(255),
lastNamevarchar(255),
);
create table CUSTOMER
(
id
integer primary key not null,
street
varchar(255),
city
varchar(255),
state
varchar(255),
zip
varchar(255),
);
create table EMPLOYEE
(
EMP_PK
integer primary key not null,
employeeIdInteger,
);
那么对应这种策略,EJB3的处理方式是这样
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Person{
...
}
@Entity
public class Customer extends Person{
...
}
@Entity
@PrimaryKeyJoinColumn(name="EMP_PK")
public class Employee extends Customer{
...
}
于是,这几个entity很明显的需要被继承了,那么entity肯定也就不能被设计为final。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
谢谢sinkeler
你说的这个例子中的entity的确是不能final的,他们之间存在继承关系,但并不是所有情况下的entity都有继承关系,难道Sun在设计EJB3的时候就有“宁杀三千,不放一个”的想法?
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
你就不要太牛角尖了, 规定就是规定, public private protected, 你说怎么没第四个呢?
你follow就是了
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
谢谢justforregister,呵呵,其实不是牛角尖的问题,是我担心会不会有其他的原因,如果完全是王八的屁股的话,那也没什么好说的,遵守就是了
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
不会有什么其他原因的,限制越多问题就越多,EJB是业务组件,应用里面final的声明少的可怜,因为人家的精髓之一就是重用、复用,要是都限制成了final,就没意义了。
final在项目中也很少用到,除非是特定的参数维护等一些需要统一部署的类,其他只要是在完成业务逻辑,不太可能让你生命为final,说实在的,要不是知识点的约束,我都快忘了final这种东西了。
协议就是协议,遵守就行了,就像正负极那样,规定了这是正,那是负,以后就这么想问题就行了。
回复

使用道具 举报

千问 | 2009-1-4 14:52:28 | 显示全部楼层
嗯,的确如此,final设定entity的情况几乎是没有的;这个帖子可以结贴了。谢谢sinkeler
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行