做OA這個項目有一段時間了,下面我來講講OA這個項目的架構。OA這個項目整體採用SSH來實現的,即spring、struts、hibernate。在這個架構中,我們需要通過hibernate實現數據持久化,通過hibernate維護實體之間的依賴關係;spring實現容器管理,管理各個bean,這裏我們通過註解的方式實現容器注入,容器管理;採用上struts實現對於業務的管理.在項目架構的過程中需要實現的spring和hibernate的融合,spring和struts融合。
一、spring和hibernate融合:
在applicationContext中設置數據庫連接(本地使用):
<span style="font-size:14px;"><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<!-- 配置C3P0連接池 -->
<property name="dataSource">
<bean class="com.mchange.v2.c3p0.ComboPooledDataSourc">
<property name="jdbcUrl" value=""></property>
<property name="driverClass" value=""></property>
<property name="user" value=""></property>
<property name="password" value=""></property>
<!-- 其他配置 -->
<!-- 初始化時獲取是哪個連接,取值印在minpoolSize和maxPoolSize之間,Default:3 -->
<property name="initialPoolSize" value="3"/>
<!-- 連接池中保存的最小連接數,default:3 -->
<property name="minpoolSize" value="3"/>
<!-- 連接池中保存的最大連接數,default:3 -->
<property name="maxPoolSize" value="3"/>
<!-- 當連接池中的連接耗盡的時候,C3P0一次同事獲取的連接數,Default:3 -->
<property name="acquireIncrement" value="3"/>
<!-- 控制數據源內加載的PreparedStatements數量,如果maxStatements與maxStatementsPerConnection均爲0,則緩存被關閉 -->
<property name="maxStatements" value="8"/>
<!-- maxStatementsPerConnetion定義了連接池內單個連接所擁有的最大緩存statements數,default:0 -->
<property name="maxStatementsPerConnetion" value="3"/>
<!-- 最大空閒時間,1800秒內未被使用則連接被丟棄,default:0 -->
<property name="maxIdleTime" value="1800"/>
</bean>
</property>
</bean> </span>
好處:實現容器管理sessionfactory對象,是我們的sessionfactory是一個單例對象,在使用的時候實現的對象的一致性。才外可以使用聲明式事務,只要寫一個註解就能開啓事務,非常簡便!
二、spring和struts的融合,實現實現容器管理action
1.在web.xml添加對applicationContext的核心監聽
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
2.添加jar包:Struts2-spring-plugin-2.1.8.1.jar
三、在架構的時候需要注意的小細節:
(1)注意文件掃描範圍
<span style="font-size:14px;"> <context:component-scan base-package="cn.itcast.oa"></context:component-scan></span>
(2)因爲spring和hibernate融合後,sessionFactory交給容器管理,所以在字符集設置應該寫在數據庫連接文件jdbc.properties
jdbcUrl = jdbc\:mysql\:///itcastoa11?useUnicode\=true&characterEncoding\=UTF-8