spring 三大核心科技———DI(依赖注入)、AOP(面向切面编程)、DT(声明式事务)
重点说DT的配置,它的使用大大简化了持久层和业务层的代码编写。
在applicationContext.xml中分以下步骤:
1.读取外部文件
<context:property-placeholder location="classpath:dbconfig.properties"/> //dbconfig.properties是已写好的properies文件,内有jdbc配置属性
2.配置连接池组件(可以用c3p0,也可以使用dbcp)
<!-- a.使用c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}"/>
<property name="jdbcUrl" value="${jdbcUrl}"/>
<property name="user" value="${user}"/>
<property name="password" value="${password}"/>
<!--配置连接池其他属性,如初始化容量,最长等待时间... -->
<property name="initialPoolSize" value="${initialPoolSize}"/>
</bean>
<!-- b.使用Apache Commons Dbcp -->
<bean id="dataSource2" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${driverClass}"/>
<property name="url" value="${jdbcUrl}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
<property name="initialSize" value="${initialSize}"/>
</bean>
3.配置SessionFactory(相当于hibernate.cfg.xml) --完成了Hibernate和Spring的整合
//此处以oracle10g为例
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!-- 配置Hibernate其他属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
</props>
</property>
<!-- 配置映射关系 -->
<property name="packagesToScan" value="com.tz.spring.entity"/>
</bean>
4.配置事务管理器
<bean id="tm" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
5.当然,要开启声明式事务,也要开启AOP,并配置扫描标注注解的包,依次如下
<tx:annotation-driven transaction-manager="tm"/>
<aop:aspectj-autoproxy/>
<context:component-scan base-package="com.tz.spring.dao,com.tz.spring.service,com.tz.spring.advice"/>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)