EJB3.0实体Bean开发是是很简单的,主要就是学习标注的使用, 现在EJB3实体Bean是纯粹的POJO.实际上这表达了和Hibernate持久化实体对象同样的概念.它们的映射都通过JDK5.0注解来定义(EJB3规范已经定义了对应的XML描述语法).注解分为两个部分,分别是逻辑映射注解和物理映射注解,通过逻辑映射注解可以描述对象模型,类之间的关系等等,而物理映射注解则描述了物理的schema,表,列,索引等等.
这些标注都封装在javax.persistence包下,如果是使用Hibernate则在下载包里有个叫ejb3-persistence.jar的jar包,他就是用来完成开发支持EJB3的实体类的包,大部分和JDK5兼容的IDE(象Eclipse, IntelliJ IDEA 和Netbeans等等)都提供了注解接口和属性的自动完成功能.(这些不需要IDE提供特别的EJB3支持模块,因为EJB3注解是标准的JDK5注解)这里不作详细介绍,还是进入本文的主题吧.
每一个持久化POJO类都是一个实体bean,这可以通过在类的定义中使用@Entity注解来进行声明,如下所示:
1 @Entity //标识该JavaBean为一个实体Bean
2 @Table(name="orm_oto_users") //标识该实体Bean映射到数据库的那一张表
3 public class User { 通过@Entity注解将一个类声明为一个实体bean(即一个持久化POJO类),Table则是标识该实体映射到数据库的那一张表.
在对一个类进行注解时,你可以选择对它的的属性或者方法进行注解,根据你的选择,Hibernate的访问类型分别为field或property. EJB 3规范要求在需要访问的元素上进行注解声明,例如,如果访问类型为property就要在getter方法上进行注解声明,如果访问类型为field就要在字段上进行注解声明.应该尽量避免混合使用这两种访问类型.
1 @Entity //标识该JavaBean为一个实体Bean
2 @Table(name="orm_oto_users") //标识该实体Bean映射到数据库的那一张表
3 public class User {
4
5 @Id //Id用于标识该字段为主键字段
6 @Column(name="user_id") //映射到数据库的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 } 如上,便是一个完整的实体Bean,里面我们使用了如@Entity,@Id之类的标注,这正是ejb 3.0的新特性,本文只是作一个简单的介绍,详细请大家查看相关书籍或资料.