【转载+整理】EJB(五) Entity Bean

@cmtobby  http://blog.csdn.net/cmtobby/article/details/1906144

一、什么是 Entity Bean

Entity Bean提供了一个关系数据库的面向对象的抽象,它能同时从面向对象技术和面向过程技术中获益。

既然Entity Bean和Session Bean都是Enterprise Bean,那么它们必然具备一定的相同点:Entity Bean也要有一个Home Interface、Bean Interface和Bean Class,如下图所示:

    Session Bean调用Entity Bean的Home Interface和Bean Interface来创建、查找和删除Entity Bean,严格来讲其它客户端也可以直接调用这些接口,只是这并不是一个很好的做法。

Home Interface

    Entity Bean的Home Interface可以用来创建一个新的Entity Bean、删除一个Entity Bean以及查找一个已经存在的Entity Bean。调用Home Interface的create方法将会创建一个新的Entity Bean实例,这个方法类似于一般Java类中的构造器;当调用Home Interface的remove方法时,会删掉指定的Entity Bean实例;当调用Home Interface的find方法时,会寻找合适的Entity Bean实例并返回它们,Entity Bean至少要有一个叫做findByPrimaryKey的find方法。同Session Bean一样,Entity Bean的Home Interface也必须要继承EJBHome接口。

Bean Interface:

    同Session Bean相似,Entity BeanBean Interface也是用来暴露一个bean的方法,只不过它的方法大部分都是Entity Bean中域的set和get方法。同Session Bean一样,Entity Bean的Bean Interface也必须要继承EJBObject接口。

Bean Class:

    Entity BeanBean Class必须要集成EntityBean接口,它包含了在Bean Interface中指定的setter和getter方法以及包含了业务逻辑的方法,除此之外,它还必须实现那些由EJB容器调用的声明周期方法如ejbCreate等等。


二、容器管理持久化(Container-Managed Persistence,CMP):

    Entity Bean都与后台一个持久化的数据存储相关,这个数据存储通常是关系数据库,Entity Bean的一个特性就是能够使这个持久化过程自动化,这个特征就叫做容器管理持久化(CMP)。因此,当我们调用Home Interface的create方法时,不仅仅创建了一个新的Entity Bean,同时还在它所对应的数据库表中新增了一行记录,整个过程是由容器为我们管理的,包括在什么时候插入这一行记录;调用find方法时,会在相应的数据库表中查找合适的记录,每一行记录对应一个Entity Bean的实例。当使用CMP的时候,数据库模式直接反映了Entity Bean的设计,这和Hibernate里面非常相似,通常一个表对应一个实体。

除了CMP外,还有一个策略是BMP(Bean-Managed Persistence),这要求我们自己去管理所有的持久化过程。通常在如下情况下才需要用到BMP:

1.基于一个已经存在的数据库构建一个EJB应用,如果Entity Bean的设计不能与已有的数据库模式相匹配,此时需要用到BMP

2.不存在数据库,Entity Bean用于对一个外部系统进行包装

3.EJB服务器不支持CMP

一个Entity Bean要求它的一个或多个域能够唯一的识别它,这些个域就叫做主键,就像Hibernate中每个持久化类的ID属性一样,主键的主要作用就是用于查找一个特定的Entity Bean,它可以是任何一个序列化的对象,如String或者Integer。Entity Bean还一个特征就是EQL(EJB Query Language),如同Hibernate中的HQL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值