JBOSS+EJB3之Entity 开发实例-阿里云开发者社区

开发者社区> 青夜之衫> 正文

JBOSS+EJB3之Entity 开发实例

简介:
+关注继续查看

        我用的是 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 开发实例,如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9435 0
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26715 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2918 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
11169 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9030 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
4617 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
21872 0
+关注
1040
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载