AOP註解方式java
JDBC模板技術mysql
Spring事務管理web
需求分析spring
技術分析之SSH框架開發的基本回想sql
技術分析之SSH三大框架需要的jar包數據庫
Struts2框架apache
Hibernate框架api
Spring框架markdown
技術分析之SSH三大框架需要的配置文件session
Struts2框架
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Hibernate框架
Spring框架
<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>
技術分析之Spring框架整合Struts2框架
編寫CustomerAction接收請求,在struts.xml中完畢Action的配置
<package name="crm" extends="struts-default" namespace="/">
<action name="customer_*" class="com.itheima.web.action.CustomerAction" method="{1}">
</action>
</package>
在Action中獲取到service(開發不會使用,因爲麻煩)
WebApplicationContextUtils.getWebApplicationContext(ServletActionContext.getServletContext());
來獲取,但是這樣的方式編寫代碼太麻煩了!。
Spring整合Struts2框架的第一種方式(Action由Struts2框架來建立)
<constant name="struts.objectFactory" value="spring" />
開啓一個常量,假設該常量開啓,那麼如下的常量就可以使用struts.objectFactory.spring.autoWire = name
,該常量是可以讓Action的類來本身主動裝配Bean對象!!Spring整合Struts2框架的另一種方式(Action由Spring框架來建立)(推薦你們來使用的)
<bean id="customerAction" class="com.itheima.web.action.CustomerAction" scope="prototype">
struts.xml中的改動,把全路徑改動成ID值
<action name="customer_*" class="customerAction" method="{1}">
另一種方式需要有兩個注意的地方
技術分析之Spring框架整合Hibernate框架(帶有hibernate.cfg.xml的配置文件。強調:不能加綁定當前線程的配置)
編寫映射的配置文件。並且在hibernate.cfg.xml的配置文件裏引入映射的配置文件
在applicationContext.xml的配置文件。配置載入hibernate.cfg.xml的配置
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>
在CustomerDaoImpl中想完畢數據的加入,Spring框架提供了一個HibernateDaoSupport的工具類,之後DAO都可以繼承該類!。
public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {
public void save(Customer c) {
System.out.println("持久層...");
this.getHibernateTemplate().save(c);
}
}
<bean id="customerDao" class="com.itheima.dao.CustomerDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean>
開啓事務的配置
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
@Transactional
技術分析之Spring框架整合Hibernate框架(不帶有hibernate.cfg.xml的配置文件)
Hibernate配置文件裏
開始進行配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql:///xxx"/>
<property name="user" value="root"/>
<property name="password" value="root"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 配置其它的屬性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 配置映射 -->
<property name="mappingResources">
<list>
<value>com/itheima/domain/Customer.hbm.xml</value>
</list>
</property>
技術分析之Hibernate的模板的常常使用的方法
增刪改的操做:
save(Object obj);
update(Object obj);
delete(Object obj);
查詢的操做:
Object get(Class c,Serializable id);
Object load(Class c,Serializable id);
查詢多條記錄:
List find(String hql,Object... args);
技術分析之延遲載入問題
使用延遲載入的時候。再WEB層查詢對象的時候程序會拋出異常!
緣由是延遲載入尚未發生SQL語句,在業務層session對象就已經銷燬了,因此查詢到的JavaBean對象已經變成了託管態對象!
注意:必定要先刪除javassist-3.11.0.GA.jar
包(jar包衝突了)
解決的方法很easy,Spring框架提供了一個過濾器,讓session對象在WEB層就建立,在WEB層銷燬。
僅僅需要配置該過濾器就能夠
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
參考自:某某培訓機構