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

    主站蜘蛛池模板: 另类专区另类专区亚洲| 91成人在线免费视频| 亚洲av综合avav中文| 4399影视免费观看高清直播| 亚洲人成电影网站色www| 亚洲毛片网址在线观看中文字幕 | 免费做爰猛烈吃奶摸视频在线观看 | 亚洲日本人成中文字幕| 国产jizzjizz视频免费看| 玖玖在线免费视频| 亚洲国产成人精品青青草原| 亚洲AV蜜桃永久无码精品| 中文字幕在线观看免费视频| 国产精品亚洲专区在线播放| 亚洲日本精品一区二区| 亚洲av午夜精品一区二区三区| 啦啦啦完整版免费视频在线观看| 美女视频黄a视频全免费网站色| 亚洲熟妇无码久久精品| 亚洲综合伊人久久大杳蕉| 国产精品免费观看久久| 亚洲视频在线免费观看| 一级毛片视频免费观看| 亚洲中文字幕久久久一区| 久久久久无码精品亚洲日韩| 亚洲国产成人久久综合野外 | 亚洲av日韩av无码| 亚洲AV成人潮喷综合网| 国产精品美女午夜爽爽爽免费| 免费在线看污视频| 一级做a爰全过程免费视频毛片| 亚洲午夜一区二区三区| 亚洲av色福利天堂| 亚洲日韩欧洲乱码AV夜夜摸| 免费一级毛片不卡在线播放| 久久精品a一国产成人免费网站| 日日麻批免费40分钟无码 | 免费国产在线视频| 一本一道dvd在线观看免费视频 | h视频在线免费观看| 美女被艹免费视频|