powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Видимость метода, запущенного вне транзакции.
29 сообщений из 29, показаны все 2 страниц
Видимость метода, запущенного вне транзакции.
    #39381044
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пусть есть приложение, работа с транзакциями, которого настроена декларативно через spring.

У транзакции есть свойство Isolation, которое определяет видимость между транзакциями.

Но у меня возник вопрос, что увидит метод, который не помечен аннотацией @Transactional ?

увидят ли его изменения если это не read?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39381106
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у в контексте текущего потока не запущена транзакция, то все операции с БД происходят с автокоммитом. То есть на каждый запрос своя транзакция. Удивительно что вы пытаетесь вникнуть в такие дебри, но не пытаетесь понять как это вообще работает.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39381109
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczЕсли у в контексте текущего потока не запущена транзакция, то все операции с БД происходят с автокоммитом. То есть на каждый запрос своя транзакция. Удивительно что вы пытаетесь вникнуть в такие дебри, но не пытаетесь понять как это вообще работает.

Можете обрисовать, что именно нужно понять?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39381145
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно понять как работает АОП, особенно в спринге.
Что происходит в начале транзакции, а что происходит в конце и как это связано с проксями через которые работает АОП.
ThreadLocal
Нужно знать работу с транзакцией в JDBC API, так как в большинстве случаев другого и не нужно. Connection.setAutocommit() разве совсем не знакомый метод?
Все это можно за пару часов найти в исходниках Спрингa.
Если это всё увязать в одно целое, то исходного вопроса не возникло бы совсем.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39381258
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczНужно понять как работает АОП, особенно в спринге.

Прокси, либо инструментация
BlazkowiczЧто происходит в начале транзакции, а что происходит в конце и как это связано с проксями через которые работает АОП.

я так понимаю, что обернули метод
begin transaction
наш метод
stop transaction
BlazkowiczThreadLocal

Я понимаю, что это, но как это связано с темой непонятно.
BlazkowiczНужно знать работу с транзакцией в JDBC API, так как в большинстве случаев другого и не нужно. Connection.setAutocommit() разве совсем не знакомый метод?
Все это можно за пару часов найти в исходниках Спрингa.
Если это всё увязать в одно целое, то исходного вопроса не возникло бы совсем.


Что-то в голову не пришло, что автокоммит это из Jdbc api.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39381271
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerПрокси, либо инструментация

В Spring-е уже работает инструментация для транзакций? Круто.

questionerя так понимаю, что обернули метод
begin transaction
наш метод
stop transaction

Во-первых нет никаких stop transaction. Есть commit и rollback.
Во-вторых тут начинаются заблуждения. Область действия транзакции больше чем один метод.

questionerBlazkowiczThreadLocal

Я понимаю, что это, но как это связано с темой непонятно.

А так, что информация о текущей транзакции лежит в ThreadLocal. Поэтому если метод не помечен как @Transactional, это ещё не значит что он не работает в транзакции. Он может использовать уже существующую. Отсутствие этой аннотации говорит о том что метод не создаст новой транзакции (в контексте спринга, не БД).

questionerЧто-то в голову не пришло, что автокоммит это из Jdbc api.
Могут быть ещё нюансы в зависимости от выбранного менеджера транзакции. Но я предлагаю разобраться с простейшим случаем, когда менеджер транзакций просто полагается на БД.
http://docs.spring.io/spring-framework/docs/2.5.6/api/org/springframework/jdbc/datasource/DataSourceTransactionManager.html
http://grepcode.com/file/repository.springsource.com/org.springframework/org.springframework.jdbc/3.0.5/org/springframework/jdbc/datasource/DataSourceTransactionManager.java
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39381472
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

BlazkowiczВ Spring-е уже работает инструментация для транзакций? Круто.

А почему нет? для аннотации @Transactional.

BlazkowiczОбласть действия транзакции больше чем один метод.

Зависит же от propagation или я про другое ?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382218
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Кажется мне нужно ещё разжевать/направить немножко(

не понятно.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382225
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerBlazkowiczОбласть действия транзакции больше чем один метод.
Зависит же от propagation или я про другое ?
ThreadLocal уже прочитан?

Код: java
1.
2.
3.
4.
5.
@Transactional
void doSomeBusiness(){
    someBean.doThis();
    someBean.doThat();
}



doThis и doThat полноценно участвуют в транзакции, но помечать их как @Transactional не нужно. Почему? Потому что информация о текущей транзакции у нас в ThreadLocal.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382333
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще,как вариант - напишите тесты используя p6spy библиотеку и посмотрите какие sql выполняются и где и как отрабатывают коммиты !!

но тут у меня бага с p6spy - некоторые sql отображатся два раза ?!!! я не пойму что такое с этой либой ..

но это бага кода , пока не понял где дублируются (((

все равно p6spy лучше чем простой hibernate.show_sql c кучей ????

Blazkowicz
Код: java
1.
2.
3.
4.
5.
@Transactional
void doSomeBusiness(){
    someBean.doThis();
    someBean.doThat();
}



doThis и doThat полноценно участвуют в транзакции, но помечать их как @Transactional не нужно. Почему? Потому что информация о текущей транзакции у нас в ThreadLocal.

YouTube Video
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382347
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1тут задачка про вложенные транзакции ..
С добрым утром. Этот вопрос мы ещё в предыдущей теме прояснили.
20073053

А по поводу стандартых косяков в этом вопросе есть отличная статья
http://www.ibm.com/developerworks/java/library/j-ts1/index.html
Перевод
http://www.k-press.ru/cs/2009/1/ts/ts.asp
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382435
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczquestionerпропущено...

Зависит же от propagation или я про другое ?
ThreadLocal уже прочитан?

Код: java
1.
2.
3.
4.
5.
@Transactional
void doSomeBusiness(){
    someBean.doThis();
    someBean.doThat();
}



doThis и doThat полноценно участвуют в транзакции, но помечать их как @Transactional не нужно. Почему? Потому что информация о текущей транзакции у нас в ThreadLocal.

Да, это я понимаю. ThreadLocal подходит для хранения информации о транзакции.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382438
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerДа, это я понимаю. ThreadLocal подходит для хранения информации о транзакции.
Хорошо. Тогда что ещё осталось не понятным?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382558
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Непонятно почему @Transactional не может работать через инструментацию.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382565
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerНепонятно почему @Transactional не может работать через инструментацию.
Кто сказал про "не может"? Возможно и может.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382575
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerПрокси, либо инструментация

В Spring-е уже работает инструментация для транзакций? Круто.


Я воспринял это так, что Вы считаете, что это очевидно неверно.

Я что-то не понимаю, наверное, но AOP в спринге может использоваться много для чего, например для кеширования. И как мы этот AOP сконфигурён так и будет spring работать. AspectJ часто ведь используют в ответах по реалихации AOP в spring.

Почему такие сомнения с @Transactional ?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382592
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЯ воспринял это так, что Вы считаете, что это очевидно неверно.

Я не могу знать всего. Поэтому выразил удивление. Это же вы изучаете вопрос. Почему не смотрите в мануал?

questionerПочему такие сомнения с @Transactional ?
Потому что по умолчанию там всегда прокси. Потому что использование Spring AOP это не совсем одно и тоже что и использование других модулей Spring.

В актуальном мануале пишут что работает и через инструментацию mode="aspectj"
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382615
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz использование Spring AOP это не совсем одно и тоже что и использование других модулей Spring.

а что с ним не так?

Так Вы же сами в этом ответе в соседней теме писали, что если AOP реализован не через инструментацию, то могут быть проблемы с запуском транзакции при локальном вызове

http://www.sql.ru/forum/1244882/requiresnew?mid=20073053#20073053
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382651
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerа что с ним не так?
Это два разных модуля.

questionerТак Вы же сами в этом ответе в соседней теме писали, что если AOP реализован не через инструментацию, то могут быть проблемы с запуском транзакции при локальном вызове
Это вообще к чему? Об этом и в мануале написано.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382660
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerТак Вы же сами в этом ответе в соседней теме писали, что если AOP реализован не через инструментацию, то могут быть проблемы с запуском транзакции при локальном вызове
Это вообще к чему? Об этом и в мануале написано.

Когда Вы писали тот пост, то знали, что @Transactional не будет работать как надо если AOP реализован не через инструментацию, а тут как будто забыли.

Это с моей стороный так выглядит. Естественно Вы что-то иное имеете ввиду, но я не понимаю, что именно
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382663
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerКогда Вы писали тот пост, то знали, что @Transactional не будет работать как надо если AOP реализован не через инструментацию, а тут как будто забыли.
У вас логические выводы нарушены. Во-первых нигде не говориться про "так надо". Во-вторых то что прокси не перехватывают вызовы методов внутри класса вообще никак не связано с тем работает ли декларативное управление транзакциями через compile time weaving или нет.
"не будет работать через прокси" не значит что "будет работать через инструментацию". Это значит что "будет работать через инструментацию, при услови что декларативное управление транзакциями умеет работать через инструментацию".
Беглый просмотр документации говорит что умеет. Но раньше, когда я интересовался этим вопросом, инструментация была геморроем. Поэтому я понятия не имел умеет так спринг или нет.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382737
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerКогда Вы писали тот пост, то знали, что @Transactional не будет работать как надо если AOP реализован не через инструментацию, а тут как будто забыли.
У вас логические выводы нарушены. Во-первых нигде не говориться про "так надо". Во-вторых то что прокси не перехватывают вызовы методов внутри класса вообще никак не связано с тем работает ли декларативное управление транзакциями через compile time weaving или нет.
"не будет работать через прокси" не значит что "будет работать через инструментацию". Это значит что "будет работать через инструментацию, при услови что декларативное управление транзакциями умеет работать через инструментацию".
Беглый просмотр документации говорит что умеет. Но раньше, когда я интересовался этим вопросом, инструментация была геморроем. Поэтому я понятия не имел умеет так спринг или нет.

Хотелось бы докапаться до истины, почему нарушены причинно следственные связи) Я явно чего-то не понимаю.

Blazkowicz"не будет работать через прокси" не значит что "будет работать через инструментацию".
а как ещё? есть третий вариант?

Blazkowiczто что прокси не перехватывают вызовы методов внутри класса вообще никак не связано с тем работает ли декларативное управление транзакциями через compile time weaving или нет.

О,похоже загвоздка тут. А зачем вообще тогда прокся эта нужна если через нее @Transactional-ы/ @Autowired-ы работали?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382741
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
с @Autowired я наверное погорячился
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382854
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerХотелось бы докапаться до истины, почему нарушены причинно следственные связи) Я явно чего-то не понимаю.

Какой ещё истины? Походу вопросы закончились, осталось только "а поговорить?".

questionerа как ещё? есть третий вариант?

Предложение до конца дочитать не вариант?

questionerА зачем вообще тогда прокся эта нужна если через нее @Transactional-ы/ @Autowired-ы работали?
Не понял вопроса.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382903
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerХотелось бы докапаться до истины, почему нарушены причинно следственные связи) Я явно чего-то не понимаю.

Какой ещё истины? Походу вопросы закончились, осталось только "а поговорить?".

questionerа как ещё? есть третий вариант?

Предложение до конца дочитать не вариант?

questionerА зачем вообще тогда прокся эта нужна если через нее @Transactional-ы/ @Autowired-ы работали?
Не понял вопроса.

Да, с вопросом топика понятно.

Во время топика появилось непонимание про Spring AOP.

Почему раньше @Transactional раньше не мог работать через инструментацию?(это касалось только @Transactional ?)
Spring AOP может использоваться как собственно AOP, чтобы обрамлять свои методы какой-то своей логикой, а может, собственно для всяких @Transactional/@Cacheable.

Насколько я понимаю, AOP конфигурируется глобально.

Собственно если настроить AOP через инструментацию, то всё, что пользует AOP будет работать через инструментацию.

Blazkowicz Предложение до конца дочитать не вариант?
а что дочитать то?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39382904
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerСобственно если настроить AOP через инструментацию, то всё, что пользует AOP будет работать через инструментацию.

Ладно. Продолжайте игнорировать мануал. Я умываю руки.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39383039
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerСобственно если настроить AOP через инструментацию, то всё, что пользует AOP будет работать через инструментацию.

Ладно. Продолжайте игнорировать мануал. Я умываю руки.

Весь что ли?
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39383044
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerВесь что ли?
Нет. Только тот абзац в котором есть ответ на ваш вопрос. Остальное можете читать.
...
Рейтинг: 0 / 0
Видимость метода, запущенного вне транзакции.
    #39383109
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczquestionerВесь что ли?
Нет. Только тот абзац в котором есть ответ на ваш вопрос. Остальное можете читать.

сложно
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Видимость метода, запущенного вне транзакции.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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