powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / TransactionManager Spring Boot
12 сообщений из 12, страница 1 из 1
TransactionManager Spring Boot
    #39096316
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю Spring Boot проводит автоконфигурацию менеджера транзакций, и производит запросы в базу в своих дефолтных транзакциях.
Выходит что мои кастомные транзакции не создаются
Код: java
1.
2.
3.
4.
5.
6.
@Transactional(readOnly = true, propagation = Propagation.NEVER)
public Integer someMethod(){
  Integer countFirstFolder = someRepository.count(someSpecification);
  Integer countSecondFolder = someRepository.count(someSpecification);
  return (countFirstFolder  + countSecondFolder);
}



Вывел лог в консоль и при выполнении метода вижу:
автор[DEBUG] Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.count]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
[DEBUG] Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@556c19]
[DEBUG][org.hibernate.SQL] - select count(*) from dual;
[DEBUG] Initiating transaction commit
[DEBUG] Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@68ef31]

[DEBUG] Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.count]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
[DEBUG] Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@556c19]
[DEBUG][org.hibernate.SQL] - select count(*) from dual2;
[DEBUG] Initiating transaction commit
[DEBUG] Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@68ef31]

Нужно каким то образом инициализировать свой бин менеджера транзакций?
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096345
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нифига не понятно. Зачем свой бин менеджера транзакций? Что такое "мои кастомные транзакции"? У вас у метода Propagation.NEVER, а у репозитория PROPAGATION_REQUIRED.
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096376
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Похоже я не так понял принципы работы транзакций.

Каким образом я могу выполнить ряд запросов сервисного метода в пределах одной транзакции?
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096408
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSКаким образом я могу выполнить ряд запросов сервисного метода в пределах одной транзакции?
Таким:
Код: java
1.
2.
3.
4.
@Transactional
public Integer someMethod(){
  ...
}
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096418
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Но судя по логу создаются отдельные транзакции к каждому из запросов.
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096436
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSBlazkowicz,

Но судя по логу создаются отдельные транзакции к каждому из запросов.
После того как вы убрали параметры аннотации лог не поменялся?
Сервисный объект точно создан спрингом?
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096448
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJonnySKSBlazkowicz,

Но судя по логу создаются отдельные транзакции к каждому из запросов.
После того как вы убрали параметры аннотации лог не поменялся?
Сервисный объект точно создан спрингом?
Да, лог не изменился.
Объект помечен аннотацией @Service и вызывается как бин.
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096463
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибся, когда убрал параметры аннотации у @Transactional запросы стали отправляться в 1 транзакции.

автор[DEBUG]Creating new transaction with name : PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
[DEBUG]Exposing JPA transaction as JDBC transaction [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@6fa875]
[DEBUG] Adding transactional method 'count' with attribute: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly; ''
[DEBUG] Participating in existing transaction
[DEBUG][org.hibernate.SQL] - select count()
[DEBUG] Found thread-bound EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@317bcd] for JPA transaction
[DEBUG] Participating in existing transaction
[DEBUG][org.hibernate.SQL] - select count()
[DEBUG] Initiating transaction commit
[DEBUG] Committing JPA transaction on EntityManager [org.hibernate.jpa.internal.EntityManagerImpl@317bcd]

Но как тогда применить иные свойства транзакции?
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096521
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSНо как тогда применить иные свойства транзакции?
что значит?
- было в разных - не нравилось.
- стало в одной - не нравится.
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096656
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSОшибся, когда убрал параметры аннотации у @Transactional запросы стали отправляться в 1 транзакции.
Ну, вот.

JonnySKSНо как тогда применить иные свойства транзакции?
Через параметры. Просто параметры которые вы задали не соостветвуют поведению, которого вы хотели добится. Особенно propagation. Вы его в Never с какой целью поставили?
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096757
Фотография JonnySKS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123JonnySKSНо как тогда применить иные свойства транзакции?
что значит?
- было в разных - не нравилось.
- стало в одной - не нравится.
Нет, вторым результатом я доволен)

BlazkowiczЧерез параметры. Просто параметры которые вы задали не соостветвуют поведению, которого вы хотели добится. Особенно propagation. Вы его в Never с какой целью поставили?
Теперь понял в чем проблема. В источнике, который я читаю, вскользь упомянули о режимах распространения и я неверно интерпретировал пример. Прочитал в других источниках и более-менее разобрался со способами применения этих параметров.
BlazkowiczОсобенно propagation
А с readOnly тоже что то не так?

Спасибо за помощь.
...
Рейтинг: 0 / 0
TransactionManager Spring Boot
    #39096758
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JonnySKSА с readOnly тоже что то не так?
Ну, если в count() только выборка, то всё так. Можно обезопасить себя от случайной записи. И, возможно, на производительность, тоже влияет в некоторых случаях.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / TransactionManager Spring Boot
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]