国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

EJB 3.0開發(fā)指南之多表映射

2019-11-17 06:14:26
字體:
供稿:網(wǎng)友
在前面的例子中,我們每一個實(shí)體Bean只映射到數(shù)據(jù)庫中的一張表上。事實(shí)上,一個實(shí)體Bean可以映射到多張表上。在一些需要字典表的項(xiàng)目上會經(jīng)常用到,象以前我做過的項(xiàng)目,使用到很多國標(biāo)規(guī)定的數(shù)據(jù)表。在我們下面這個例子中,性別作為一個字典表存在,學(xué)生這個實(shí)體將映射到學(xué)生信息表、性別表這兩個表。

  從表可以使用@SecondaryTable來注釋:

@Target({TYPE}) @Retention(RUNTIME)

public @interface SecondaryTable {
 String name();
 String catalog() default "";
 String schema() default "";
 JoinColumn[] join() default {};
 UniqueConstraint[] uniqueConstraints() default {};
}
  這個注釋可以指定表名、分類、schema、聯(lián)合列、約束等。假如你使用多張表,你可以使用下面的注釋來聲明多張表:

@SecondaryTable
@Target({TYPE}) @Retention(RUNTIME)

public @interface SecondaryTables {
 SecondaryTable[] value() default {};
}
  這個例子主要有以下幾個文件,這個例子主要實(shí)現(xiàn)了治理學(xué)生的功能。Student是一個實(shí)體Bean,這個Bean的name屬性是一個類,也就是Name類,這個Name類就是一個依靠值對象。學(xué)生的性別映射到第二張表中。StudentDAOBean是一個無狀態(tài)的會話Bean,用來調(diào)用實(shí)體Bean。和前面的例子一樣,我們還是使用Client測試。

  這個例子和上一個例子基本相同,只是Student.java和Client有所不同。

   Student.java:實(shí)體Bean。

   Name.java:實(shí)體Bean所依靠的類。

   StudentDAO.java:會話Bean的業(yè)務(wù)接口

   StudentDAOBean.java:會話Bean的實(shí)現(xiàn)類

   Client.java:測試EJB的客戶端類。

   jndi.PRoperties:jndi屬性文件,提供訪問jdni的基本配置屬性。

   Build.xml:ant 配置文件,用以編譯、發(fā)布、測試、清除EJB。

  下面針對每個文件的內(nèi)容做一個介紹。

Student.java

package com.kuaff.ejb3.secondary;

import javax.ejb.Dependent;
import javax.ejb.DependentAttribute;
import javax.ejb.Column;
import javax.ejb.Entity;
import javax.ejb.GeneratorType;
import javax.ejb.Id;
import javax.ejb.Table;
import javax.ejb.SecondaryTables;
import javax.ejb.SecondaryTable;
import javax.ejb.JoinColumn;

@Entity
@Table(name = "STUDENT")
@SecondaryTables({
@SecondaryTable(name = "GENDER", join = {@JoinColumn(name = "GENDER_ID")})
})

public class Student implements java.io.Serializable
{
 private int id;
 private Name name;
 private String grade;
 private String email;
 private String gender;

 @Id(generate = GeneratorType.AUTO)

 public int getId()
 {
  return id;
 }

 public void setId(int id)
 {
  this.id = id;
 }

 public void setName(Name name)
 {
  this.name = name;
 }

@Dependent({ @DependentAttribute(name = "first", column ={ @Column(name = "FIRST") }),

@DependentAttribute(name = "last", column ={ @Column(name = "LAST") }) })

public Name getName()
{
 return name;
}

public void setGrade(String grade)
{
 this.grade = grade;
}

@Column(name = "GRADE")

public String getGrade()
{
 return grade;
}

public void setEmail(String email)
{
 this.email = email;
}

@Column(name = "EMAIL")

public String getEmail()
{
 return email;
}

public void setGender(String gender)
{
 this.gender = gender;
}

@Column(name = "gender", secondaryTable = "GENDER")

public String getGender()
{
 return gender;
}

}

  Student.java實(shí)現(xiàn)了Student實(shí)體Bean,它提供學(xué)生的基本情況。在類上聲明上加上了第二張表的注釋:



發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 庆元县| 原阳县| 长泰县| 柯坪县| 西畴县| 左云县| 常州市| 石河子市| 怀化市| 江安县| 京山县| 年辖:市辖区| 安丘市| 白玉县| 曲水县| 阿荣旗| 彭阳县| 资中县| 浦城县| 德昌县| 杭州市| 鲜城| 连平县| 庐江县| 临泽县| 视频| 嘉禾县| 正镶白旗| 长治市| 阿克陶县| 万全县| 临汾市| 镇江市| 达拉特旗| 奈曼旗| 金阳县| 吉木乃县| 临清市| 泊头市| 溧阳市| 大同县|