频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

前进:从EJB 2.1到EJB 3.0

来源:天极开发 作者: 出处:巧巧读书 2006-06-23 进入讨论组

  相比之下,对应于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:EJB 3.0常用元数据注释

注释 说明 注释元素
@Entity 注明一个实体bean类。  
@Table 注明实体bean表。如果未指定@Table,表名与EJB名相同。 name, schema
@Id 注明一个主要关键属性或字段。  
@Transient 注明一个非持久性属性或字段。  
@Column 为一个持久性实体bean属性注明一个映射栏。 Name、primaryKey、nullable、length。默认栏名为属性或字段名。
@NamedQueries 注明一组命名查询。  
@NamedQuery 注明一个命名查询或与查找方法相关的查询。 name, queryString
@OneToMany 注明一个一对多联系。 Cascade
@OneToOne 注明一个一对一联系。 Cascade
@ManyToMany 注明一个多对多联系。 Cascade
@ManyToOne 注明一个多对一联系。 Cascade

  EJB 2.1 bean类中的查找方法findByTitle(),在EJB 3.0中则使用相应的@namedQuery注释;EJB 2.1实体bean中的CMR关系,在EJB 3.0实体bean中则使用@OnetoMany注释。注释@Id注明了标识符属性标题,注释@Column指定了与标识符属性标题对应的数据库栏。如果一个持久性实体bean属性未用@Column注明,那EJB服务器会假定栏名与实体bean属性名相同。而瞬态实体bean属性通常用@Transient来注明。通告:http://www.qqread.com/java/2006/06/r218128002.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章