程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> EJB3.0開發指南之實體Bean的繼承

EJB3.0開發指南之實體Bean的繼承

編輯:JAVA編程入門知識
  在EJB3.0中,實體Bean可以實現繼續關系。 比如有個Person的實體bean,它有姓名和性別兩個屬性。
  
  上帝和女娲造人的時候,造出兩種人:Man和Woman。Man和Woman都是實體Bean,而且他們都繼續Person。
  
  單一表策略就是副實體和子實體的數據都存放在一張表中,同時指定一列用來區別這些實體。
  
  如:
  
   @Entity
  @Inheritance(strategy = InheritanceType.SINGLE_TABLE, discriminatorType = DiscriminatorType.STRING)
  @DiscriminatorColumn(name = "P_TYPE", nullable = true)
  @ Inheritance的注釋聲明如下:
  @ @Target({TYPE}) @Retention(RUNTIME)
  
  public @interface Inheritance {
   InheritanceType strategy() default SINGLE_TABLE;
   DiscriminatorType discriminatorType() default STRING;
   String discriminatorValue() default "";
  }
  這個注釋用來指定繼續使用的策略,以及為了區別這些實體所用的列的類型與值。
  
   @DiscriminatorColumn注釋用在單一表策略和聯合表策略上。用來指定區別各實體所需的列。
  @Target({TYPE}) @Retention(RUNTIME)
  
  public @interface DiscriminatorColumn {
   String name() default "";
   boolean nullable() default false;
   String columnDefinition() default "";
   int length() default 10;
  }
  這個例子主要有以下幾個文件,這個例子主要實現了Person和Man、Woman之間的繼續關系,下面兩章介紹的例子和這個例子相同。Man和Woman繼續Person實體Bean。前面的例子一樣,我們還是使用Client測試。
  
  Person.Java:實體Bean。
  
  Man.java:實體Bean所依靠的類。
  
  Woman.java:實體Bean所依靠的類。
  
  PersonTest.java:會話Bean的業務接口
  
  PersonTestBean.java:會話Bean的實現類
  
  Client.java:測試EJB的客戶端類。
  
  jndi.properties:jndi屬性文件,提供訪問jdni的基本配置屬性。
  
  Build.XML:ant 配置文件,用以編譯、發布、測試、清除EJB。
  
  下面針對每個文件的內容做一個介紹。
  
  Person.java
  
   package com.kuaff.ejb3.singleinheritance;
  
  import javax.ejb.DiscriminatorColumn;
  import javax.ejb.DiscriminatorType;
  import javax.ejb.Entity;
  import javax.ejb.GeneratorType;
  import javax.ejb.Id;
  import javax.ejb.Inheritance;
  import javax.ejb.InheritanceType;
  
  @Entity
  @Inheritance(strategy = InheritanceType.SINGLE_TABLE, discriminatorType = DiscriminatorType.STRING)
  @DiscriminatorColumn(name = "P_TYPE", nullable = true)
  public class Person implements java.io.Serializable
  {
   private int id;
   private String name;
   private String gender;
  
   @Id(generate = GeneratorType.AUTO)
  
   public int getId()
   {
  return id;
   }
  
   public void setId(int id)
   {
  this.id = id;
   }
  
   public String getName()
   {
  return name;
   }
  
   public void setName(String name)
   {
  this.name = name;
   }
  
   public void setGender(String gender)
   {
  this.gender = gender;
   }
  
   public String getGender()
   {
  return gender;
   }
  
  }
  指定使用P_TYPE列用來區別各實體Bean。
  
  Man.java
  
  
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved