学生和老师就是多对多的关系。一个学生有多个老师,一个老师教多个学生。
学生和档案就是一对一的关系(不知道国外的学生有没有档案?)。
为了实现多对多的关系,数据库中需要关联表,用以在两个实体间建立关联。JBoss可以自动生成关联表,你也可以@AssociationTable来指定关联表的信息。
如:
| @ManyToMany(cascade = {CascadeType.CREATE, CascadeType.MERGE}, fetch = FetchType.EAGER, isInverse = true) @AssociationTable(table = @Table(name = "STUDENT_TEACHER"), joinColumns = {@JoinColumn(name = "TEACHER_ID")},inverseJoinColumns = {@JoinColumn(name = "STUDENT_ID")}) @ AssociationTable的注释声明如下: public @interface AssociationTable { |
关联表注释指定了关联表的名称、主表的列和从表的列。
为了实现一对一的关系,需要用@OneToOne来注释。
如:
| @OneToOne(cascade = {CascadeType.ALL}) @JoinColumn(name = "DOSSIER_ID") public Dossier getDossier() |
这定义了一个单向的一对一的关系。如果在Dossier也定义了相关的关联,那么它就是双向的。双向的意思就是通过一个Student实体就可以查找到一个Dossier,通过一个Dossier就可以查找到一个Student。
@ OneToOne的注释声明如下:
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface OneToOne {
String targetEntity() default "";
CascadeType[] cascade() default {};
FetchType fetch() default EAGER;
boolean optional() default true;
}
这个例子主要有以下几个文件,这个例子主要实现了学生和老师、学生和档案之间的关系。Student、Teacher、Dossier都是实体Bean。Student和Dossier是一个双向的OneToOne之间的关系,Student和Teacher是ManyToMany的关系,也是双向的。和前面的例子一样,我们还是使用Client测试。
Student.java:实体Bean。
Dossier.java:实体Bean所依赖的类。
Teacher.java:实体Bean所依赖的类。
EntityTest.java:会话Bean的业务接口
EntityTest Bean.java:会话Bean的实现类
Client.java:测试EJB的客户端类。
jndi.properties:jndi属性文件,提供访问jdni的基本配置属性。
Build.xml:ant 配置文件,用以编译、发布、测试、清除EJB。
下面针对每个文件的内容做一个介绍。
相关专题
- Wlan组网----家庭专题 (4270篇文章)
- 在Eclipse中配置Struts2项目 (386次浏览)
- 史上最简单的struts+spring+hibernate配置实 (249次浏览)
- 在Spring中使用JTA事务管理 (231次浏览)
- 玩玩Spring之struts+hibernate+spring添删改 (156次浏览)
- 使用Spring MVC表单标签 (154次浏览)
- 在Spring中使用Quartz进行任务调度 (154次浏览)
- 使用myeclipse集成struts,hibernate,spring (142次浏览)
- 详细讲解在Spring中进行集成测试 (126次浏览)
- Java远程通讯可选技术及原理 (100次浏览)
- 使用Acegi进行身份认证(之一) (85次浏览)



