对于Entity Bean.同Session Bean一样,在home中定义create()方法,以对应的remote接口(定义商业方法)作为返回。这些都对应在ejb-jar.xml文件都有指定的描述。必须按指定的描述来设置返回。对于Entity Bean,用doclet来生成ejb-jar文件中,要注意对应local接口的描述,然后在localHome中写出对应的create的返回接口类。
对于BMP而言,
1.对于用XDoclet来生成ejb-jar.xml文件中对主健,要关注一下,通常会生成一个主健类,这个可以根据选择来使用。当然可以按传统的方法来定义。例:<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.Integer</prim-key-class>
<reentrant>False</reentrant>
<primkey-field>MagzineNumber</primkey-field> //这个一般在自己的定义中是必须的,注意对应到程序和数据库中。
2.在多次create方法的使用时,不要紧跟.remove,会导致commited不能再连接请求。
对于CMP而言:
1.通过XDoclet来生成CMP的相关文件,通常指生成基本的描述文档。对于当前版本的XDoclet和weblogic8.1而言,有些是需要更改的。如下:
2) 在weblogic-ejb-jar.xml中生成:
<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>7.0</type-version>
</persistence-use>
改为:
<persistence-use>
<type-identifier>WebLogic_CMP_RDBMS</type-identifier>
<type-version>6.0</type-version>
</persistence-use>
3)在weblogic-ejb-jar.xml文件生成:
<ejb-name>MagazineInfo</ejb-name>
<data-source-name></data-source-name> //有待填入DataSource
<table-name>MazagineInfoBean</table-name>//这是根椐bean名来生成的
改为:
<ejb-name>MagazineInfo</ejb-name>
<data-source-name>DLInformationDBJNDI</data-source-name> //datasource的JNDI
<table-name>MagazineKeyInfo</table-name> //数据库中的表名
2.在ejb-jar.xml中增加<cmp-field><field-name>resourseType</field-name></cmp-field>来描述,要注意<file-name>中的内容必须是小写字母开头的。在weblogic-cmp-rdbms.xml中的
<field-map>
<cmp-field>resourseType</cmp-field> //必须与在ejb-jar.xml的对应的描述一样
<dbms-column>ResourseType</dbms-column> //必须与数据库中的对应字段一样
</field-map>
Entity Bean的使用经验(转)
1、大量数据的时候不要采用entity本身的findAll方法,因为该方法返回的是大量的entity bean的pk,会降低查询的效率,通常用stateless session bean返回能将效率提高1-3个数量级
2、没有中间过程的商务逻辑最好使用stateless session bean,比如一个逻辑函数
3、entity bean本身提供的主要是单条纪录的更新,插入,查询(findPK)
4、不要将大量的数据和操作放在statefull session bean中
5、如果你需要返回大量的数据集的时候,最好采用Collection接口方式返回,其中的对象最好和entity bean是一致的
6、entity bean的属性最好是继承了返回类型的bean,这样在调整数据库映射的时候能比较方便,而且保持一致
7、在ejb1.1规范中,如果用到了BMP,那么一定要注意Transaction的自我控制
8、每次通过looup得到的datasource必须要close你得到的connnection
,否则很快会出资源耗尽的exception
9、框架是最重要的,实现是重要的,请注意这个最基本的原则