posts - 15,  comments - 8,  trackbacks - 0
          1. web.xml 配置
             1. <context-param>  
             2.     
          <param-name>contextConfigLocation</param-name>  
             3.     
          <param-value>  
             4.         /WEB-INF/applicationContext.xml  
             5.         
          <!--classpath*:/spring-config/applicationContext.xml-->  
             6.     
          </param-value>  
             7. 
          </context-param>  
             8. 
          <!-- hibernate open session in view -->  
             9. 
          <filter>   
            10.     
          <filter-name>hibernateFilter</filter-name>  
            11.     
          <filter-class>  
            12.         org.springframework.orm.hibernate3.support.OpenSessionInViewFilter  
            13.     
          </filter-class>  
            14. 
          </filter>     
            15.   
            16. 
          <!-- 編碼 -->  
            17. 
          <filter>   
            18.     
          <filter-name>encodingFilter</filter-name>  
            19.     
          <filter-class>  
            20.         org.springframework.web.filter.CharacterEncodingFilter  
            21.     
          </filter-class>  
            22.     
          <init-param>  
            23.         
          <param-name>encoding</param-name>  
            24.         
          <param-value>UTF-8</param-value>  
            25.     
          </init-param>  
            26.     
          <init-param>  
            27.         
          <param-name>forceEncoding</param-name>  
            28.         
          <param-value>true</param-value>  
            29.     
          </init-param>  
            30. 
          </filter>     
            31. 
          <!-- hibernate open session in view -->  
            32. 
          <filter-mapping>    
            33.     
          <filter-name>hibernateFilter</filter-name>  
            34.     
          <url-pattern>/*<url-pattern>     
            35. 
          </filter-mapping>    
            36. 
          <!-- 編碼 -->  
            37. 
          <filter-mapping>    
            38.     
          <filter-name>encodingFilter</filter-name>  
            39.     
          <url-pattern>*.jsp<url-pattern>     
            40. 
          </filter-mapping>  
            41.   
            42. 
          <listener>  
            43.     
          <listener-class>  
            44.         org.springframework.web.context.ContextLoaderListener  
            45.     
          </listener-class>  
            46. 
          </listener>  
            47.   
            48. 
          <listener>  
            49.     
          <listener-class>  
            50.         org.springframework.web.context.request.RequestContextListener  
            51.     
          </listener-class>  
            52. 
          </listener>  
            53.   
            54. 
          <!-- 要負責處理由  JavaBeans Introspector的使用而引起的緩沖泄露 -->  
            55. 
          <listener>  
            56.     
          <listener-class>  
            57.         org.springframework.web.util.IntrospectorCleanupListener  
            58.     
          </listener-class>  
            59. 
          </listener> 
          2.applicationContext.xml 配置
          對于dataSource就省略了 可以使用c3p0連接池

             1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
             2.     
          <property name="dataSource" ref="dataSource"/>  
             3.     
          <property name="annotatedClasses" ref="annotatedClasses"/>  
             4.     
          <property name="hibernateProperties" ref="hibernateProperties"/>  
             5. 
          </bean>  
             6.   
             7. 
          <bean name="hibernateProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">  
             8.     
          <property name="properties">  
             9.         
          <props>  
            10.             
          <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
            11.             
          <prop key="hibernate.show_sql">true</prop>  
            12.             
          <prop key="hibernate.hbm2ddl.auto">none</prop>  
            13.             
          <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>  
            14.             
          <prop key="hibernate.cache.use_query_cache">true</prop>  
            15.             
          <prop key="hibernate.default_batch_fetch_size">30</prop>  
            16.         
          </props>  
            17.     
          </property>  
            18. 
          </bean>  
            19.   
            20. 
          <!-- annotation table 類 -->  
            21. 
          <bean id="annotatedClasses" class="org.springframework.beans.factory.config.ListFactoryBean">  
            22.     
          <property name="sourceList">  
            23.         
          <list>  
            24.             
          <value>com.bask.model.Promotion</value>  
            25.             
          <value>com.bask.model.PromotionGroup</value>  
            26.             
          <value>com.bask.model.Largess</value>  
            27.         
          </list>  
            28.     
          </property>  
            29. 
          </bean>  
            30.   
            31. 
          <!-- 事務 begin -->  
            32. 
          <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
            33.     
          <property name="sessionFactory" ref="sessionFactory" />  
            34. 
          </bean>  
            35.   
            36. 
          <!-- 支持 @Transactional -->  
            37. 
          <tx:annotation-driven/>  
            38.   
            39. 
          <!-- 支持 @AspectJ -->  
            40. 
          <aop:aspectj-autoproxy/>  
            41.   
            42. 
          <!-- 以AspectJ方式定義AOP -->  
            43. 
          <aop:config proxy-target-class="true">    
            44.     
          <aop:advisor pointcut="execution(* com.bask.service.*Manager.*(..))" advice-ref="txAdvice"/>    
            45. 
          </aop:config>  
            46.   
            47. 
          <tx:advice id="txAdvice" transaction-manager="transactionManager">  
            48.     
          <tx:attributes>  
            49.         
          <!-- 以get 、 find 開頭的方法是只讀事務 -->  
            50.         
          <tx:method name="get*" read-only="true" />  
            51.         
          <tx:method name="find*" read-only="true" />  
            52.         
          <!-- 其他方法是默認 -->  
            53.         
          <tx:method name="save*" />  
            54.     
          </tx:attributes>  
            55. 
          </tx:advice>  
            56. 
          <!-- 事務 end -->  
            57.   
            58. 
          <context:annotation-config/>  
            59. 
          <!-- service下是spring使用注解 -->  
            60. 
          <context:component-scan base-package="com.bask.service"/> 
          3.說明
          在這里我們將會根據class生產數據庫表
          自動創建|更新|驗證數據庫表結構
             1. <prop key="hibernate.hbm2ddl.auto">none</prop>  
             2. 
          <!-- auto 可以有create update and none 等--> 

          接下來是Hibernate Annotation使用筆記
             1. @Entity                         --聲明為一個實體bean  
             
          2. @Table(name="promotion_info")   --為實體bean映射指定表(表名="promotion_info)  
             3. @Id                             --聲明了該實體bean的標識屬性  
             
          4. @GeneratedValue                 --可以定義標識字段的生成策略.  
             
          5. @Transient                      --將忽略這些字段和屬性,不用持久化到數據庫  
             
          6. @Column(name="promotion_remark")--聲明列(字段名="promotion_total") 屬性還包括(length=200等)  
             
          7. @Temporal(TemporalType.TIMESTAMP)--聲明時間格式  
             
          8. @Enumerated                     --聲明枚舉  
             
          9. @Version                        --聲明添加對樂觀鎖定的支持  
            
          10. @OneToOne                       --可以建立實體bean之間的一對一的關聯  
            
          11. @OneToMany                      --可以建立實體bean之間的一對多的關聯  
            
          12. @ManyToOne                      --可以建立實體bean之間的多對一的關聯  
            
          13. @ManyToMany                     --可以建立實體bean之間的多對多的關聯  
            
          14. @Formula                        --一個SQL表達式,這種屬性是只讀的,不在數據庫生成屬性(可以使用sum、average、max等) 
          以上是基本常用注解,下面是例子說明
             1. @Entity  
             
          2. @Table(name="promotion_info")  
             
          3public class Promotion implements Serializable {  
             
          4.   
             
          5.     //AUTO--可以是identity類型的字段,或者sequence類型或者table類型,取決于不同的底層數據庫  
             6.     @Id   
             
          7.     @GeneratedValue(strategy = GenerationType.AUTO)  
             
          8.     private Long id;  
             
          9.   
            
          10.     @Column(name="group_start_amount")  
            
          11.     private Integer groupStartAmount=0;  
            
          12.       
            
          13.     @Column(name="promotion_remark",length=200)  
            
          14.     //@Lob 如果是文章內容可以使用 只需要把length=200去掉就可以了  
            15.     private String remark;  
            
          16.     //DATE      - java.sql.Date  
            17.     //TIME      - java.sql.Time  
            18.     //TIMESTAMP - java.sql.Timestamp  
            19.     @Temporal(TemporalType.TIMESTAMP)  
            
          20.     @Column(name="start_time")  
            
          21.     private Date startTime;  
            
          22.   
            
          23.     //顯示0 隱藏1  
            24.     public static enum DisplayType {  
            
          25.         顯示,隱藏  
            
          26.     }  
            
          27.     @Enumerated(value = EnumType.ORDINAL)//ORDINAL序數  
            28.     private DisplayType displayType = DisplayType.顯示;  
            
          29.   
            
          30.     @Version  
            
          31.     private Integer version;  
            
          32.   
            
          33.     //CascadeType.PERSIST   -- 觸發級聯創建(create)  
            34.     //CascadeType.MERGE     -- 觸發級聯合并(update)  
            35.     //FetchType.LAZY        -- 延遲加載  
            36.     @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE},fetch = FetchType.LAZY)  
            
          37.     private PromotionGroup promotionGroup;  
            
          38.   
            
          39.     //單向ManyToMany  
            40.     //@JoinTable(關聯的表名)  
            41.     //joinColumns -- promotion關聯的列的外鍵  
            42.     //inverseJoinColumns -- largess 關聯列的外鍵  
            43.     @ManyToMany(cascade = {CascadeType.PERSIST,CascadeType.MERGE})  
            
          44.     @JoinTable(name="promotion_largess",joinColumns={@JoinColumn(name="promotion_id")},inverseJoinColumns={@JoinColumn(name="largess_id")})  
            
          45.     private Set<Largess> largess;   
            
          46.   
            
          47.     //get set 省略.  
            48.   
            
          49. }  
            
          50. @Entity  
            
          51. @Table(name="promotion_group")  
            
          52public class PromotionGroup implements Serializable {  
            
          53.     @Id   
            
          54.     @GeneratedValue(strategy = GenerationType.AUTO)  
            
          55.     private Long id;  
            
          56.       
            
          57.     //mappedBy的值"promotionGroup"指向owner(Promotion)端的關聯屬性,并且是雙向關系  
            58.     @OneToMany(mappedBy="promotionGroup",cascade=CascadeType.ALL)  
            
          59.     private List<Promotion> promotion;  
            
          60.   
            
          61.     //get set 省略.  
            62. }  
            
          63. @Entity  
            
          64. @Table(name="largess")  
            
          65public class Largess implements Serializable {  
            
          66.     @Id   
            
          67.     @GeneratedValue(strategy = GenerationType.AUTO)  
            
          68.     private Long id;  
            
          69.   
            
          70.     //1.sql語句中的字段和表名都應該和數據庫相應,而不是類中的字段,  
            71.     //若帶有參數如la.id= id,這個=id才是類中屬性  
            72.     //2.操作字段一定要用別名  
            73.     @Formula(select max(la.id) from largess as la)  
            
          74.     private int maxId;  
            
          75.   
            
          76.     @Formula(select COUNT(la.id) from largess la)  
            
          77.     private int count;  
            
          78.   
            
          79.     @Transient  
            
          80.     private String img  
            
          81.   
            
          82.     //get set 省略.  
            83. } 

          posted on 2008-08-31 00:36 lvq810 閱讀(2081) 評論(0)  編輯  收藏 所屬分類: Open Framekwork
          主站蜘蛛池模板: 文水县| 乐亭县| 乌什县| 古田县| 呼玛县| 九龙城区| 乡城县| 霸州市| 革吉县| 宁乡县| 延安市| 新源县| 紫云| 德惠市| 宝清县| 大余县| 昌都县| 米易县| 双牌县| 长垣县| 上杭县| 讷河市| 平乡县| 白银市| 师宗县| 潼南县| 芦溪县| 博乐市| 深水埗区| 秭归县| 丰顺县| 浑源县| 阳信县| 大兴区| 崇仁县| 郁南县| 碌曲县| 视频| 铁力市| 邵武市| 三亚市|