亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

EJB3.0開發指南之多對多和一對一

2019-11-18 12:32:55
字體:
來源:轉載
供稿:網友

  學生和老師就是多對多的關系。一個學生有多個老師,一個老師教多個學生。
  
  學生和檔案就是一對一的關系(不知道國外的學生有沒有檔案?)。
  
  為了實現多對多的關系,數據庫中需要關聯表,用以在兩個實體間建立關聯。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的注釋聲明如下:
  @Target({METHOD, FIELD})
  
  public @interface AssociationTable {
  Table table() default @Table(specified=false);
  JoinColumn[] joinColumns() default {};
  JoinColumn[] inverseJoinColumns() default {};
  }
  
  關聯表注釋指定了關聯表的名稱、主表的列和從表的列。
  
  為了實現一對一的關系,需要用@OneToOne來注釋。
  
  如:
  
  @OneToOne(cascade = {CascadeType.ALL})
  @JoinColumn(name = "DOSSIER_ID")
  
  public Dossier getDossier()
  {
  return dossier;
  }
  
  這定義了一個單向的一對一的關系。假如在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。
  
  下面針對每個文件的內容做一個介紹。
  
  Student.java
  
  package com.kuaff.ejb3.relationships;
  import javax.ejb.CascadeType;
  import javax.ejb.Entity;
  import javax.ejb.FetchType;
  import javax.ejb.GeneratorType;
  import javax.ejb.Id;
  import javax.ejb.JoinColumn;
  import javax.ejb.OneToOne;
  import javax.ejb.ManyToMany;
  import javax.ejb.Table;
  import javax.ejb.AssociationTable;
  import java.util.ArrayList;
  import java.util.Set;
  import java.util.Collection;
  import java.io.Serializable;
  
  @Entity
  
  @Table(name = "STUDENT")
  
  public class Student implements Serializable
  
  {
  private int id;
  private String first;
  private String last;
  private Dossier dossier;
  private Set<Teacher> teachers;
  
  @Id(generate = GeneratorType.AUTO)
  
  public int getId()
  {
  return id;
  }
  
  public void setId(int id)
  {
  this.id = id;
  }
  
  public void setFirst(String first)
  {
  this.first = first;
  }
  
  public String getFirst()
  {
  return first;
  }
  
  public void setLast(String last)
  {
  this.last = last;
  }
  
  public String getLast()
  {
  return last;
  }
  
  public void setDossier(Dossier dossier)
  {
  this.dossier = dossier;
  }
  
  @OneToOne(cascade = {CascadeType.ALL})
  @JoinColumn(name = "DOSSIER_ID")
  
  public Dossier getDossier()
  {
  return dossier;
  }
  
  public void setTeacher(Set<Teacher> teachers)
  {
  this.teachers = teachers;
  }
  
  @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")})
  
  public Set<Teacher> getTeacher()
  {
  return teachers;
  }
  }
  
  
  Dossier.java
  
  package com.kuaff.ejb3.relationships;
  
  import javax.ejb.Entity;
  import javax.ejb.GeneratorType;
  import javax.ejb.Id;
  
  @Entity
  
  public class Dossier implements java.io.Serializable
  {
  private Long id;
  private String resume;
  
  @Id(generate = GeneratorType.AUTO)
  public Long getId()
  {
  return id;
  }
  
  public void setId(Long id)
  {
  this.id = id;
  }
  
  public void setResume(String resume)
  {
  this.resume = resume;
  }
  
  public String getResume()
  {
  return resume;
  }
  }
  
  Teacher.java
  
  package com.kuaff.ejb3.relationships;
  
  import javax.ejb.AssociationTable;
  import javax.ejb.Basic;
  import javax.ejb.CascadeType;
  import javax.ejb.Column;
  import javax.ejb.Entity;
  import javax.ejb.FetchType;
  import javax.ejb.Id;
  import javax.ejb.JoinColumn;
  import javax.ejb.ManyToMany;
  import javax.ejb.Table;
  import javax.ejb.Transient;
  import javax.ejb.Version;
  import java.util.Set;
  import javax.ejb.GeneratorType;
  
  @Entity
  
  public class Teacher implements java.io.Serializable
  {
  private Long id;
  private String resume;
  private String name;
  private String info;
  private Set<Student> students;
  
  @Id(generate = GeneratorType.IDENTITY)
  
  public Long getId()
  {
  return id;
  }
  
  public void setId(Long id)
  {
  this.id = id;
  }
  
  public void setName(String name)
  {
  this.name = name;
  }
  
  public String getName()
  {
  return name;
  }
  
  public void setInfo(String info)
  {
  this.info = info;
  }
  
  public String getInfo()
  {
  return info;
  }
  
  public void setStudents(Set<Student> students)
  {
  this.students = students;
  }
  
  @ManyToMany(cascade = {CascadeType.CREATE, CascadeType.MERGE}, fetch = FetchType.EAGER)
  @AssociationTable(table = @Table(name = "STUDENT_TEACHER"),
  
  joinColumns = {@JoinColumn(name = "TEACHER_ID",referencedColumnName="ID")},
  inverseJoinColumns = {@JoinColumn(name = "STUDENT_ID",referencedColumnName="ID")})
  
  public Set<Student> getStudents()
  {
  return students;
  }
  }
  
  EntityTest.java
  
  package com.kuaff.ejb3.relationships;
  
  import javax.ejb.Remote;
  import java.util.List;
  
  @Remote
  
  public interface EntityTest
  {
  public void createData();
  public List findByName(String name);
  }
  
  EntityTestBean.java
  
  package com.kuaff.ejb3.relationships;
  
  import javax.ejb.EntityManager;
  import javax.ejb.Inject;
  import javax.ejb.Stateless;
  import java.util.HashSet;
  import java.util.Set;
  import java.util.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频国产视频| 国产69精品久久久久久| 日韩精品在线免费播放| 久久久999精品免费| 亚洲国产成人久久| 日韩高清av一区二区三区| 日本高清不卡的在线| 欧美中在线观看| 久久久久久亚洲精品不卡| 亚洲综合国产精品| 中文字幕av一区二区三区谷原希美| 国产午夜精品美女视频明星a级| 2020欧美日韩在线视频| 日韩暖暖在线视频| 精品久久久久久久久久久久久久| 亚洲天堂久久av| 日本精品一区二区三区在线| 欧美激情视频免费观看| 中日韩美女免费视频网址在线观看| 亚洲国产精品99久久| 欧美午夜精品伦理| 国产精品视频1区| 性色av一区二区咪爱| 国产精品精品一区二区三区午夜版| 色综久久综合桃花网| 亚洲精品美女久久| 日韩在线视频免费观看高清中文| 亚洲人成电影网站色…| 国产精品福利无圣光在线一区| 久久久女人电视剧免费播放下载| 国内精品小视频| 欧美色视频日本高清在线观看| 国产精品91久久久| 欧美激情中文字幕乱码免费| 亚洲视频电影图片偷拍一区| 精品国产视频在线| 欧美一区二区视频97| 欧美一级淫片播放口| 亚洲国产小视频在线观看| 国产精品99导航| 欧美在线激情视频| 北条麻妃久久精品| 亚洲va久久久噜噜噜| 国产国语刺激对白av不卡| 亚洲第一区中文字幕| 欧美激情一区二区三区久久久| 欧美激情免费在线| 成人免费网站在线| 欧美色道久久88综合亚洲精品| 国产午夜精品麻豆| 国产成人aa精品一区在线播放| 欧美在线播放视频| 国产精品色视频| 欧美性猛交xxxx富婆| 中文字幕亚洲字幕| 欧美精品久久久久久久久久| 3344国产精品免费看| 97香蕉超级碰碰久久免费软件| 久久久人成影片一区二区三区观看| 欧美成人亚洲成人日韩成人| 亚洲欧洲一区二区三区在线观看| 亚洲色图18p| 国产日产久久高清欧美一区| 久久久精品国产一区二区| 亚洲大胆人体在线| 爽爽爽爽爽爽爽成人免费观看| 日本精品视频网站| 久久久久999| 亚洲国产成人久久| 成人写真视频福利网| 在线观看精品自拍私拍| 黑人巨大精品欧美一区二区三区| 26uuu亚洲国产精品| 色av吧综合网| 91精品视频免费看| 在线观看国产精品91| 色综合久久精品亚洲国产| 91av在线看| 日韩视频一区在线| 久久久精品网站| xvideos国产精品| 国模gogo一区二区大胆私拍| 国产精品入口尤物| 欧美激情一级精品国产| 欧美区二区三区| 国产精品成人播放| 日本人成精品视频在线| 色综合久久天天综线观看| 国内精品久久久久影院优| 亚洲欧美日韩中文在线制服| 亚洲黄在线观看| 欧美激情xxxx性bbbb| 亚洲美女喷白浆| 麻豆国产va免费精品高清在线| 欧美大片网站在线观看| 中文字幕成人精品久久不卡| 中文字幕日韩在线播放| 亚洲欧美一区二区三区在线| 欧美激情视频在线| 欧美性videos高清精品| 成人激情电影一区二区| 欧美成人网在线| 国产精品色午夜在线观看| 亚洲在线视频观看| 精品偷拍一区二区三区在线看| 久久香蕉国产线看观看网| 国产一区二区三区在线观看网站| 日韩欧美极品在线观看| 欧美精品电影免费在线观看| 国产精品视频一| 国模gogo一区二区大胆私拍| 亚洲新声在线观看| 国产精品久久久久久久美男| 永久免费看mv网站入口亚洲| 日韩最新免费不卡| 丝袜亚洲欧美日韩综合| 色狠狠久久aa北条麻妃| 亚洲欧美制服另类日韩| 国产精品a久久久久久| 国内精品久久久久久久久| 国产成人精品免费久久久久| 欧美性猛交99久久久久99按摩| 91精品在线国产| 一区二区在线视频| 国产精品www| 国产视频精品在线| 91国内揄拍国内精品对白| 亚洲成人激情小说| 另类色图亚洲色图| 国产精品电影观看| 欧美大肥婆大肥bbbbb| 欧美国产第一页| 国产精品久久久久久久久久新婚| 亚洲精品国产福利| 欧美裸体男粗大视频在线观看| 亚洲aa中文字幕| 日韩av123| 91在线观看免费观看| 亚洲精品成人网| 欧美激情在线有限公司| 日韩美女视频在线观看| 亚洲性av在线| 日韩精品中文字幕久久臀| 久久精品91久久久久久再现| 欧美巨大黑人极品精男| 午夜精品一区二区三区在线| 性亚洲最疯狂xxxx高清| 亚洲欧美日本另类| 中文字幕日韩av综合精品| 亚洲一区美女视频在线观看免费| 久久久久久久久网站| 国产日韩在线亚洲字幕中文| 亚洲97在线观看| 亚洲色图欧美制服丝袜另类第一页| www.亚洲一二| 国产一区二区三区直播精品电影| 日韩在线视频免费观看高清中文| 久久精品影视伊人网| 国产一区在线播放| 久久视频中文字幕| 色综合久久悠悠| 浅井舞香一区二区| 91日本视频在线| 黄色91在线观看|