JBOSS+EJB3之Entity 开发实例

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

        我用的是 mysql 数据库, EJB3.0 相对于2.0 变化蛮大的,真的是迫于 Spring+Hibernate 的逼式,ejb 3.0 已经出现几年了,自从她轻装上阵,也不知道现在的应用情况如何,不过本人认为, ejb 3.0 是很有市场的。它的简洁和方便无疑是程序员的最佳选择!

1. 配置 JBOSS 数据源:
     如果你用默认的数据源就不需要这么改动,默认的是 Hsqldb。为了换成 mysql,而且把数据源的 JNDI 改成自己的名字,你需要如下配置:
      一、拷贝驱动    
             我启动的是 default !           

             所以请保证JBOSS_INSTALL\server\default\lib下面有mysql jdbc driver

      二、修改 JBOSS 配置文件

         1、将文件JBOSS_INSTALL/docs/examples/jca/mysql-ds.xml拷贝到JBOSS_INSTALL\server\default\deploy下 
               面 
              修改如下: 

             <jndi-name>MySqlDS</jndi-name> 
           
                 <connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url> 
           
                 <driver-class>com.mysql.jdbc.Driver</driver-class> 
           
                 <user-name>root</user-name> 
           
                 <password>123</password>
         2、将文件JBOSS_INSTALL/docs/examples/jms/mysql-jdbc2-service.xml拷贝到 
               JBOSS_INSTALL/server/default/deploy/jms下

              修改如下: 

              <mbean code="org.jboss.mq.pm.jdbc2.PersistenceManager" 
             
                   name="jboss.mq:service=PersistenceManager"> 
             
               <depends optional-attribute-  
                name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=MySqlDS</depends> 
             
               <attribute name="SqlProperties"> 
            

              另外这个文件71行修改:

                CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER PRIMARY KEY NOT 
                NULL )  

         3、修改JBOSS_INSTALL/server/default/conf/standardjaws.xml如下: 

              <datasource>java:/MysqlDS</datasource> 
           
            <!--   <type-mapping>Hypersonic SQL</type-mapping> --> 
           
                  <type-mapping>mySQL</type-mapping>  
         4、修改JBOSS_INSTALL/server/default/deploy/jms/hsqldb-jdbc-state-service.xml如下: 
         <depends optional-attribute-
             name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=MysqlDS</depends>
         5、修改JBOSS_INSTALL/server/default/deploy/ejb-deployer.xml如下: 
           <mbean code="org.jboss.ejb.txtimer.DatabasePersistencePolicy" 
             name="jboss.ejb:service=EJBTimerService,persistencePolicy=database"> 
         
             <!-- DataSource JNDI name --> 
         
             <depends optional-attribute-name="DataSource">jboss.jca:service=DataSourceBinding,name=MysqlDS</depends> 
         
             <!-- The plugin that handles database persistence --> 
         
             <attribute 
              name="DatabasePersistencePlugin">org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin</attribute> 
         
           </mbean>  
         6、修改JBOSS_INSTALL/server/default/config/ standardjbosscmp-jdbc.xml如下: 
    <defaults> <datasource>java:/MysqlDS</datasource>  
         7、修改JBOSS_INSTALL/server/default/deploy/ uuid-key-generator.sar下面的META-INF下面jboss-service.xml如
               下: 

      
          <!-- DataSource JNDI name -->

          <depends optional-attribute-name="DataSource">jboss.jca:service=DataSourceBinding,name=MysqlDS</depends> 


         好了数据源配置方面已经完成!可以开始动手开发了!
2.MyEclipse6 开发 EntityBean

       persistence.xml 配置文件 
  <?xml version="1.0" encoding="UTF-8"?>
       <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
           http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
        version="1.0">
        <persistence-unit name="testUnit">
         <jta-data-source>java:/MysqlDS</jta-data-source>
         <properties>
           <property name="hibernate.hbm2ddl.auto" value="create-drop" />//create-drop 如果有表结构可以换成 update!
                                                                                                              //相关详细内容请看书
         </properties>
        </persistence-unit>
       </persistence>
3.PersonDAO 接口
    import java.util.Date;
       import java.util.List;
       
       import org.jpa.test.Person;
       
       public interface PersonDAO {
        public boolean insertPerson(String name, boolean sex, short age,
          Date birthday);
       
        public String getPersonNameByID(int personid);
       
        public boolean updatePerson(Person person);
       
        public Person getPersonByID(int personid);
       
        public List getPersonList(int max, int whichpage);
       }
4.PersonDAOBean 无状态的会话Bean
    package org.jpa.dao;
       
       import java.util.Date;
       import java.util.List;
       
       import javax.ejb.Remote;
       import javax.ejb.Stateless;
       import javax.persistence.EntityManager;
       import javax.persistence.PersistenceContext;
       import javax.persistence.Query;
       
       import org.jpa.test.Person;
       
       @Stateless
       @Remote( { PersonDAO.class })
       public class PersonDAOBean implements PersonDAO {
        @PersistenceContext
        protected EntityManager em;
       
        public String getPersonNameByID(int personid) {
         Person person = em.find(Person.class, Integer.valueOf(personid));
         return person.getName();
        }
       
        public boolean insertPerson(String name, boolean sex, short age,
          Date birthday) {
         try {
          Person person = new Person();
          person.setName(name);
          person.setSex(sex);
          person.setAge(Short.valueOf(age));
          person.setBirthday(birthday);
          em.persist(person);
         } catch (Exception e) {
          e.printStackTrace();
          return false;
         }
         return true;
        }
       
        public Person getPersonByID(int personid) {
         return em.find(Person.class, Integer.valueOf(personid));
        }
       
        public boolean updatePerson(Person person) {
         try {
          em.merge(person);
         } catch (Exception e) {
          e.printStackTrace();
          return false;
         }
         return true;
        }
       
        public List getPersonList(int max, int whichpage) {
         try {
          int index = (whichpage - 1) * max;
          Query query = em.createQuery("from Person p order by personid asc");
          List list = query.setMaxResults(max).setFirstResult(index)
            .getResultList();
          em.clear();// 分离内存中受EntityManager管理的实体bean,让VM进行垃圾回收
          return list;
         } catch (Exception e) {
          e.printStackTrace();
          return null;
         }
        }
       }
5.类似 Hibernate  中开发 POJO 一样开发 EntityBean,不同的就是把 ORM 的 mapping file 改用在 code 中加入注释,效果类似!如果你学习过 jdo,ojb,hibernate,ibatis 等等你很容易上手!
     package org.jpa.test;
       
       import java.io.Serializable;
       import java.util.Date;
       
       import javax.persistence.Column;
       import javax.persistence.Entity;
       import javax.persistence.GeneratedValue;
       import javax.persistence.GenerationType;
       import javax.persistence.Id;
       import javax.persistence.Table;
       import javax.persistence.Temporal;
       import javax.persistence.TemporalType;
       
       @SuppressWarnings("serial")
       @Entity
       @Table(name = "person")
       public class Person implements Serializable {
        private Integer personid;
        private String name;
        private boolean sex;
        private Short age;
        private Date birthday;
       
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        public Integer getPersonid() {
         return personid;
        }
       
        public void setPersonid(Integer personid) {
         this.personid = personid;
        }
       
        @Column(name = "PersonName", nullable = false, length = 32)
        public String getName() {
         return name;
        }
       
        public void setName(String name) {
         this.name = name;
        }
       
        @Column(nullable = false)
        public boolean getSex() {
         return sex;
        }
       
        public void setSex(boolean sex) {
         this.sex = sex;
        }
       
        @Column(nullable = false)
        public Short getAge() {
         return age;
        }
       
        public void setAge(Short age) {
         this.age = age;
        }
       
        @Temporal(value = TemporalType.DATE)
        public Date getBirthday() {
         return birthday;
        }
       
        public void setBirthday(Date birthday) {
         this.birthday = birthday;
        }
       }
       

本文转自BlogJava 新浪blog的博客,原文链接:JBOSS+EJB3之Entity 开发实例,如需转载请自行联系原博主。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java 关系型数据库 应用服务中间件
|
关系型数据库 Linux 应用服务中间件
云端App开发:如何在容器中运行JBoss BRMS
本文讲的是云端App开发:如何在容器中运行JBoss BRMS【编者的话】本文介绍了在Red Hat上安装容器化JBoss BRMS的步骤,是系列文章中的一部分,建议浏览文章中的相关链接介绍。
1401 0
|
Web App开发 Java 应用服务中间件
jboss上的soap web service开发示例
以下示例,由jboss quickstart示例代码得来: 一、创建一个常规的dynamic web项目,建议支持maven ,项目的关键属性参考下图: 二、定义服务接口及参数对象 HelloWorldService 1 package org.
872 0
|
应用服务中间件 Android开发 容器
eclipse + JBoss 5 + EJB3开发指南(7):实现Entity Bean的一对一(one-to-one)映射
本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(6):编写第一个实体Bean程序     一对一映射是很常用的。
1084 0
|
应用服务中间件 Android开发 Java
eclipse + JBoss 5 + EJB3开发指南(8):实现Entity Bean的一对多(one-to-many)映射
本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(7):实现Entity Bean的一对一(one-to-one)映射     EJB3的一对多映射使用@OneToMany来设置,如果是双向的一对多映射,在many方需要使用@ManyToOne设置。
1108 0
|
应用服务中间件 Android开发 Java
eclipse + JBoss 5 + EJB3开发指南(9):实现Entity Bean的多对多(many-to-many)映射
本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(8):实现Entity Bean的一对多(one-to-many)映射     在EJB3中需要使用@ManyToMany对封装多对多关系的字段或getter方法进行注释。
918 0