Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы / 18 сообщений из 18, страница 1 из 1
14.04.2016, 22:43
    #39216176
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
Из доки(второго спринг)
авторThe Spring team's recommendation is that you only annotate concrete classes with the @Transactional annotation, as opposed to annotating interfaces. You certainly can place the @Transactional annotation on an interface (or an interface method), but this will only work as you would expect it to if you are using interface-based proxies. The fact that annotations are not inherited means that if you are using class-based proxies then the transaction settings will not be recognised by the class-based proxying infrastructure and the object will not be wrapped in a transactional proxy (which would be decidedly bad). So please do take the Spring team's advice and only annotate concrete classes (and the methods of concrete classes) with the @Transactional annotation.

Note: Since this mechanism is based on proxies, only 'external' method calls coming in through the proxy will be intercepted. This means that 'self-invocation', i.e. a method within the target object calling some other method of the target object, won't lead to an actual transaction at runtime even if the invoked method is marked with @Transactional!

Я не понял фразы

The fact that annotations are not inherited means that if you are using class-based proxies then the transaction settings will not be recognised by the class-based proxying infrastructure and the object will not be wrapped in a transactional proxy (which would be decidedly bad)

Аннотации не наследуются; это значит, что если ты используешь class-based прокси, то @Transactional не будет прочитан.

Не осознал причинно следственной связи. Помогите осознать
...
Рейтинг: 0 / 0
14.04.2016, 23:07
    #39216181
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
1) Ты бы ещепервый спринг изучал :)
2) Попробуй написать свой процессор аннотаций, где навесь аннотацию на интерфейс, и попробуй получить ее в наследнике
...
Рейтинг: 0 / 0
14.04.2016, 23:46
    #39216190
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
забыл ник1) Ты бы ещепервый спринг изучал :)


Да просто заинтересовался вопросом а нагуглил только для второго. не думаю, что кардинально что-то поменялось
забыл ник2) Попробуй написать свой процессор аннотаций, где навесь аннотацию на интерфейс, и попробуй получить ее в наследнике
в имплементаторе всмысле?
...
Рейтинг: 0 / 0
15.04.2016, 00:04
    #39216193
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Annotated
interface A {}
class B implements A {}

class C {
      main(){
           //Попробуй через рефлекшн узнать есть ли у класса B аннотация Annotated
      }
}
...
Рейтинг: 0 / 0
15.04.2016, 00:10
    #39216194
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
забыл ник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Annotated
interface A {}
class B implements A {}

class C {
      main(){
           //Попробуй через рефлекшн узнать есть ли у класса B аннотация Annotated
      }
}



Ну у класса B и нет, это я понимаю.
...
Рейтинг: 0 / 0
15.04.2016, 00:16
    #39216196
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
забыл ник,

всё равно не понятно
...
Рейтинг: 0 / 0
15.04.2016, 06:04
    #39216216
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
забыл ник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
@Annotated
interface A {}
class B implements A {}

class C {
      main(){
           //Попробуй через рефлекшн узнать есть ли у класса B аннотация Annotated
      }
}



Взять все интерфейсы и прочитать?

С другой стороны тот факт, что метод требует транзакцию- детали реализации, а не контракта!
...
Рейтинг: 0 / 0
15.04.2016, 09:48
    #39216320
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
Alexey Tomin
С другой стороны тот факт, что метод требует транзакцию- детали реализации, а не контракта!

по-моему в доке по другому написано.
...
Рейтинг: 0 / 0
15.04.2016, 11:23
    #39216421
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
Я заметил что на новичков очень сильное впечатление производят Java-annotations.
Столкнувшись с этой технологией 1 раз они верят в нее как в черную магию и
пытаются тулить эти заклинания в те проекты, где Spring и любой другой
фреймворк даже рядом не был.
...
Рейтинг: 0 / 0
15.04.2016, 18:15
    #39216863
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
это в каком это спринге аннторировались классы транзакшнл? вродь методы ща аннотируются только? если в контексте транзакшнл речь идет разумеется.
...
Рейтинг: 0 / 0
15.04.2016, 20:05
    #39216922
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
maytonЯ заметил что на новичков очень сильное впечатление производят Java-annotations.
Столкнувшись с этой технологией 1 раз они верят в нее как в черную магию и
пытаются тулить эти заклинания в те проекты, где Spring и любой другой
фреймворк даже рядом не был.

Заметил, что умничать все горазды, а ответить никто не может.
Вопрос не ясен разве?
...
Рейтинг: 0 / 0
15.04.2016, 20:07
    #39216924
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
lor2это в каком это спринге аннторировались классы транзакшнл? вродь методы ща аннотируются только? если в контексте транзакшнл речь идет разумеется.
в 2-ом, 3-ем, 4-ом на данный момент)

в первом хз
...
Рейтинг: 0 / 0
15.04.2016, 20:07
    #39216926
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
...
Рейтинг: 0 / 0
16.04.2016, 09:53
    #39217063
lor2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
и в чем скрытый смысл аннотировать транзакцией КЛАСС? ну это так вопрос, в целях самообразования.
...
Рейтинг: 0 / 0
16.04.2016, 11:10
    #39217094
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
lor2и в чем скрытый смысл аннотировать транзакцией КЛАСС? ну это так вопрос, в целях самообразования.

Это всего лишь shortcut того, что все методы будут транзакционными
...
Рейтинг: 0 / 0
16.04.2016, 12:54
    #39217122
rdm
rdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
забыл ник, а как @Validated на интерфейсе работает?
...
Рейтинг: 0 / 0
17.04.2016, 00:16
    #39217441
questioner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
up
...
Рейтинг: 0 / 0
18.04.2016, 08:06
    #39217725
Atum1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему @Transactional надо навешивать на конкретные классы, а не интерфейсы
Есть базовый вопрос : по написанию метода equals

Josh Bloch on Design
https://www.artima.com/intv/bloch17.html

есть instanceof versus getClass in equals Methods

есть спринг в котором есть понятие прокси

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


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