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;1011 @Column(name="FIRST_NAME")12 private String firstName;1314 @Column(name="LAST_NAME")15 private String lastName;1617 private String email;1819 private String Password;2021 @Temporal(TemporalType.DATE)22 private Date created;2324 @OneToOne(mappedBy="user",cascade=CascadeType.ALL)25 private Address address;2627 public User() {28 super();29 // TODO Auto-generated construcTor stub30 }3132 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 }4142 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 }5253 public Address getAddress() {54 return address;55 }5657 public void setAddress(Address address) {58 this.address = address;59 }6061 public Date getCreated() {62 return created;63 }6465 public void setCreated(Date created) {66 this.created = created;67 }6869 public String getEmail() {70 return email;71 }7273 public void setEmail(String email) {74 this.email = email;75 }7677 public String getFirstName() {78 return firstName;79 }8081 public void setFirstName(String firstName) {82 this.firstName = firstName;83 }8485 public Long getId() {86 return id;87 }8889 public void setId(Long id) {90 this.id = id;91 }9293 public String getLastName() {94 return lastName;95 }9697 public void setLastName(String lastName) {98 this.lastName = lastName;99 }100101 public String getPassword() {102 return Password;103 }104105 public void setPassword(String password) {106 Password = password;107 }108 }
如上,便是一个完整的实体Bean,里面我们使用了如@Entity,@Id之类的标注,这正是ejb 3.0的新特性, 本文只是作一个简单的介绍,详细请大家查看相关书籍或资料.
世界上那些最容易的事情中,拖延时间最不费力。