struts+spring+hibernate感悟(轉載)

polalisi發表於2009-03-10
三者的結合堪稱完美,整合三者關鍵是配置檔案
1.web.xml
用於web伺服器裝載過濾器,servlet,以及配置檔案
struts
在此被裝載org.apache.struts.action.ActionServlet,還有它的配置引數config檔案struts-config.xmlspring在此被裝載org.springframework.web.context.ContextLoaderServlet還有它的配置檔案applicationContext.xml,其他省略不列出例子:

contextConfigLocation
/WEB-INF/applicationContext.xml
action

org.apache.struts.action.ActionServlet


config
/WEB-INF/struts-config.xml

1


context

org.springframework.web.context.ContextLoaderServlet

1


<!-- Action Servlet Mapping --&gt

action
*.do
2.struts-config.xml這個檔案這個是strust專有配置檔案,配置form,全域性轉發,action,message-resources(用於顯示提示資訊),外掛格式如下:


.....



.......


type="org.springframework.web.struts.DelegatingActionProxy" name="logonform"
input="/login.jsp" scope="request" validate="true">

.....

......




value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml" />

className="org.springframework.web.struts.ContextLoaderPlugIn">
value="/WEB-INF/applicationContext.xml" />

3.applicationContext.xml這個是spring的專有配置檔案,裡面配置代理hibernate資源和strutsaction格式如下:

class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">

com.microsoft.jdbc.sqlserver.SQLServerDriver

jdbc:microsoft:sqlserver://127.0.0.1:1400;DatabaseName=books


sa


123


class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">






com/binghe/hibernate/booktype/BookType.hbm.xml


com/binghe/hibernate/book/Book.hbm.xml






org.hibernate.dialect.SQLServerDialect

false


class="org.springframework.orm.hibernate3.HibernateTransactionManager">



class="com.binghe.spring.booktype.BookTypeDAOImp">




class="com.binghe.spring.book.BookDAOImp">







class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">








PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED,readOnly



class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">








PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED,readOnly



class="com.binghe.struts.action.booktype.BookTypeAction"
singleton="false">




class="com.binghe.struts.action.book.BookAction"
singleton="false">




4.hibernate的配置檔案為POJOClassName.hbm.xmlPOJOClassName是你定義的一個javabean,你可以把這個配置檔案放在和pojobean一個目錄下,也可以放在其他目錄,然後引用,格式如下:



not-null="false" />
not-null="false" />
not-null="false" />
not-null="false" />
insert="false" update="false">


class="com.binghe.hibernate.readertype.ReaderType" insert="false"
update="false">


inverse="true" cascade="none">

class="com.binghe.hibernate.borrowbill.BorrowBill" />

上面的所有配置資訊是我從自己做的一個專案中抽取出來的spring中的依賴注入/控制反轉是不錯的,你可以定義任何介面,然後實現介面裡面的方法,透過spring的配置檔案把你的介面注入到任何地方,前提是你引用的必須是介面,在引用的地方必須有介面定義以及getter方法,不過你可以把這個介面當作類似javabean的一個屬性一樣來使用,javabean都有gettersetter方法的
spring
裡面的事務代理也挺挺不錯的


target它是指向要注入的類,代理這個類所實現的介面


PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED
PROPAGATION_REQUIRED,readOnly
PROPAGATION_REQUIRED,readOnly

transactionAttributes是對所代理的方法哪些方法提供事務,比如你定義一個以add開頭的方法,那它就可以有事務管理了,對於它裡面的所有操作,都可以實現事務機制,若有異常就回滾事務
hibernate
的對映機制是orm,物件導向的資料庫查詢,查詢時必須提供查詢類(如find方法"from Book"hql語句中的Book不是表名而是類名),以得到它的例項,對應資料庫的javabean的屬性必須都是物件型的,intdouble必須定義為IntegerDouble型別,對映表有個lazy屬性應該設定false,不然在查詢資料庫後載入一條記錄時會報錯。一對多雙相關聯:一對多對映,複雜 inverse="true" cascade="none">

class="com.binghe.hibernate.borrowbill.BorrowBill" />
cascade屬性不好用,如果有刪除記錄操作時我都把它設定成none值,雙方都要設定,否則報錯,因為沒法相互通知
多對一對映,簡單


[@more@])

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10455649/viewspace-1018433/,如需轉載,請註明出處,否則將追究法律責任。

相關文章