EJB3.0實(shí)體Bean開發(fā)是是很簡單的,主要就是學(xué)習(xí)標(biāo)注的使用, 現(xiàn)在EJB3實(shí)體Bean是純粹的POJO.實(shí)際上這表達(dá)了和Hibernate持久化實(shí)體對象同樣的概念.它們的映射都通過JDK5.0注解來定義(EJB3規(guī)范已經(jīng)定義了對應(yīng)的XML描述語法).注解分為兩個(gè)部分,分別是邏輯映射注解和物理映射注解,通過邏輯映射注解可以描述對象模型,類之間的關(guān)系等等,而物理映射注解則描述了物理的schema,表,列,索引等等.

        這些標(biāo)注都封裝在javax.persistence包下,如果是使用Hibernate則在下載包里有個(gè)叫ejb3-persistence.jar的jar包,他就是用來完成開發(fā)支持EJB3的實(shí)體類的包,大部分和JDK5兼容的IDE(象Eclipse, IntelliJ IDEA 和Netbeans等等)都提供了注解接口和屬性的自動(dòng)完成功能.(這些不需要IDE提供特別的EJB3支持模塊,因?yàn)镋JB3注解是標(biāo)準(zhǔn)的JDK5注解)這里不作詳細(xì)介紹,還是進(jìn)入本文的主題吧.

        每一個(gè)持久化POJO類都是一個(gè)實(shí)體bean,這可以通過在類的定義中使用@Entity注解來進(jìn)行聲明,如下所示:
1 @Entity   //標(biāo)識該JavaBean為一個(gè)實(shí)體Bean
2 @Table(name="orm_oto_users")  //標(biāo)識該實(shí)體Bean映射到數(shù)據(jù)庫的那一張表
3 public class User {

        通過@Entity注解將一個(gè)類聲明為一個(gè)實(shí)體bean(即一個(gè)持久化POJO類),Table則是標(biāo)識該實(shí)體映射到數(shù)據(jù)庫的那一張表.
         在對一個(gè)類進(jìn)行注解時(shí),你可以選擇對它的的屬性或者方法進(jìn)行注解,根據(jù)你的選擇,Hibernate的訪問類型分別為field或property. EJB 3規(guī)范要求在需要訪問的元素上進(jìn)行注解聲明,例如,如果訪問類型為property就要在getter方法上進(jìn)行注解聲明,如果訪問類型為field就要在字段上進(jìn)行注解聲明.應(yīng)該盡量避免混合使用這兩種訪問類型.
  1 @Entity   //標(biāo)識該JavaBean為一個(gè)實(shí)體Bean
  2 @Table(name="orm_oto_users")  //標(biāo)識該實(shí)體Bean映射到數(shù)據(jù)庫的那一張表
  3 public class User {
  4 
    
  5     @Id  //Id用于標(biāo)識該字段為主鍵字段

  6     @Column(name="user_id")  //映射到數(shù)據(jù)庫的user_id字段
  7     //主鍵生成策略

  8     @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="user_id_seq")
  9     private
 Long id;
 10 

 11     @Column(name="FIRST_NAME")
 12     private
 String firstName;
 13 

 14     @Column(name="LAST_NAME")
 15     private
 String lastName;
 16 

 17     private String email;
 18 

 19     private String Password;
 20 

 21     @Temporal(TemporalType.DATE)
 22     private
 Date created;
 23 

 24     @OneToOne(mappedBy="user",cascade=CascadeType.ALL)
 25     private
 Address address;
 26 

 27     public User() {
 28         super
();
 29         // TODO Auto-generated constructor stub

 30     }
 31 

 32     public User(String firstName, String lastName, String email,
 33 
            String password, Date created) {
 34         super
();
 35         this.firstName =
 firstName;
 36         this.lastName =
 lastName;
 37         this.email =
 email;
 38         Password =
 password;
 39         this.created =
 created;
 40 
    }
 41 

 42     public User(Long id, String firstName, String lastName, String email,
 43 
            String password, Date created) {
 44         super
();
 45         this.id =
 id;
 46         this.firstName =
 firstName;
 47         this.lastName =
 lastName;
 48         this.email =
 email;
 49         Password =
 password;
 50         this.created =
 created;
 51 
    }
 52 

 53     public Address getAddress() {
 54         return
 address;
 55 
    }
 56 

 57     public void setAddress(Address address) {
 58         this.address =
 address;
 59 
    }
 60 

 61     public Date getCreated() {
 62         return
 created;
 63 
    }
 64 

 65     public void setCreated(Date created) {
 66         this.created =
 created;
 67 
    }
 68 

 69     public String getEmail() {
 70         return
 email;
 71 
    }
 72 

 73     public void setEmail(String email) {
 74         this.email =
 email;
 75 
    }
 76 

 77     public String getFirstName() {
 78         return
 firstName;
 79 
    }
 80 

 81     public void setFirstName(String firstName) {
 82         this.firstName =
 firstName;
 83 
    }
 84 

 85     public Long getId() {
 86         return
 id;
 87 
    }
 88 

 89     public void setId(Long id) {
 90         this.id =
 id;
 91 
    }
 92 

 93     public String getLastName() {
 94         return
 lastName;
 95 
    }
 96 

 97     public void setLastName(String lastName) {
 98         this.lastName =
 lastName;
 99 
    }
100 

101     public String getPassword() {
102         return
 Password;
103 
    }
104 

105     public void setPassword(String password) {
106         Password =
 password;
107 
    }
108 }

        如上,便是一個(gè)完整的實(shí)體Bean,里面我們使用了如@Entity,@Id之類的標(biāo)注,這正是ejb 3.0的新特性,本文只是作一個(gè)簡單的介紹,詳細(xì)請大家查看相關(guān)書籍或資料.