分享Java快乐

我有一份快乐,分给你一些;我还是有一份快乐,你也有一份快乐。

javamxj
javamxj的公告

    版权声明:在此发表的有关文章均属本人javamxj原创,转摘或引用请注明出处。



联系方式:
Email:
javamxj@gmail.com

友情Blog

最近评论
linuxghs:删除configuration,eclipse不能启动了。郁闷
xinghui100:学习中
IvonXiao:谢谢博主的分享
xkpkhu:wow power leveling
xkpkhu:wow power leveling
文章分类
收藏
    相册
    有空逛逛
    java开源大全(RSS)
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Eclipse快速上手EJB -- 3. 一对一的双向关系的CMR(3)收藏

    新一篇: Eclipse快速上手EJB -- 4. 多对多的单向关系的CMR(1) | 旧一篇: Eclipse快速上手EJB -- 3. 一对一的双向关系的CMR(2)

    三、创建客户端
    1. 右击 src 文件夹 ->新建 ->Lomboz EJB Test Client  Wizard:
     
     
    2. 修改生成的 CMPClient2.java,调用UserManagementBean中的方法。
     
    2. 先在testBean()方法体外建立两个static方法,简化代码调用。

       //  创建用户
      public static void createUsers(UserManagement userMgmt)
          throws RemoteException, CreateException {
        System.out.println("向UserInfo表中添加数据");
        userMgmt.addUser("wangyi@aaa.com", "密码1", "王一",
            "Engineering", "111-1212", 22, 2000);
        userMgmt.addUser("wanger@bbb.net", "密码2", "王二",
            "Marketing", "222-1213",40, 4000);
        userMgmt.addUser("zhangsan@bbb.ccc", "密码3", "张三",
            "IT", "1688888", 32, 2800);
        userMgmt.addUser("lisi@bbb.ccc", "密码4", "李四",
            "Sales", "1288888", 28, 2700);
        userMgmt.addUser("zhu@bbb.eee", "密码5", "朱王五",
            "Sales", "1588888", 38, 4500);
        userMgmt.addUser("javamxj@yahoo.com.cn", "分享Java快乐", "MXJ",
            "IT", "1788888", 26, 2900);
      }

      //   输出ArrayList
      private static void printList(ArrayList list) {
        Iterator i = list.iterator();
        while (i.hasNext()) {
          Object details = (Object) i.next();
          System.out.println(details.toString());
        }
        System.out.println("");
      }

     
     
    3. 然后,将testBean()方法体内的 myBean 改成 userMgmt,再向表中添加数据及显示数据。如下,斜体的即是改动部分。
    public void testBean() {

        try {
          javamxj.ejb.cmp.UserManagement userMgmt = getHome().create();
         
          createUsers(userMgmt);
         
          System.out.println("显示所有用户");
          printList(userMgmt.getUsers());
    运行程序,则控制台输出如下:
     
     
    4. 将“createUsers(userMgmt);”语句注释掉,调用密码验证及改变用户姓名的方法。
     
          //createUsers(userMgmt);      
          System.out.println("显示所有用户");
          printList(userMgmt.getUsers());
         

          boolean login = false;
          login = userMgmt.verifyPassword("javamxj@yahoo.com.cn", "分享Java快乐");
          System.out.println("密码验证: " + login);

         System.out.println("改变用户javamxj@yahoo.com.cn的名字");
          userMgmt.changeName("javamxj@yahoo.com.cn","Hello");
    运行程序,则会发现 javamxj 的姓名已被更改为 Hello:
     
    5. 继续调用按年龄查询用户的方法:
          System.out.println("采用 ejb.finder 输出大于30的用户");
          printList(userMgmt.getUserByAge1(30));

          System.out.println("采用 ejb.select 输出年龄大于30的用户");
          printList(userMgmt.getUserByAge2(30));
    输出:
     
    6.继续调用通过ValueObject输出用户的方法:
          System.out.println("通过 ValueObject 输出用户信息:");
          UserInfoValue[] users = userMgmt.getUsersInfo();
          for (int index = 0; index < users.length; index++) {
            UserInfoValue user = users[index];
            System.out.println("用户 " + user.getEmail() + " 的年龄:"+ user.getAge());
          }
    输出:
     
     
    7. 继续调用通过姓名查询用户的方法:
      System.out.println("输出姓王的用户");
      printList(userMgmt.getUsersByName("王%"));
      System.out.println("输出姓名中含有王字的用户");
      printList(userMgmt.getUsersByName("%王%"));
    输出:
     
    8. 删除一个用户,由于已经设置了级联删除的标记,所以虽然调用的方法是UserBean中的方法,但仍然会同时删除UserInfoBean中相关的数据。
    //  删除一个用户
    userMgmt.removeUser(zhu@bbb.eee);
     
    查看数据表,会发现已经同时删除了usertable和userinfotable中关于的“zhu@bbb.eee”数据。
     
     
     
    好了,这个算是讲完了。欲知后事如何,且听下回分解。
     
     
     
    完整的源码

    UserBean.java

    /*  * 创建日期 2005-1-14  *  * 作者:javamxj(分享java快乐)  */ package javamxj.ejb.cmp; /**  *  * <!-- begin-user-doc --> You can insert your documentation for '<em><b>UserBean</b></em>'. <!-- end-user-doc --> *  <!--  begin-lomboz-definition -->  <?xml version="1.0" encoding="UTF-8"?>  <lomboz:EJB xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:lomboz="http://lomboz.objectlearn.com/xml/lomboz">  <lomboz:entity>  <lomboz:entityEjb>  <j2ee:display-name>User</j2ee:display-name>  <j2ee:ejb-name>User</j2ee:ejb-name>  <j2ee:ejb-class>javamxj.ejb.cmp.UserBean</j2ee:ejb-class>  <j2ee:persistence-type>Container</j2ee:persistence-type>  <j2ee:prim-key-class>java.lang.String</j2ee:prim-key-class>  <j2ee:cmp-version>2.x</j2ee:cmp-version>  <j2ee:abstract-schema-name>userSchema</j2ee:abstract-schema-name>  <j2ee:primkey-field>eamil</j2ee:primkey-field>  </lomboz:entityEjb>  <lomboz:fieldMappings>  <lomboz:fieldName>email</lomboz:fieldName>  <lomboz:fieldType>java.lang.String</lomboz:fieldType>  <lomboz:columnName>电子邮件</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>varchar</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>true</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:fieldMappings>  <lomboz:fieldName>password</lomboz:fieldName>  <lomboz:fieldType>java.lang.String</lomboz:fieldType>  <lomboz:columnName>密码</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>varchar</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>false</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:tableName>userTable</lomboz:tableName>  <lomboz:dataSourceName></lomboz:dataSourceName>  </lomboz:entity>  </lomboz:EJB>  <!--  end-lomboz-definition -->  *  * <!-- begin-xdoclet-definition -->  * @ejb.bean name="User"  * jndi-name="User"  * type="CMP"  *  primkey-field="email"   *  schema="userSchema"   *  cmp-version="2.x"  *  view-type = "local"  *  data-source=""  *   *  @ejb.persistence   *   table-name="userTable"   *   * @ejb.finder   *    query="SELECT OBJECT(a) FROM userSchema as a"    *    signature="java.util.Collection findAll()"    *   * @jboss.persistence create-table = "true"  *                    remove-table = "false"  *  * @ejb.pk class="java.lang.String"  * <!-- end-xdoclet-definition -->  * @generated  **/ public abstract class UserBean implements javax.ejb.EntityBean {
    /** * @ejb.create-method */ public java.lang.String ejbCreate(String email, String password)
    throws javax.ejb.CreateException {
    // EJB 2.0 spec says return null for CMP ejbCreate methods. setEmail(email); setPassword(password); return null;
    }
    /** * The container invokes this method immediately after it calls ejbCreate. */ public void ejbPostCreate(String email, String password)
    throws javax.ejb.CreateException {
    }
    /** * CMP Field email * @return the email * @ejb.persistent-field * @ejb.persistence * column-name="电子邮件" * jdbc-type="VARCHAR" * sql-type="varchar(64)" * read-only="false" * @ejb.pk-field * * @ejb.interface-method */ public abstract java.lang.String getEmail();
    /** * @param java.lang.String the new email value * @ejb.interface-method */ public abstract void setEmail(java.lang.String email);
    /** * CMP Field password * @return the password * @ejb.persistent-field * @ejb.persistence * column-name="密码" * jdbc-type="VARCHAR" * sql-type="varchar(64)" * read-only="false" * * @ejb.interface-method */ public abstract java.lang.String getPassword();
    /** * @param java.lang.String the new password value * @ejb.interface-method */ public abstract void setPassword(java.lang.String password);
    /** * Getter for CMR Relationship * * @ejb.interface-method view-type="local" * @ejb.relation name = "UserHasUserInfo" * role-name = "UserHasAUserInfo" * target-multiple = "no" * cascade-delete = "yes" * * @jboss.relation fk-column = "电子邮件" * related-pk-field = "email" */ public abstract javamxj.ejb.cmp.UserInfoLocal getUserInfo();
    /** * Setter for CMR Relationship * * @ejb.interface-method view-type="local" */ public abstract void setUserInfo(javamxj.ejb.cmp.UserInfoLocal value);
    }
     
     

    UserInfoBean.java

    /*  * 创建日期 2005-1-24  *  * 作者:javamxj(分享java快乐)  */ package javamxj.ejb.cmp; import javax.ejb.FinderException; /**  *  * <!-- begin-user-doc --> You can insert your documentation for '<em><b>UserInfoBean</b></em>'. <!-- end-user-doc --> *  <!--  begin-lomboz-definition -->  <?xml version="1.0" encoding="UTF-8"?>  <lomboz:EJB xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:lomboz="http://lomboz.objectlearn.com/xml/lomboz">  <lomboz:entity>  <lomboz:entityEjb>  <j2ee:display-name>UserInfo</j2ee:display-name>  <j2ee:ejb-name>UserInfo</j2ee:ejb-name>  <j2ee:ejb-class>javamxj.ejb.cmp.UserInfoBean</j2ee:ejb-class>  <j2ee:persistence-type>Container</j2ee:persistence-type>  <j2ee:prim-key-class>java.lang.String</j2ee:prim-key-class>  <j2ee:cmp-version>2.x</j2ee:cmp-version>  <j2ee:abstract-schema-name>UserInfoSchema</j2ee:abstract-schema-name>  <j2ee:primkey-field>email</j2ee:primkey-field>  </lomboz:entityEjb>  <lomboz:fieldMappings>  <lomboz:fieldName>email</lomboz:fieldName>  <lomboz:fieldType>java.lang.String</lomboz:fieldType>  <lomboz:columnName>电子邮件</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>varchar</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>true</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:fieldMappings>  <lomboz:fieldName>name</lomboz:fieldName>  <lomboz:fieldType>java.lang.String</lomboz:fieldType>  <lomboz:columnName>姓名</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>varchar</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>false</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:fieldMappings>  <lomboz:fieldName>dept</lomboz:fieldName>  <lomboz:fieldType>java.lang.String</lomboz:fieldType>  <lomboz:columnName>组别</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>varchar</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>false</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:fieldMappings>  <lomboz:fieldName>workPhone</lomboz:fieldName>  <lomboz:fieldType>java.lang.String</lomboz:fieldType>  <lomboz:columnName>工作电话</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>varchar</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>false</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:fieldMappings>  <lomboz:fieldName>age</lomboz:fieldName>  <lomboz:fieldType>java.lang.Integer</lomboz:fieldType>  <lomboz:columnName>年龄</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>Integer</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>false</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:fieldMappings>  <lomboz:fieldName>salary</lomboz:fieldName>  <lomboz:fieldType>java.lang.Integer</lomboz:fieldType>  <lomboz:columnName>薪水</lomboz:columnName>  <lomboz:jdbcType>VARCHAR</lomboz:jdbcType>  <lomboz:sqlType>Integer</lomboz:sqlType>  <lomboz:readOnly>false</lomboz:readOnly>  <lomboz:primaryKey>false</lomboz:primaryKey>  </lomboz:fieldMappings>  <lomboz:tableName>UserInfoTable</lomboz:tableName>  <lomboz:dataSourceName></lomboz:dataSourceName>  </lomboz:entity>  </lomboz:EJB>  <!--  end-lomboz-definition -->  *  * <!-- begin-xdoclet-definition -->  * @ejb.bean name="UserInfo"  * jndi-name="UserInfo"  * type="CMP"  *  primkey-field="email"   *  schema="UserInfoSchema"   *  cmp-version="2.x"  *  view-type = "local"  *  data-source=""   *   *  @ejb.persistence   *    table-name="UserInfoTable"   *   * @ejb.value-object  *   * @ejb.finder   *    query="SELECT OBJECT(a) FROM UserInfoSchema as a"    *    signature="java.util.Collection findAll()"    *   * @ejb.finder   *    query = "SELECT OBJECT(a) FROM UserInfoSchema as a WHERE a.age >?1"   *    signature = "java.util.Collection findUserByAge(int age )"  *   * @ejb.finder   *    query = "SELECT OBJECT(g) FROM UserInfoSchema AS g WHERE g.name LIKE ?1"  *    signature = "java.util.Collection findUserByName(java.lang.String name)"  *   * @jboss.persistence   *    create-table = "true"   *    remove-table = "false"  *   *  * @ejb.pk class="java.lang.String"  * <!-- end-xdoclet-definition -->  * @generated  **/ public abstract class UserInfoBean implements javax.ejb.EntityBean {
    /** * @ejb.create-method */ public java.lang.String ejbCreate(
    String email,
    String name,
    String dept,
    String workPhone,
    Integer age,
    Integer salary) throws javax.ejb.CreateException {
    // EJB 2.0 spec says return null for CMP ejbCreate methods. setEmail(email); setName(name); setDept(dept); setWorkPhone(workPhone); setAge(age); setSalary(salary); return null;
    }
    /** * The container invokes this method immediately after it calls ejbCreate. */ public void ejbPostCreate(
    String name,
    String email,
    String dept,
    String workPhone,
    Integer age,
    Integer salary) throws javax.ejb.CreateException {
    }
    /** * CMP Field email * @return the email * @ejb.persistent-field * @