pom.xml 引入核心依賴:spring-webmvc、spring-orm、spring-tx、hibernate-core、druid(連線池)、資料庫驅動(如 sqljdbc4)、jstl、servlet-api 等,統一版本號管理。jdbcUrl=jdbc:sqlserver://localhost:1433;DatabaseName=dbStudy
driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
username=sa
password=sql2008
優點:修改參數無需動 Spring XML,利於多環境部署。
僅保留方言、SQL 顯示、格式化、DDL 策略、二級快取等純 Hibernate 屬性;資料源與映射檔交由 Spring 管理。
<property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<context:annotation-config/>
<context:component-scan base-package="com.ympcSoft"/>
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="driverClassName" value="${driverClass}"/>
<property name="url" value="${jdbcUrl}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<!-- 池參數調優 -->
<property name="initialSize" value="1"/>
<property name="minIdle" value="1"/>
<property name="maxActive" value="20"/>
<property name="maxWait" value="60000"/>
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
<property name="filters" value="stat,log4j"/>
</bean>
方式 A:引用外部 hibernate.cfg.xml
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
<property name="packagesToScan" value="com.ympcsoft.sys.domain"/>
</bean>
方式 B:Spring 內嵌 Hibernate 屬性(無需 hibernate.cfg.xml)
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.SQLServer2008Dialect</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="packagesToScan" value="com.ympcsoft.sys.domain"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
在 Service 方法或類別加 @Transactional 即可自動管理事務邊界。
(整合上述所有 Bean 定義,命名空間宣告完整,含 context、tx、aop、beans)