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)行聲明,如下所示:
通過@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)該盡量避免混合使用這兩種訪問類型.
如上,便是一個(gè)完整的實(shí)體Bean,里面我們使用了如@Entity,@Id之類的標(biāo)注,這正是ejb 3.0的新特性,本文只是作一個(gè)簡單的介紹,詳細(xì)請大家查看相關(guān)書籍或資料.
這些標(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 {
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 }
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)書籍或資料.
這里有非常詳細(xì)的、完整的EJB3.0開發(fā)教程,包括詳細(xì)的開發(fā)環(huán)境搭建步驟,所有示例均通過實(shí)際檢驗(yàn)。
和這里不一樣的是所用的開發(fā)環(huán)境稍有不同:
JBoss 5
MyEclipse7
供喜歡使用Eclipse的同學(xué)們參考