配置SSH的一种实践方法(Spring,Struts2,Hibernate) 续

SPRING:

这里主要用到是IOC的东西,所以主要说和struts,hibernate的集成。重点看一下applicationContext.xml怎么配。

为了以后少写点配置,前面就得多配点:)

根目录beans 里面加个属性:

 

 

default-autowire="byName"

再加上自动扫描的。

 

<aop:aspectj-autoproxy proxy-target-class="true"/>
    <context:component-scan base-package="com.demo"/>

OK,SPRING会自动扫到相应的类加到IOC容器里去。

 

<!--[if !supportLists]-->1.      1. <!--[endif]-->和struts配置主要还是在struts.xml

<constant name="struts.objectFactory" value="spring"/>
<constant name="struts.objectFactory.spring.autoWrite" value="name"></constant>

 然后ACTION 里加@Controller完了。

 

2. 和Hibernate相关的集成。

贴代码了,一看就清楚

 

配好transaction:

<bean id="transactionManager"
          class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
 
<tx:annotation-driven transaction-manager="transactionManager"/>

 配DATASOURCE:

 

<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="org.h2.Driver"/>
        <!--<property name="driverClassName" value="com.p6spy.engine.spy.P6SpyDriver"/>-->
        <property name="jdbcUrl" value="jdbc:h2:~/demo"/>
        <property name="user" value="sa"/>
        <property name="password" value=""/>
        <property name="maxPoolSize" value="50"></property>
        <property name="minPoolSize" value="10"></property>
        <property name="initialPoolSize" value="15"></property>
        <property name="maxIdleTime" value="120"></property>
</bean>

 

sessionFactory

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.format_sql">true</prop>
                <prop key="hibernate.characterEncoding">UTF-8</prop>
                <prop key="hibernate.useUnicode">true</prop>
                <prop key=" hibernate.jdbc.fetch_size">100</prop>
                <prop key="hibernate.connection.release_mode">auto</prop>
                <prop key="hibernate.autoReconnect">true</prop>
                <prop key="connection.autoReconnectForPools">true</prop>

                <prop key="hibernate.ejb.event.post-insert">org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.post-update">org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.post-delete">org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener</prop>
                <prop key="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListener</prop>
            </props>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>com.demo.domain.BaseUser</value>
                <value>com.demo.domain.Product</value>
                <value>com.demo.domain.ProductDetail</value>
            </list>
        </property>
    </bean> 

SPRING还是比较爽的,就像空气,不存在去无处不在

 

HIBERNATE:

Hibernate 基本上都配好了,就说一下怎么写个Dao吧。

SR里面最重要的DAO,就是modelDao.

所有的Dao 都是从这里继承而去,里面有基本的CRUD方法,可以给具体的DAO使用,省下一些代码。

因为项目小,我就没有加service 层,有需要的可以自己加。代码就不贴了,可以自己去看。贴出来反而不好看。

相关推荐