<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    EJB 3.0開發指南之組合主鍵

    在前面的所有的實體Bean的例子中,我們所用的主鍵都是Id,而且都是由容器自動生成的。

      如:

    @Id(generate = GeneratorType.AUTO)
    public int getId()
    {
     return id;
    }

      事實上,主鍵可以是任意的java基本類型、或者是基本類型的包裝類,如Integer、String類型、或者是帶字段或屬性的主鍵類。注意,如果這樣使用主鍵,你需要將主鍵的注釋中的生成規則改為NONE。就是由程序生成主鍵值。

      主鍵類必須實現hashCode和equals方法。

      這個例子前面舉例過,就是一個存儲學生信息的實體bean,在那個例子中,使用Name類作為屬性,并且以Id作為主鍵,在這個例子中,我們將使用name作為主鍵,注意name的類型一個java類。和前面的例子一樣,我們還是使用Client測試。

      Name.java:主鍵。

      Student.java:實體Bean類。

      StudentDAO.java:會話Bean的業務接口

      StudentDAOBean.java:會話Bean的實現類

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

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

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

      下面針對每個文件的內容做一個介紹。

      Name.java

    package com.kuaff.ejb3.composite;

    import java.io.Serializable;
    import javax.ejb.AccessType;
    import javax.ejb.DependentObject;

    @DependentObject(access = AccessType.PROPERTY)

    public class Name implements java.io.Serializable
    {
     private String first;
     private String last;

     public Name()
     {
     }

     public Name(String first, String last)
     {
      this.first = first;
      this.last = last;
     }

     public String getFirst()
     {
      return first;
     }

     public void setFirst(String first)
     {
      this.first = first;
     }

     public String getLast()
     {
      return last;
     }

     public void setLast(String last)
     {
      this.last = last;
     }

     public int hashCode()
     {
      return (first+last).hashCode();
     }

     public boolean equals(Object object)
     {
      if (this == object) return true;
      if (object == null) return false;
      if (! (object instanceof Name)) return false;
      Name name = (Name)object;
      if ((name.first.equals(first)) && (name.last.equals(last)))
       return true;
      else
       return false;
     }

    }

      Student.java

    package com.kuaff.ejb3.composite;

    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;

    @Entity @Table(name = "STUDENT") public class Student implements java.io.Serializable
    {
     private Name name;
     private String grade;
     private String email;

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

     @Id(generate = GeneratorType.NONE)
     @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;

      StudentDAO.java

    package com.kuaff.ejb3.composite;

    import javax.ejb.Remote;
    import java.util.List;

    @Remote

    public interface StudentDAO

    {

    void create(String first, String last, String grade, String email);



    Student find(Name name);

    List findByFirstName(String name);

    List findByLastName(String name);

    List findByEmail(String email);



    void merge(Student s);

    }

      StudentDAOBean.java

    package com.kuaff.ejb3.composite;

    import java.util.List;
    import javax.ejb.EntityManager;
    import javax.ejb.Inject;
    import javax.ejb.Stateless;

    @Stateless

    public class StudentDAOBean implements StudentDAO
    {
     @Inject
     private EntityManager manager;

     public void create(String first, String last, String grade, String email)
     {
      Student student = new Student();
      student.setName(new Name(first,last));
      student.setGrade(grade);
      student.setEmail(email);
      manager.create(student);
     }

     public Student find(Name name)
     {
      return manager.find(Student.class, name);
     }

     public List findByFirstName(String name)
     {
      return manager.createQuery("from Student s where s.name.last = :name").setParameter("name", name).listResults();

     }

     public List findByLastName(String name)
     {
      return manager.createQuery("from Student s where s.name.first = :name").setParameter("name", name).listResults();
     }

     public List findByEmail(String email)
     {
      return manager.createQuery("from Student s where s.email = :email").setParameter("email", email).listResults();
     }

     public void merge(Student s)
     {
      manager.merge(s);
     }

    }

      Client.java

    package com.kuaff.ejb3.composite;

    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import java.util.List;

    public class Client
    {
     public static void main(String[] args) throws NamingException
     {
      InitialContext ctx = new InitialContext();
      StudentDAO dao = (StudentDAO) ctx.lookup(StudentDAO.class.getName());
      dao.create("晁","岳攀","8","smallnest@kuaff.com");
      dao.create("朱","立煥","6","zhuzhu@kuaff.com");
      Name name = new Name("朱","立煥");

      //List list = dao.findByEmail("zhuzhu@kuaff.com");

      Student s = dao.find(name);
      System.out.printf("%s %s的email:%s%n",s.getName().getFirst(),s.getName().getLast(),s.getEmail());
      /*
       for(Object o:list)
       {
        Student s = (Student)o;
        System.out.printf("%s %s的email:%s%n",s.getName().getFirst(),s.getName().getLast(),s.getEmail());
       }
      */
     }
    }

      這個客戶端用來測試。

      請運行{$JBOSS_HOME}/bin目錄下的run.bat: run –c all,啟動JBOSS。

    http://localhost:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss%3Aservice%3DHypersonic%2Cdatabase%3DlocalDB,然后調用startDatabaseManager()方法,打開HSQL管理工具管理數據庫。

      在Eclipse的Ant視圖中執行ejbjar target。或者在命令行下,進入到此工程目錄下,執行ant ejbjar,將編譯打包發布此EJB。

      在Eclipse的Ant視圖中執行run target。或者在命令行下,進入到此工程目錄下,執行ant run,測試這個EJB。

    posted on 2006-07-04 09:28 liaojiyong 閱讀(378) 評論(0)  編輯  收藏 所屬分類: EJB

    主站蜘蛛池模板: 亚洲乱码国产一区网址| 少妇中文字幕乱码亚洲影视| 九月婷婷亚洲综合在线| 日韩va亚洲va欧洲va国产| 亚洲免费网站在线观看| 男女交性无遮挡免费视频| 亚洲免费电影网站| 亚洲毛片av日韩av无码| 免费无遮挡无遮羞在线看 | 边摸边脱吃奶边高潮视频免费| 国产一级淫片a免费播放口| 国产特级淫片免费看| 亚洲欧洲校园自拍都市| 久久WWW免费人成—看片| 暖暖免费高清日本中文| 亚洲视频欧洲视频| 搡女人免费免费视频观看| 午夜国产大片免费观看| 伊人久久五月丁香综合中文亚洲| 黄页免费在线观看| 亚洲精品福利在线观看| 久久精品免费电影| 精品亚洲永久免费精品| ww4545四虎永久免费地址| 亚洲综合在线一区二区三区 | 最近2019中文免费字幕| 91在线亚洲精品专区| 亚色九九九全国免费视频| 亚洲一本综合久久| 成人av片无码免费天天看| 四虎永久精品免费观看| 在线免费观看h片| 久久精品国产99国产精品亚洲 | 免费电视剧在线观看| 亚洲黄网站wwwwww| 国产猛烈高潮尖叫视频免费| 成人性生交大片免费看好| 亚洲国产AV无码专区亚洲AV| 国产福利在线免费| 亚洲欧美第一成人网站7777| 四虎影院免费在线播放|