Весна рамки (6) - управление транзакциями JdbcTemplate Spring и использование

Spring Framework упаковал JdbcTemplate может быть использован, чтобы вручную создать слишком много проблем, и нет опорного значения, просто используйте код, приведенный ниже случаев JdbcTemplate разработанных аннотации:

Выполните следующие действия:

1. координаты Импорт связаны

Использование друида ссылка бассейн:

1      <зависимостей>
 2          <зависимость>
 3              <идентификатор_группы> MySQL </ идентификатор_группы>
 4              <артефакт> MySQL-разъем-Java </ артефакт>
 5              <версия> 5.1.47 </ версия>
 6          </ зависимость>
 7          <зависимость>
 8              <идентификатор_группы> com.alibaba </ идентификатор_группы>
 9              <артефакта> друид </ артефакт>
 10              <версия> 1.1.10 </ версии>
 11          </ зависимость>
 12          <зависимость>
 13              <идентификатор_группы> орг.
springframework </ идентификатор_группы> 14             <артефакт> весенне-контекст </ артефакт>
 15              <версия> 5.0.5.RELEASE </ версия>
 16          </ зависимость>
 17          <зависимость>
 18              <идентификатор_группы> org.springframework </ идентификатор_группы>
 19              <артефакт> весенне-JDBC </ артефакт>
 20              <версия> 5.0.5.RELEASE </ версия>
 21          </ зависимость>
 22        
27          <зависимость>
 28              <идентификатор_группы> org.aspectj </ идентификатор_группы>
 29              <артефакт> aspectjweaver </ артефакт>
 30              <
версия> 1.8.13 </ версия> 31          </ зависимость>
32      </ зависимостей>

2. Создание таблицы базы данных

Создайте свой собственный.

3. Создать класс реализации

Создайте свой собственный.

Ядро профиль 4. Настройка Пружина

<- -扫描包!> 
    <Контекст: компонент сканирования base- пакет = "com.itheima" /> 

    <боб ID = "DataSource" класс = "com.alibaba.druid.pool.DruidDataSource"> 
        <имя свойства = значение "driverClassName" = "com.mysql.jdbc.Driver" /> 
        <имя свойства = значение "URL" = "JDBC: MySQL: // локальный: 3306 / ssm_spring" /> 
        <имя свойства = "имя пользователя" значение = /> "корень" 
        <имя свойства = "пароль" значение = "123" /> 
    </ боб> 

    <боб ID = "JdbcTemplate" класс = "org.springframework.jdbc.core.JdbcTemplate"> 
        <имя свойства = "DataSource" исх = "DataSource" /> 
    </ фасоль> 

</ фасоль>

 

5. Создайте объект и использовать JdbcTemplate

ДАО слой в классе реализации путем получения объектов инъекции аннотаций:

@Autowired
     частного шаблона JdbcTemplate;

JdbcTemplate вызвать метод запроса или обновления на нем.

6. Тест

Самотестирование.

Повторяемость с весной (4) - разработка Примечания относительно высока, так что не написать подробный шаг.

 

управление транзакциями в Spring:

управление транзакциями Spring в программное и декларативное управление транзакциями управления транзакциями.

Программные средства управления транзакциями, контролирующие, чтобы открыть или закрыть транзакцию посредством управления транзакцией кодирования. Слишком хлопотно, чтобы узнать на линии.

Декларативное управление транзакциями, чтобы открыть или закрыть транзакцию конфигурации. Декларативное управление транзакциями делятся на XML на основе декларативного управления транзакциями и аннотации управление на основе декларативной транзакции.

 

Programmatic управления транзакциями:

Programmatic управления транзакциями три объекта:

PlatformTransactionManager

TransactionDefinition

TransactionStatus

 

Интерфейс PlatformTransactionManager является пружинным менеджером транзакций, которые он предоставляет наш общий способ эксплуатации своих услуг.

Примечание:

PlatformTransactionManager, тип интерфейса, различные слои технологии Dao имеет другой класс реализации, например: технологический уровень Дао или JDBC mybatis: org.springframework.jdbc.datasource.DataSourceTransactionManager

Dao технология слой зимует, когда: org.springframework.orm.hibernate5.HibernateTransactionManager

 

TransactionDefinition информации о транзакции объект определяется, который имеет следующий метод:

уровень изоляции транзакций

Установка уровня изоляции, вы можете решить проблему генерирования транзакций параллелизма, например грязное чтение, неповторяющиеся чтения и фантомные читает.

ISOLATION_DEFAULT

ISOLATION_READ_UNCOMMITTED

ISOLATION_READ_COMMITTED

ISOLATION_REPEATABLE_READ

ISOLATION_SERIALIZABLE

事务传播行为

REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选择(默认值)

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)

MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常

REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

NEVER:以非事务方式运行,如果当前存在事务,抛出异常

NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行 REQUIRED 类似的操作

超时时间:默认值是-1,没有超时限制。如果有,以秒为单位进行设置

是否只读:建议查询时设置为只读

 

TransactionStatus 接口提供的是事务具体的运行状态,方法介绍如下。

 以上了解就可以了。

 

声明式事务控制:

使用步骤:

1.导入相应的jar包

 1 <!-- spring的事务管理 -->
 2 <dependency>
 3     <groupId>org.springframework</groupId>
 4     <artifactId>spring-tx</artifactId>
 5     <version>5.0.5.RELEASE</version>
 6 </dependency>
 7 <!-- Aop的切入点表达式解析 -->
 8 <dependency>
 9     <groupId>org.aspectj</groupId>
10     <artifactId>aspectjweaver</artifactId>
11     <version>1.8.7</version>
12 </dependency>

2.配置事务管理器

1 <!-- 事务管理器(在Spring的核心配置文件中) -->
2 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
3     <property name="dataSource" ref="dataSource"/>
4 </bean>

3.配置事务的切面和织入关系

xml配置:

 1 <!--事务切面-->
 2 <aop:config>
 3     <aop:advisor advice-ref="txAdvice" 
 4                  pointcut="execution(* com.itheima.service.impl.*Impl.*(..))">
 5     </aop:advisor>
 6 </aop:config>
 7 <!--事务的详细配置-->
 8 <tx:advice id="txAdvice" transaction-manager="transactionManager">
 9     <tx:attributes>
10         <tx:method name="save*" propagation="REQUIRED" read-only="false"/>
11         <tx:method name="update*" propagation="REQUIRED" read-only="false"/>
12         <tx:method name="delete*" propagation="REQUIRED" read-only="false"/>
13         <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
14         <tx:method name="*"/>
15     </tx:attributes>
16 </tx:advice>

注解配置:

在Spring核心配置文件中:

<!--开启Spring声明式事务的注解支持-->
<tx:annotation-driven />

在对应的类上加入事务注解:

 1 @Transactional  //表示当前类的所有方法都加入注解支持 propagation:REQUIRED read-only:false
 2 public class AccountServiceImpl implements AccountService {
 3 
 4     @Autowired
 5     private AccountDao accountDao;
 6 
 7     public void transfer(String outMan, String inMan, double money) {
 8         accountDao.out(outMan, money);
 9         int i = 10 / 0;
10         accountDao.in(inMan, money);
11     }
12 }

4.测试

рекомендация

отwww.cnblogs.com/j9527/p/12036167.html