<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 閱讀(369) 評論(0)  編輯  收藏 所屬分類: EJB

    主站蜘蛛池模板: 中文字幕日韩亚洲| 免费无码一区二区三区蜜桃大| 婷婷综合缴情亚洲狠狠尤物| 亚洲中文无码永久免| 成人免费777777| 亚洲熟伦熟女专区hd高清| 四虎永久在线精品免费网址 | 亚洲AV第一页国产精品| 免费观看91视频| 亚洲天堂在线播放| 成人午夜免费福利视频| 97久久国产亚洲精品超碰热| 女人被男人躁的女爽免费视频 | 狠狠久久永久免费观看| 老子影院午夜伦不卡亚洲| 四虎1515hm免费国产| fc2成年免费共享视频18| 亚洲色偷偷狠狠综合网| 九九精品成人免费国产片| 亚洲AV永久纯肉无码精品动漫| 久久国产免费观看精品3| 亚洲mv国产精品mv日本mv| 国产精品酒店视频免费看| 国产精品99爱免费视频| 久久91亚洲精品中文字幕| 黄色片在线免费观看| 日韩毛片一区视频免费| 久久精品国产亚洲av成人| 99久久国产免费-99久久国产免费 99久久国产免费中文无字幕 | 久久亚洲av无码精品浪潮| 精品国产污污免费网站 | 亚洲爆乳精品无码一区二区| 亚洲国产精品丝袜在线观看| 一区二区三区无码视频免费福利| 亚洲精品456在线播放| 免费无码A片一区二三区| 一级毛片免费不卡| 亚洲精品国产精品国自产网站| 免费播放特黄特色毛片| 97av免费视频| 免费一级毛suv好看的国产网站 |