EJB 入门
Bean-Managed Persistence(BMP)
本章讲述内容
- Bean-Managed 和 Container-Managed persistence 的区别
- 如何实现 Bean-managed persistence 的实体 Bean
|
- 容器管理 Bean 的生命周期--何时创建、载入、存储和删除
- 开发人员处理其机制--如何创建、载入、存储和删除
- BMP = [业务逻辑] + [存储逻辑]
|
- 为了存储 CMP 现阶段所不能处理的复杂的 Bean
- 包含如下数据的实体 Bean:
- 内嵌 Java 对象
- 对象的集合
- 对其它 Bean 的引用
- ...
- CMP 所不支持的数据源
|
BMP 将您紧紧地绑定到某个特定的存储机制上--可能将您限制于一个特定的平台!
|
|
- 在 Home 接口的 Create 方法在 Bean 实例中有对应的 ejbCreate 方法--ejbCreate 方法返回一个主键对象
- 可以有任意数目的 create 方法
|
|
ejbStore() 方法完成工作--entityContext 包含主键
| |
|
|
- 在进行载入前,entityContext 将被设置--entityContext 包含主键
- 使用主键的值来查找和载入 Bean
public void ejbLoad() throws RemoteException {
try {
ObjectInputStream in
= new ObjectInputStream(new FileInputStream("client." + getId()));
setFirstName((String)in.readObject());
setLastName((String)in.readObject());
setPhoneNumber((String)in.readObject());
in.close();
} catch (ClassNotFoundException e) {
// Shouldn't happen -- We're dealing with Strings here.
} catch (IOException e) {
throw new RemoteException("An IO error occurred", e);
}
}
|
|
|
|
|
|
- 对每个在 Home 接口中声明的 find 方法必需有一个对应的 ejbFind 方法
- 单个查找--返回的是找到对象的主键
- 多个查找--返回的是匹配对象的主键的枚举
- 容器将载入 Bean--一个 Bean 从池中取出,赋以主键(通过 entityContext)然后被调用载入方法
|
| |
|
|
|
|
|
|
|
|
- 有一个 Bean 实例被用来查找出其它实例--Bean 必需被从池中取出来进行查找工作
- Bean 实例必需自己将自己载入--可能开销会很大
- 使用 JDBC:
- 一个调用用来取出所有您所关心的 Bean 的 id
- 对每个 id 又是一个调用来取出一行数据
- 总共需要 n+1 个对数据库的访问来载入 n 个 Bean!
- Bean-Managed Persistence 允许 Bean 开发人员指定如何实现数据的存储
- ejbLoad, ejbStore 和 ejbRemove 方法必需先从 entityContext 中获得主键
- BMP create 方法必需返回主键
- 对应每个在 Home 接口中的 find* 方法必需有一个对应的 ejbFind* 方法--开发人员必需至少提供 ejbFindByPrimaryKey
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130492/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/374079/viewspace-130492/

1242

被折叠的 条评论
为什么被折叠?



