走在架構(gòu)師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術(shù),軟件架構(gòu),領(lǐng)域建模,IT 項(xiàng)目管理 Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

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

          公告

          重構(gòu)
          新浪博客:新浪 blog
          MSN: wbjeasygo@163.com
          Email:  wbjeasygo@163.com
          QQ 精英群: 47763528 
          空間QQ空間

          淘寶店:新開淘寶書店
          致謝:
           感謝雷老師幾年的指導(dǎo)
           感謝導(dǎo)師在學(xué)業(yè)上的關(guān)懷,
           感謝老婆的支持,
           感謝我的同學(xué)和同事,
           在我成長(zhǎng)的路上有你

          留言簿(26)

          我參與的團(tuán)隊(duì)

          隨筆分類(232)

          隨筆檔案(190)

          我的鄰居們

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

                  我用的是 mysql 數(shù)據(jù)庫, EJB3.0 相對(duì)于2.0 變化蠻大的,真的是迫于 Spring+Hibernate 的逼式,ejb 3.0 已經(jīng)出現(xiàn)幾年了,自從她輕裝上陣,也不知道現(xiàn)在的應(yīng)用情況如何,不過本人認(rèn)為, ejb 3.0 是很有市場(chǎng)的。它的簡(jiǎn)潔和方便無疑是程序員的最佳選擇!

          1. 配置 JBOSS 數(shù)據(jù)源:
               如果你用默認(rèn)的數(shù)據(jù)源就不需要這么改動(dòng),默認(rèn)的是 Hsqldb。為了換成 mysql,而且把數(shù)據(jù)源的 JNDI 改成自己的名字,你需要如下配置:
                一、拷貝驅(qū)動(dòng)    
                       我啟動(dòng)的是 default !           

                       所以請(qǐng)保證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">
                      

           

           

                        另外這個(gè)文件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>


                   好了數(shù)據(jù)源配置方面已經(jīng)完成!可以開始動(dòng)手開發(fā)了!

          2.MyEclipse6 開發(fā) 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 如果有表結(jié)構(gòu)可以換成 update!
                                                                                                                        //相關(guān)詳細(xì)內(nèi)容請(qǐng)看書
                   </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 無狀態(tài)的會(huì)話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();// 分離內(nèi)存中受EntityManager管理的實(shí)體bean,讓VM進(jìn)行垃圾回收
                    return list;
                   } catch (Exception e) {
                    e.printStackTrace();
                    return null;
                   }
                  }
                 }
          5.類似 Hibernate  中開發(fā) POJO 一樣開發(fā) EntityBean,不同的就是把 ORM 的 mapping file 改用在 code 中加入注釋,效果類似!如果你學(xué)習(xí)過 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;
                  }
                 }
                





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

          Feedback

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

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

          # re: JBOSS+EJB3之Entity 開發(fā)實(shí)例 2008-06-04 10:06 懶人
          @Jack.Wang
          暈  回復(fù)  更多評(píng)論
            

          # re: JBOSS+EJB3之Entity 開發(fā)實(shí)例 2012-09-04 17:35 jpa開發(fā)者
          如果是sql2008如何操作呢  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 建宁县| 石景山区| 肥东县| 涟源市| 夏津县| 奇台县| 确山县| 布拖县| 聂荣县| 巢湖市| 英德市| 绥宁县| 北流市| 雷波县| 雷州市| 冷水江市| 蕲春县| 石城县| 郯城县| 怀化市| 三明市| 呼图壁县| 巴中市| 项城市| 西藏| 成都市| 瓦房店市| 榕江县| 伊金霍洛旗| 亳州市| 江门市| 中西区| 集安市| 保康县| 甘谷县| 深州市| 连江县| 海安县| 枣庄市| 西华县| 双城市|