My-java-spark

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            5 Posts :: 0 Stories :: 4 Comments :: 0 Trackbacks

             Spring為應用程序提供一個容器, 為應用程序的管理帶來了方便. 它與hibernate的結合, 形成一個完整的后臺體系, 也是當今應用開發流行的做法. 奮斗了一個晚上, 終于把hibernate3與spring整合了起來, hibernate2.x和hibernate3與spring的結合稍有不同, 關鍵是引入的spring的包的不同, 下面我會標識出來.

          Spring 的配置文件applicationContext.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "spring" "../../../lib/spring-beans.dtd" >
          <beans default-autowire="no" default-dependency-check="none" default-lazy-init="false">

          <!-- 
             配置數據源
             注意: 用org.apache.commons.dbcp.BasicDataSource, 要引入 apache commons 
             的commons-collections-3.1.jar, commons-dbcp-1.2.1.jar, commons-pool-1.2.jar三個包
           
          -->
           
          <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            
          <property name="driverClassName">
             
          <value>org.gjt.mm.mysql.Driver</value>
            
          </property>
            
          <property name="url">
             
          <value>jdbc:mysql://localhost/sparkcrm</value>
            
          </property>
            
          <property name="username">
             
          <value>root</value>
            
          </property>
            
          <property name="password">
             
          <value>1111</value>
            
          </property>
           
          </bean>

           
          <!-- 配置sessionFactory, 注意這里引入的包的不同  -->
           
          <bean id="sessionFactory"
            class
          ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            
          <property name="dataSource">
             
          <ref local="dataSource" />
            
          </property>
            
          <property name="mappingResources">
             
          <list>
               
          <value>com/sparkcrm/schema/entities/Lead.hbm.xml</value>
              
          </list>
            
          </property>
            
          <property name="hibernateProperties">
             
          <props>
              
          <prop key="hibernate.dialect">
               org.hibernate.dialect.MySQLDialect
              
          </prop>
              
          <prop key="hibernate.show_sql">true</prop>
             
          </props>
            
          </property>
           
          </bean>
           
            <!-- 配置transactionManager, 注意這里引入的包的不同  -->
           
          <bean id="transactionManager" 
            class
          ="org.springframework.orm.hibernate3.HibernateTransactionManager">
            
          <property name="sessionFactory">
             
          <ref local="sessionFactory" />
            
          </property>
           
          </bean>

          <--事務代理在這里配置, 這里省略了 -->

           
          <bean id="leadDAO" class="com.sparkcrm.schema.dao.LeadDao">
            
          <property name="sessionFactory">
             
          <ref local="sessionFactory" />
            
          </property>
           
          </bean>

          </beans>



          一個示例的hibernate的映射文件

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE hibernate-mapping PUBLIC 
              "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
          >
              
          <hibernate-mapping package="com.sparkcrm.schema.entities">
                
             <!-- 我在這里用了hibernate的動態模型(dynamic models) , 沒用pojo-->
              
          <class entity-name="Lead" table="Lead">
                  
          <id name="id" column="id" type="string">
                      
          <generator class="uuid.hex"/>
                  
          </id>
                  
          <property name="companyName" type="string"/>
                  
          <property name="topic" type="string"/>
                  
          <property name="contactName" type="string"/>
              
          </class>
          </hibernate-mapping>


          DAO代碼:

          import java.util.Map;
          /**
             * DAO接口
             */
          public interface IDAO {

              String create(Map
          <String, Object> map);
              
              
          void update(Map<String, Object> map);
              
              Map
          <String, Object> delete(String id);
              
              boolean share(String id, String userId, 
          int rights);
              
              boolean assign(String id, String userId);
          }



          import java.util.Map;

          import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

          import com.sparkcrm.schema.IDAO;
          import com.sparkcrm.schema.Schema;
          import com.sparkcrm.schema.metadata.Lead;
          /**
              *一個示例的DAO實現, 繼承HibernateDaoSupport, 用spring帶來的管理session等的便利
              */
          public
           class LeadDao extends HibernateDaoSupport implements IDAO {

              
          public String create(Map<String, Object> map) {
                  getHibernateTemplate().saveOrUpdate(Schema.LEAD, map);
                  
          return (String) map.get(Lead.ID);
              }


              public
           void update(Map<String, Object> map) {
                  
              }


              public
           Map<String, Object> delete(String id) {
                  
          return null;
              }


              public
           boolean share(String id, String userId, int rights) {
                  
          return false;
              }


              public
           boolean assign(String id, String userId) {
                  
          return false;
              }


          }

          示意性的測試代碼:

          import java.sql.Timestamp;
          import java.util.Date;
          import java.util.HashMap;
          import java.util.Map;

          import junit.framework.TestCase;

          import org.springframework.context.support.ClassPathXmlApplicationContext;

          import com.sparkcrm.schema.IDAO;

          public class testLeadDAO extends TestCase {
              
              ClassPathXmlApplicationContext ctx 
          = null;
              
              
          public void setUp(){
                  ctx 
          = new ClassPathXmlApplicationContext("applicationContext.xml");
              }

              
              
          public void testCreateLead(){
                   IDAO leadDao 
          = (IDAO) ctx.getBean("leadDAO");

                  Map
          <String, Object> map = new HashMap<String, Object>();
                  map.put(
          "companyName""Spark Ltd.");
                  map.put(
          "topic""This is a Good Lead!");
                  map.put(
          "contactName""abcd");
                  
                  String id 
          = leadDao.create(map);
                  System.
          out.println(id);
              }

          }

          posted on 2005-09-14 23:16 spark 閱讀(3768) 評論(1)  編輯  收藏

          評論

          # re: Hibernate3與spring的整合應用 2008-09-03 15:57
          中華民國  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临高县| 泸西县| 厦门市| 玉龙| 永吉县| 桐庐县| 上犹县| 泾阳县| 嘉义县| 余姚市| 东明县| 丹巴县| 澄城县| 中宁县| 出国| 丰镇市| 许昌县| 固始县| 五常市| 太保市| 钦州市| 叙永县| 二手房| 东源县| 清丰县| 伊宁市| 奉化市| 日喀则市| 昭通市| 临城县| 清镇市| 榆社县| 类乌齐县| 无锡市| 黄龙县| 六安市| 谢通门县| 右玉县| 奉化市| 金寨县| 阜南县|