热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->jsp 
站内搜索:
前进:从EJB 2.1到EJB 3.0(3)
作者:谢启东 来源:天极开发 整理日期:2006-7-2


  例2:ejb-jar.xml部署描述符

<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC
"-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
 <enterprise-beans>
  <entity>
   <ejb-name>BookCatalog</ejb-name>
   <local-home>BookCatalogLocalHome</local-home>
   <local>BookCatalogLocal</local>
   <ejb-class>BookCatalogBean</ejb-class>
   <persistence-type>Container</persistence-type>
   <prim-key-class>String</prim-key-class>
   <reentrant>False</reentrant>
   <cmp-version>2.x</cmp-version>
   <abstract-schema-name>BookCatalog</abstract-schema-name>
   <cmp-field>
    <field-name>title</field-name>
   </cmp-field>
   <cmp-field>
    <field-name>author</field-name>
   </cmp-field>
   <cmp-field>
    <field-name>publisher</field-name>
   </cmp-field>
   <query>
    <query-method>
     <method-name>findByTitle</method-name>
     <method-params>
      <method-param>java.lang.String</method-param>
     </method-params>
    </query-method>
    <ejb-ql>
     <![CDATA[SELECT DISTINCT OBJECT(obj) FROM BookCatalog obj WHERE obj.title = ?1 ]]>
    </ejb-ql>
   </query>
  </entity>
</enterprise-beans>
<relationships>
 <ejb-relation>
  <ejb-relation-name>BookCatalog-Editions</ejb-relation-name>
  <ejb-relationship-role>
   <ejb-relationship-role-name>
    BookCatalog-Has-Editions
   </ejb-relationship-role-name>
   <multiplicity>One</multiplicity>
   <relationship-role-source>
    <ejb-name>BookCatalog</ejb-name>
   </relationship-role-source>
   <cmr-field>
    <cmr-field-name>editions</cmr-field-name>
    <cmr-field-type>java.util.Collection</cmr-field-type>
   </cmr-field>
  </ejb-relationship-role>
  <ejb-relationship-role>
   <ejb-relationship-role-name>
    Editions-Belong-To-BookCatalog
   </ejb-relationship-role-name>
   <multiplicity>One</multiplicity>
   <cascade-delete />
   <relationship-role-source>
    <ejb-name>Edition</ejb-name>
   </relationship-role-source>
  </ejb-relationship-role>
 </ejb-relation>
</relationships>
</ejb-jar>

  相比之下,对应于EJB 2.1实体bean类的EJB 3.0实体Bean类是一个纯旧式Java对象(POJO),并且非常简单(请看例3)。此bean类的EJB 3.0版本使用了元数据注释@Entity,而EJB 2.1部署描述符ejb-jar.xml文件中用元素符指定的查找方法,在EJB 3.0 Bean类中,则使用@NamedQueries和@NamedQuery注释来指定;ejb-jar.xml文件中用元素符指定的CMR关系,在EJB 3.0 Bean类中,则用元数据注释来指定;另外,主要的关键字段通过@Id注释来指定。表1中列出了一些EJB 3.0的元数据注释。

  例3:BookCatalogBean.java

import javax.persistence.Entity;
import javax.persistence.NamedQuery;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.OneToMany;

@Entity
@NamedQuery(name="findByTitle", queryString =
"SELECT DISTINCT OBJECT(obj) FROM BookCatalog obj WHERE obj.title = ?1")

public class BookCatalogBean
{
 public BookCatalogBean(){}
 public BookCatalogBean(String title)
 {
  this.title=title;
 }

 private String title;
 private String author;
 private String publisher;

 @Id
 @Column(name="title", primaryKey="true")

 public String getTitle(){return title;}
 public void setTitle(){this.title=title;}
 public void setAuthor(String author){this.author=author;}
 public String getAuthor(){return author;}
 public void setPublisher(String publisher)
 {
  this.publisher=publisher;
 }
 public String getPublisher(){return publisher;}
 private java.util.Collection<Edition>editions;

 @OneToMany
 public void setEditions(java.util.Collection editions)
 {
  this.editions=editions;
 }

 public java.util.Collection getEditions(){return editions;}
}

[1]  [2]  [3]  [4]  
相关文章