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的新特性,本文只是作一个简单的介绍,详细请大家查看相关书籍或资料.
|