首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

JPA 多对多双向联系关系实体定义与注解设置

2012-11-12 
JPA多对多双向关联实体定义与注解设置Student.java package?junit.test ??????import?javax.persistence.

JPA 多对多双向关联实体定义与注解设置

Student.java

        package?junit.test; ??????import?javax.persistence.EntityManager; ??import?javax.persistence.EntityManagerFactory; ??import?javax.persistence.Persistence; ????import?org.junit.BeforeClass; ??import?org.junit.Test; ????public?class?ManyToManyTest?{ ????????@BeforeClass??????public?static?void?setUpBeforeClass()?throws?Exception?{ ??????} ??????@Test??????public?void?save()?{ ??????????EntityManagerFactory?factory?=?Persistence.createEntityManagerFactory("itcast"); ??????????factory.close(); ??????} ????}???


      ???? 双向多对多关系是一种对等关系,既然是对等关系,也就是说我们可以人为决定谁是关系维护端,谁是关系被维护端,这里选学生做关系维护端。那么以后就只能通过学生来维护老师跟学生的关系。

      假设:
      ???? 老师A?? id是1
      ?? ?? 学生B?? id是1
      ?? ?? 那通过什么东西把他们的关系确立起来呢?采用什么来存放他们的关联关系呢?是中间表(关联表)。

      ?? ?? 学生A和老师B建立起关系,首先要找到关系维护端,是学生,就要通过学生这个关系维护端,学生A.getTeachers().add(Teacher);这样就能把老师跟学生的关系确立起来了。确立起来后,反应在中间表里面就是insert into...一条语句
      ?? ?? 如果学生A要把老师B开掉,那就要解除关系,也是通过关系维护端学生A,反映在面向对象的操作就是? 学生A.getTeachers().remove(Teacher);执行这句代码的时候,在底层JDBC它会对中间表做delete from...语句的操作。
      ?? ?? 我们都是通过关系维护端来进行操作的,以后在双向关系中一定要找准谁是关系维护端,谁是关系被维护端

热点排行