Frontier: с более глубоким исследованием управления транзакциями Spring, эта статья не приведет примеры, но укажет конкретные классы и файлы конфигурации для объяснения.
Содержание этой статьи:
1. Понять, что такое декларативная сделка?
2. Каковы декларативные транзакции?
3. В чем разница между этими типами управления транзакциями?
1. Что такое декларативная сделка?
Управление декларативными транзакциями является одним из способов управления программными транзакциями, предоставленными весной. Декларативные транзакции Spring используют декларативный метод для обработки транзакций и использования декларативной обработки транзакций в файлах конфигурации пружины для замены обработки транзакций на основе кода. Преимущество этого заключается в том, что управление транзакциями не вторгается в компоненты разработки. В частности, объект бизнес -логики не поймет, что он находится в управлении транзакциями. На самом деле, то же самое должно быть правдой, потому что управление транзакциями является услугой системного уровня, а не частью бизнес-логики. Если вы хотите изменить управление транзакциями, вам нужно только изменить конфигурацию в определенном файле конфигурации. Когда управление транзакциями не требуется, просто измените его в файле конфигурации и удалите службу управления транзакциями, не изменяя код и не перекомпинув его, что чрезвычайно удобно для обслуживания.
2. Метод управления декларативными транзакциями.
Во -первых, давайте посмотрим на оригинальное управление транзакциями, прежде чем мы сможем поговорить о методе декларативного управления транзакциями.
Как видно из приведенного выше рисунка, сначала нам нужно создать новый сеанс. Opensession (), во -вторых, нам необходимо создать и совершать транзакции с помощью метода GetTransaction (). Begin () и getTransaction (). Commit (), и мы должны закрыть Session.Close (). Таким образом, каждый раз, когда мы называем этот метод, мы будем воссоздать новую сессию и многократно сделаем то же самое, что не соответствует нашей идее дизайна разработки программного обеспечения. Далее мы используем декларативное управление транзакциями для упрощения и настройки кода.
1. Используйте декларативную транзакционную передачу SpringAOOP.
1.1. Нам нужно импортировать несколько пакетов AOP:
1.2. Затем выполните конфигурацию транзакции в файле конфигурации Application.xml:
1.3. Измените метод запроса всех данных:
После приведенного выше объяснения мы можем увидеть модификацию метода ShowallNews (). Во -первых, мы меняем оригинальный метод OpenSession () на метод getCurrentSession () (примечание: скриншот имеет комментарии, чтобы проиллюстрировать их различия, поэтому я не буду повторять их). Нет необходимости вручную создавать и совершать транзакции. Наша Springaop автоматически управляет транзакциями и автоматически закрывает сеанс.
2. Используйте метод аннотации @Transactional.
2.1. Во -первых, нам необходимо выполнить конфигурацию транзакции в файле конфигурации Application.xml (уведомление контейнера для пружины для обработки обработки бобов аннотации @TransActional):
2.2. Тогда нет необходимости делать какие -либо операции или модификации в NewsDaoImpl:
2.3. Добавить аннотации в Gewsserviceimpl.
Здесь мы можем добавить @transactional Annotation в класс (что означает, что все методы добавляются в управление транзакциями) или добавить аннотацию @Transactional к конкретному методу. Если это метод, который не требует изменения данных, добавьте атрибут.
Например: метод запроса всех данных @Transactional (readonly = true)
3. Разница между декларативным управлением транзакциями, настроенным с использованием аннотации SpringAOOP и @Transactional:
1) Управление декларативной транзакцией на конфигурации SpringAOOP имеет низкую связь, низкую читаемость, детальную экспрессию и высокую гибкость.
2) @transactional Annotation имеет высокую читаемость, а содержание рассеяется и не способствует единому управлению и обслуживанию, а также имеет высокую связь.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.