<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dict.CN 在線詞典, 英語學習, 在線翻譯

    都市淘沙者

    荔枝FM Everyone can be host

    統計

    留言簿(23)

    積分與排名

    優秀學習網站

    友情連接

    閱讀排行榜

    評論排行榜

    struts+spring+hibernate感悟 (轉)

    三者的結合堪稱完美
    整合三者關鍵是配置文件
    1.web.xml
    用于 web 服務器裝載過濾器, servlet ,以及配置文件
    struts
    在此被裝載 org.apache.struts.action.ActionServlet ,還有它的配置參數 config 文件 struts-config.xml spring 在此被裝載 org.springframework.web.context.ContextLoaderServlet 還有它的配置文件 applicationContext.xml ,其他省略不列出
    例子:
    <context-param>
    ??<param-name>contextConfigLocation</param-name>
    ??<param-value>/WEB-INF/applicationContext.xml</param-value>
    ?</context-param>
    ?<servlet-name>action</servlet-name>
    ??<servlet-class>
    ???org.apache.struts.action.ActionServlet
    ??</servlet-class>
    ??<init-param>
    ???<param-name>config</param-name>
    ???<param-value>/WEB-INF/struts-config.xml</param-value>
    ??</init-param>
    ??<load-on-startup>1</load-on-startup>
    ?</servlet>
    ?<servlet>
    ??<servlet-name>context</servlet-name>
    ??<servlet-class>
    ???org.springframework.web.context.ContextLoaderServlet
    ??</servlet-class>
    ??<load-on-startup>1</load-on-startup>
    ?</servlet>
    ?
    ?<!-- Action Servlet Mapping -->
    ?<servlet-mapping>
    ??<servlet-name>action</servlet-name>
    ??<url-pattern>*.do</url-pattern>
    ?</servlet-mapping>
    2.struts-config.xml 這個文件

    這個是 strust 專有配置文件,配置 form, 全局轉發, action,message-resources( 用于顯示提示信息 ) ,插件
    格式如下:
    <struts-config>
    ?<form-beans>
    ??<form-bean name="logonform" type="com.binghe.forms.LogonForm" />
    ? .....
    </form-beans>
    <global-forwards>
    ??<forward name="logon" path="/login.jsp" />
    ? .......
    </global-forwards>
    <action-mappings>
    ??<action path="/logon"
    ???type="org.springframework.web.struts.DelegatingActionProxy" name="logonform"
    ???input="/login.jsp" scope="request" validate="true">
    ???<forward name="logon" path="/login.jsp" />
    ?? .....
    ??</action>
    ? ......
    </action-mappings>
    <controller locale="true" />
    <message-resources parameter="com.binghe.struts.ApplicationResources" />
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    ??<set-property property="pathnames"
    ???value="/WEB-INF/validator-rules.xml,
    ??????????????????????????? /WEB-INF/validation.xml" />
    ?</plug-in>
    ?<plug-in
    ??className="org.springframework.web.struts.ContextLoaderPlugIn">
    ??<set-property property="contextConfigLocation"
    ???value="/WEB-INF/applicationContext.xml" />
    ?</plug-in>
    </struts-config>
    3.applicationContext.xml.xml?
    這個是 spring 的專有配置文件,里面配置代理 hibernate 資源和 struts
    action
    格式如下:

    <beans>
    ?<bean id="dataSource"
    ??class="org.apache.commons.dbcp.BasicDataSource"
    ??destroy-method="close">
    ??<property name="driverClassName">
    ???<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
    ??</property>
    ??<property name="url">
    ???<value>jdbc:microsoft:sqlserver://127.0.0.1:1400;DatabaseName=books</value>
    ??</property>
    ??<property name="username">
    ???<value>sa</value>
    ??</property>
    ??<property name="password">
    ???<value>123</value>
    ??</property>
    ?</bean>

    ?<bean id="sessionFactory"
    ??class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    ??<property name="dataSource">
    ???<ref local="dataSource" />
    ??</property>
    ??<property name="mappingResources">
    ???<list>
    ????<value>
    ?????com/binghe/hibernate/booktype/BookType.hbm.xml
    ????</value>
    ????<value>
    ?????com/binghe/hibernate/book/Book.hbm.xml
    ????</value>
    ??</list>
    ??</property>
    ??<property name="hibernateProperties">
    ???<props>
    ????<prop key="hibernate.dialect">
    ?????org.hibernate.dialect.SQLServerDialect
    ????</prop>
    ????<prop key="hibernate.show_sql">false</prop>
    ???</props>
    ??</property>
    ?</bean>
    ?<bean id="transactionManager"
    ??class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    ??<property name="sessionFactory">
    ???<ref local="sessionFactory" />
    ??</property>
    ?</bean>
    ?<bean id="bookTypeDAO"
    ??class="com.binghe.spring.booktype.BookTypeDAOImp">
    ??<property name="sessionFactory">
    ???<ref local="sessionFactory" />
    ??</property>
    ?</bean>
    ?<bean id="bookDAO"
    ??class="com.binghe.spring.book.BookDAOImp">
    ??<property name="sessionFactory">
    ???<ref local="sessionFactory" />
    ??</property>
    ??<property name="bookTypeDAO">
    ???<ref bean="bookTypeDAOProxy" />
    ??</property>
    ?</bean>
    ???<bean id="bookTypeDAOProxy"
    ??class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    ??<property name="transactionManager">
    ???<ref bean="transactionManager" />
    ??</property>
    ??<property name="target">
    ???<ref local="bookTypeDAO" />
    ??</property>
    ??<property name="transactionAttributes">
    ???<props>
    ????<prop key="add*">PROPAGATION_REQUIRED</prop>
    ????<prop key="update*">PROPAGATION_REQUIRED</prop>
    ????<prop key="delete*">PROPAGATION_REQUIRED</prop>
    ????<prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
    ????<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    ???</props>
    ??</property>
    ?</bean>
    ?<bean id="bookDAOProxy"
    ??class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    ??<property name="transactionManager">
    ???<ref bean="transactionManager" />
    ??</property>
    ??<property name="target">
    ???<ref local="bookDAO" />
    ??</property>
    ??<property name="transactionAttributes">
    ???<props>
    ????<prop key="add*">PROPAGATION_REQUIRED</prop>
    ????<prop key="update*">PROPAGATION_REQUIRED</prop>
    ????<prop key="delete*">PROPAGATION_REQUIRED</prop>
    ????<prop key="zhuxiao*">PROPAGATION_REQUIRED</prop>
    ????<prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
    ????<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    ???</props>
    ??</property>
    ?</bean>
    ??<bean name="/booktype"
    ??class="com.binghe.struts.action.booktype.BookTypeAction"
    ??singleton="false">
    ??<property name="bookTypeDAO">
    ???<ref bean="bookTypeDAOProxy" />
    ??</property>
    ?</bean>
    ?<bean name="/book"
    ??class="com.binghe.struts.action.book.BookAction"
    ??singleton="false">
    ??<property name="bookDAO">
    ???<ref bean="bookDAOProxy" />
    ??</property>
    ?</bean>
    ?</beans>
    4.hibernate 的配置文件為 POJOClassName.bhm.xml POJOClassName 是你定義的一個 javabean ,你可以把這個配置文件放在和 pojobean 一個目錄下,也可以放在其他目錄,然后引用,格式如下:

    <hibernate-mapping package="com.binghe.hibernate.reader">
    ?<class name="Reader" table="reader" lazy="false">
    ??<id name="id" column="id" type="integer">
    ???<generator class="native" />
    ??</id>
    ??<property name="code" column="code" type="string"
    ???not-null="false" />
    ??<property name="name" column="name" type="string"
    ???not-null="false" />
    ??<property name="userId" column="userid" type="integer"
    ???not-null="false" />
    ??<property name="typeId" column="typeid" type="integer"
    ???not-null="false" />
    ??<many-to-one name="user" class="com.binghe.utils.UserBean"
    ???insert="false" update="false">
    ???<column name="userid" />
    ??</many-to-one>
    ??<many-to-one name="readerType"
    ???class="com.binghe.hibernate.readertype.ReaderType" insert="false"
    ???update="false">
    ???<column name="typeid" />
    ??</many-to-one>
    ??<set name="borrowBills" lazy="false"
    ???inverse="true" cascade="none">
    ???<key column="readerid" />
    ???<one-to-many
    ????class="com.binghe.hibernate.borrowbill.BorrowBill" />
    ??</set>
    </hibernate-mapping>
    上面的所有配置信息是我從自己做的一個項目中抽取出來的

    spring 中的依賴注入 / 控制反轉是不錯的,你可以定義任何接口,然后實現接口里面的方法,通過 spring 的配置文件把你的接口注入到任何地方,前提是你引用的必須是接口,在引用的地方必須有接口定義以及 getter 方法,不過你可以把這個接口當作類似 javabean 的一個屬性一樣來使用, javabean 都有 getter setter 方法的
    spring
    里面的事務代理也挺挺不錯的
    <property name="target">
    ???<ref local="bookTypeDAO" />
    </property>
    target 它是指向要注入的類,代理這個類所實現的接口
    <property name="transactionAttributes">
    ???<props>
    ????<prop key="add*">PROPAGATION_REQUIRED</prop>
    ????<prop key="update*">PROPAGATION_REQUIRED</prop>
    ????<prop key="delete*">PROPAGATION_REQUIRED</prop>
    ????<prop key="check*">PROPAGATION_REQUIRED,readOnly</prop>
    ????<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
    ???</props>
    ??</property>
    transactionAttributes 是對所代理的方法哪些方法提供事務,比如你定義一個以 add 開頭的方法,那它就可以有事務管理了,對于它里面的所有操作,都可以實現事務機制,若有異常就回滾事務
    hibernate
    的映射機制是 orm ,面向對象的數據庫查詢,查詢時必須提供查詢類(如 find 方法 "from Book"hql 語句中的 Book 不是表名而是類名),以得到它的實例,對應數據庫的 javabean 的屬性必須都是對象型的, int double 必須定義為 Integer Double 類型,映射表有個 lazy 屬性應該設置 false ,不然在查詢數據庫后加載一條記錄時會報錯。一對多雙相關聯:
    一對多映射,復雜
    <set name="borrowBills" lazy="false"
    ???inverse="true" cascade="none">
    ???<key column="readerid" />
    ???<one-to-many
    ????class="com.binghe.hibernate.borrowbill.BorrowBill" />
    ??</set>
    cascade 屬性不好用,如果有刪除記錄操作時我都把它設置成 none 值,雙方都要設置,否則報錯,因為沒法相互通知

    多對一映射,簡單
    <many-to-one name="name" type="com.ClassName" update="false"?insert="false">
    <column name="nameId" />
    </many-to-one>
    ??

    posted on 2007-02-02 09:19 都市淘沙者 閱讀(275) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲免费视频网站| 国产午夜精品免费一区二区三区| 99免费视频观看| 亚洲日韩精品无码一区二区三区| 青青草国产免费国产是公开| 日韩精品免费电影| 激情无码亚洲一区二区三区| 日本19禁啪啪无遮挡免费动图| 涩涩色中文综合亚洲| 中文字幕无码免费久久99| 亚洲色欲色欲www| 妞干网免费视频观看| 亚洲国产精品免费观看| 青青青青青青久久久免费观看| 亚洲AV无码资源在线观看| 在线观看免费国产视频| 香蕉国产在线观看免费| 亚洲AV无码久久精品狠狠爱浪潮| 久久99热精品免费观看牛牛| 亚洲人成在久久综合网站| 成年大片免费视频| 午夜不卡AV免费| 久久久久亚洲精品影视| 免费无码AV片在线观看软件| 亚洲1区2区3区精华液| a级亚洲片精品久久久久久久| 免费看无码特级毛片| 亚洲视频在线免费看| 在线播放免费播放av片| 精品乱子伦一区二区三区高清免费播放| 亚洲精品无码永久在线观看你懂的| 99久热只有精品视频免费看| 亚洲 欧洲 日韩 综合在线| 亚洲精品天堂成人片?V在线播放| APP在线免费观看视频| 中文字幕亚洲综合小综合在线| 免费成人午夜视频| 50岁老女人的毛片免费观看| 亚洲精品动漫免费二区| 亚洲精品美女久久777777| 在线a级毛片免费视频|