黑马程序员技术交流社区

标题: 【石家庄校区】spring_day04 [打印本页]

作者: zhangxuchang    时间: 2018-7-6 09:38
标题: 【石家庄校区】spring_day04
本帖最后由 zhangxuchang 于 2018-7-6 09:39 编辑

spring_day04

Spring JDBC Template 模板类
Spring为各个持久层提供了简单操作的模板类
Spring事务
​        JdbcDapSupport类
​                 类继承后内部就声明了JdbcTemplate(因为在JdbcDaoSupport内部已经声明JdbcTemplate)
​                配置文件中配置JdbcTemplate数据模板
​        Spring事物的四个优点:
​                提供一致的对于不同事物管理的API
​                支持声明式事务管理
​                编程事物管理
​                优秀的整合与Spring的数据访问
​        PlatformTransactionManager
​                事物管理器,使用不同持久层技术的API管理事务,可以选择相关平台,如:HibernateTransactionManager
​                不同持久层解决技术事物管理方法不一样
​                Spring提供了针对不同Dao层框架的管事事物相关类:
​                        DataSourceTransactionManager
​                        HibernateTransactionManager
​                        ...
​        TransactionDefinition
​                描述事物定义
​                        定义事物的一些相关信息   隔离   传播   超时  只读
​                超时:
​                        默认值是-1,如果是-1代表用数据库中的默认超时时间
​                只读:true和false
​                传播:                                                                                                                                                                        
​                        它解决的是两个被事物管理方法相互调用的问题,他与数据库没关系,是程序内容维护的问题
​                常用的三种传播行为:
​                        PROPAGATION_REQIRED        默认值,两个操作处于同一个事物,如果之前没有事物,新建一个事物
​                        PROPAGATION_REQUIRES_NEW 两个操作处于不同的事物
​                        PROPAGATION_NESTED 是一种嵌套食物,他是使用SavePoint来实现的,事物回滚时可以回滚到制定的savepoint,
​                        只对DataSourceTransactionManager有效
​        TransactionSttus                                                                                                                                                        
​                描述事物的具体运行状态
​                在事物的运行过程中,得到某个时间点
声明式事务管理
事物管理方式:
​        1.编码方法,不建议使用,他具有侵入性        ,在原有的业务逻辑上添加事务代码
​                把事务的开启和结束写在一个模块中
​        2.声明式事物控制,基于AOP对目标进行代理,在原有逻辑基础上应用环绕通知解决
配置声明式管理配置:
​        1.配置AOP和TX名称空间
​        2.在applicationContext中配置
​                配置TransactionManager        Bean(事物管理器)        --TransactionManager是接口还是实现类
​        设置dataSoure属性(数据源)
​        3.配置增强
​                <tx:advice id="名称" transaction-manager="事物管理器对象Bean">
​                        tx:attributes
​                                <tx:method name="[目标Bean的]方法名称(可以用通配符)" (可选)[
​                                        propagation="事物隔离级别"
​                                        timeout=“超时时间”
​                                        read-only="默认值false"
​                                        rollback-for=“设置异常,如果产生这个异常,触发事物回滚”
​                                        no-rolback-for=“产生这个异常,不会出发事物回滚”
​                                ]>
​                /tx:attributes
​        /tx:advice
     4.定义切面
​        aop:config
​                <aop:advisor name="方法名称" pointcut="切点" />
​        声明式事物管理注解开发
​                @Transactional(各种tx:method标签下的属性)
​                1.在配置文件中添加扫描Bean
​                        <tx:annotation-driven transaction-manager="事物管理器Bean名称" />







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2