S2S3H4框架深度集成搭建(4) hibernate Mapping 的配置分離

上面一篇文章講到了集成hibernate4,主要是就如何在spring3的環境下如何配置的問題,忽然發現,hibernate的映射文件在sessionFactory的配置內,也和hibernateProperties的配置在一塊兒,sessionFactory是hibernate的核心配置,開發人員不該該也不必總去看到這個文件,而開發人員又必須添加不少的entity的映射文件。在這個操做中,若是有任何的誤操做,損失仍是滿大的,與是如何把常常會頻繁操做的hibernate-mapping內容從SessionFactory的配置中分離出去就成了一個良好的框架設計的當務之急的選擇。因而動手,其實很簡單,在spring的ioc環境下,這一些都變的是那麼的優雅。spring

首先:編寫IMapping接口:sql

  
  
  
  
  1. public interface IMapping  
  2. {  
  3.     public String[] getMappingResources();  

而後寫實現:session

  
  
  
  
  1. public class HibernateMappingImpl implements IMapping  
  2. {  
  3.     private String[] mappingResources;  
  4.  
  5.     public String[] getMappingResources()  
  6.     {  
  7.         return mappingResources;  
  8.     }  
  9.  
  10.     public void setMappingResources(String[] mappingResources)  
  11.     {  
  12.         this.mappingResources = mappingResources;  
  13.     }  

而後編寫類去繼承LocalSessionFactoryBean:app

  
  
  
  
  1. public class XKLocalSessionFactoryBean extends LocalSessionFactoryBean  
  2. {  
  3.     private IMapping iMapping;  
  4.  
  5.     public IMapping getiMapping()  
  6.     {  
  7.         return iMapping;  
  8.     }  
  9.  
  10.     public void setiMapping(IMapping iMapping)  
  11.     {  
  12.         this.iMapping = iMapping;  
  13.         super.setMappingResources(iMapping.getMappingResources());  
  14.     }  

到這你們也許都看明白了。 框架

下面將這些類配置到相關配置中去:ide

sessionFactory的配置改成:學習

  
  
  
  
  1. <bean id="sessionFactory" class="com.xk.commons.config.XKLocalSessionFactoryBean"> 
  2.         <property name="dataSource" ref="dataSource"/> 
  3.         <property name="iMapping" ref="hibernateMapping"> 
  4.         </property> 
  5.         <property name="hibernateProperties"> 
  6.             <props> 
  7.                 <prop key="hibernate.show_sql">true</prop> 
  8.                 <prop key="hibernate.format_sql">false</prop> 
  9.                 <prop key="hibernate.jdbc.use_scrollable_resultset">false</prop> 
  10.                 <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop> 
  11.                 <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>   
  12.             </props> 
  13.         </property> 
  14.     </bean>   

對應的已經換成咱們本身實現的com.xk.commons.config.XKLocalSessionFactoryBean, 而原來的 mappingResources 的屬性配置,也換成了<property name="iMapping" ref="hibernateMapping"> 引用的是個類,就是咱們本身定義的那個IMapping接口的類,咱們單獨的新建一個文件: hibernate-mapping.xml,之後的實體映射的配置,就不用去核心的配置裏添加修改了,就都到這個項目級別的文件中去修改,下面看這個類的配置:this

  
  
  
  
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <beans xmlns="http://www.springframework.org/schema/beans" 
  3.        xmlns:aop="http://www.springframework.org/schema/aop" 
  4.        xmlns:tx="http://www.springframework.org/schema/tx" 
  5.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  6.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  8.            http://www.springframework.org/schema/tx   
  9.            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  10.            http://www.springframework.org/schema/aop   
  11.            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 
  12.              
  13.              
  14.     <bean id="hibernateMapping" class="com.xk.commons.config.HibernateMappingImpl"> 
  15.         <property name="mappingResources"> 
  16.             <list> 
  17.                 <value>com/xk/model/XkBaseCity.hbm.xml</value> 
  18.                 <value>com/xk/model/XkBaseProvince.hbm.xml</value> 
  19.                 <value>com/xk/model/XkSystemDate.hbm.xml</value> 
  20.                 <value>com/xk/model/XkTrain.hbm.xml</value> 
  21.             </list> 
  22.         </property> 
  23.     </bean>     
  24. </beans> 

看看,乾淨明瞭,給開發人員培訓的時候,能夠叫他們忽略掉,那些核心配置的內容,只須要叫他們知道開發的規則,和如何作就ok了,能夠大大的下降開發人員的學習成本和技術要求。spa

相關文章
相關標籤/搜索