走在架構師的大道上 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 閱讀(3820) 評論(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如何操作呢  回復  更多評論
            

          主站蜘蛛池模板: 南漳县| 泽库县| 施秉县| 融水| 湟中县| 莒南县| 富锦市| 天全县| 泾川县| 阜城县| 长垣县| 钦州市| 青海省| 修武县| 西峡县| 清丰县| 清镇市| 天祝| 陇川县| 丘北县| 商丘市| 固安县| 禄劝| 会理县| 福泉市| 饶平县| 二连浩特市| 肥西县| 迭部县| 巢湖市| 洛川县| 东港市| 平远县| 扎鲁特旗| 紫金县| 高雄市| 响水县| 大丰市| 桂阳县| 大足县| 屏山县|