<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    走在架構師的大道上 Jack.Wang's home

    Java, C++, linux c, C#.net 技術,軟件架構,領域建模,IT 項目管理 Dict.CN 在線詞典, 英語學習, 在線翻譯

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks

            我用的是 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;
            }
           }
          





    本博客為學習交流用,凡未注明引用的均為本人作品,轉載請注明出處,如有版權問題請及時通知。由于博客時間倉促,錯誤之處敬請諒解,有任何意見可給我留言,愿共同學習進步。
    posted on 2008-06-03 22:21 Jack.Wang 閱讀(3817) 評論(4)  編輯  收藏 所屬分類: 開發技術

    Feedback

    # re: JBOSS+EJB3之Entity 開發實例 2008-06-04 09:10 dancer
    前面的配置說明下是用來做什么的比較好,讓人感覺看后不明白個所以然!~~  回復  更多評論
      

    # re: JBOSS+EJB3之Entity 開發實例 2008-06-04 09:44 Jack.Wang
    呵呵,昨天不小心發布了草稿! 不好意思!  回復  更多評論
      

    # re: JBOSS+EJB3之Entity 開發實例 2008-06-04 10:06 懶人
    @Jack.Wang
    暈  回復  更多評論
      

    # re: JBOSS+EJB3之Entity 開發實例 2012-09-04 17:35 jpa開發者
    如果是sql2008如何操作呢  回復  更多評論
      

    主站蜘蛛池模板: 国产V亚洲V天堂无码久久久| 亚洲av麻豆aⅴ无码电影| 亚洲AV午夜成人片| 中文字幕一区二区免费| 亚洲日韩欧洲乱码AV夜夜摸| 久久九九免费高清视频| 国产AV无码专区亚洲AWWW| 国产免费久久久久久无码| 怡红院亚洲怡红院首页| 两个人看的www免费| 亚洲一区二区成人| 永久免费视频网站在线观看| 亚洲欧洲高清有无| 国产香蕉免费精品视频| 一本色道久久综合亚洲精品蜜桃冫 | 亚洲AV无码乱码麻豆精品国产| 99精品国产成人a∨免费看| 亚洲欧洲国产成人精品| 大陆一级毛片免费视频观看i| 精品久久久久久久久亚洲偷窥女厕| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 高清免费久久午夜精品| 国产亚洲一区二区手机在线观看| 在线观看免费视频一区| 亚洲综合色一区二区三区小说| 男男AV纯肉无码免费播放无码 | 亚洲午夜久久久影院伊人| 精品国产免费一区二区三区香蕉| 亚洲一级二级三级不卡| 毛片免费vip会员在线看| 日韩毛片免费一二三| 亚洲av无码成h人动漫无遮挡| 免费在线观看h片| 国产精品亚洲一区二区无码| 久久夜色精品国产亚洲av| 18禁黄网站禁片免费观看不卡| 亚洲精品久久久久无码AV片软件| 亚洲无码精品浪潮| 亚洲精品动漫免费二区| a级毛片免费网站| 亚洲中文字幕AV在天堂|