Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / TransactionManager Spring Boot / 12 сообщений из 12, страница 1 из 1
06.11.2015, 11:11
    #39096316
JonnySKS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TransactionManager Spring Boot
Насколько я понимаю 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
06.11.2015, 11:35
    #39096345
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TransactionManager Spring Boot
Нифига не понятно. Зачем свой бин менеджера транзакций? Что такое "мои кастомные транзакции"? У вас у метода Propagation.NEVER, а у репозитория PROPAGATION_REQUIRED.
...
Рейтинг: 0 / 0
06.11.2015, 11:58
    #39096376
JonnySKS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TransactionManager Spring Boot
Blazkowicz,

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

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

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

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

Но судя по логу создаются отдельные транзакции к каждому из запросов.
После того как вы убрали параметры аннотации лог не поменялся?
Сервисный объект точно создан спрингом?
Да, лог не изменился.
Объект помечен аннотацией @Service и вызывается как бин.
...
Рейтинг: 0 / 0
06.11.2015, 12:45
    #39096463
JonnySKS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TransactionManager Spring Boot
Ошибся, когда убрал параметры аннотации у @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
06.11.2015, 13:11
    #39096521
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TransactionManager Spring Boot
JonnySKSНо как тогда применить иные свойства транзакции?
что значит?
- было в разных - не нравилось.
- стало в одной - не нравится.
...
Рейтинг: 0 / 0
06.11.2015, 14:37
    #39096656
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TransactionManager Spring Boot
JonnySKSОшибся, когда убрал параметры аннотации у @Transactional запросы стали отправляться в 1 транзакции.
Ну, вот.

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

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

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


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