|
|
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
всем добрый день , читаю книгу Pro JPA 2 Mastering the Java™ Persistence API Mike Keith and Merrick Schnicariol Книга на англйском , и во по главе номер 6 возникли вопросы по EntityManager. Немного запутался в транзакциях и контекстах , кто может помогите разобраться и разложить знания по полочкам для полного понимания: 1) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. вопрос два : когда используется @Resource UserTransaction tx; в сервлетах? к примеру есть у нас простой Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Мы можем написать в сервлет таким образом : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. а можем и так : Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. или через Код: java 1. 2. 3. 4. 5. в чем будет разница ?? или к примеру в каких случаях вместо Stateless нужно использовать Stateful да к тому же устанавливая ему время жизни - ограничивая временем жизни генерации jsp страницы ? когда нужно просто в сервлете инжектить Stateless бин ! а когда помещать в сервлет Код: java 1. 2. и искать entity через EntityManager ? Код: java 1. 2. 3. 4. Это дает какую то выгоду (время, скорость , производительность )? по сравнению с @EJB EmployeeService bean; в сервлете ? от такого разнообразия вариантов - совсем запутался ! и так еще раз : вопрос по поводу когда что использовать в области TransactionAttributeType ? когда использовать в сервлете em.getTransaction().begin(); em.getTransaction().commit(); когда можно обойтись без оного , а когда использовать UserTransaction tx ; и в чем смысл использовать Stateful с ограниченым временем жизни - вместо Stateless ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 10:41:42 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
Atum1, 1. Про уровни изоляции забудь. Будет исп-ться уровень по умолчанию СУБД. В 99,9 проц. этого достаточно. Её практисчески никто не переключает. 2. Строки begin....end обычно лень писать. Поэтому придумали декларативно через аннотации 3. Испрользовать UserTransaction _с клиента_ только тогда, когда надо что либо отменять (rollback) по бизнес-логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 11:10:55 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
Petro123Atum1, 1. Про уровни изоляции забудь. Будет исп-ться уровень по умолчанию СУБД. В 99,9 проц. этого достаточно. Её практисчески никто не переключает. 2. Строки begin....end обычно лень писать. Поэтому придумали декларативно через аннотации 3. Испрользовать UserTransaction _с клиента_ только тогда, когда надо что либо отменять (rollback) по бизнес-логике. ок! Спасибо! :) а по поводу TransactionAttributeType по умолчанию REQUIRED т.е любой вызов EntityManager бина и его методов - это новый контекст транзакции. когда должно быть понимания использовать отличный от этого атрибут? в чем будет экономия ? и зачем тогда городить велосипед с Stateful ? указывая ему EXTENDED и Remove Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. и Сервлет с Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. в чем профит по сравнению со Stateless ? без всего этого ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 12:04:19 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
Atum1по умолчанию REQUIRED т.е любой вызов EntityManager бина и его методов - это новый контекст транзакции. не верно - поищи в сети. В общем случае вопрос равен: - когда свою функцию ABC{} писать перед: Код: java 1. 2. - внутри? - и после? Ответ - по бизнес-логике. Или сначала достаточно REQUIRED. Т.е. если бы ты руками писал try то ты бы сам видел по стеку когда стартовать транзакцию. Контейнер это не знает, поэтому аннотации - это ему подсказки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 12:50:01 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
погуглил , почитал , нашел это Транзакционные стратегии http://www.k-press.ru/cs/2009/1/ts/ts.asp и это http://onedeveloper.ru/article?id=9 Код: java 1. 2. 3. 4. 5. 6. может кому-то будет полезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 14:13:05 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
В связи с чем возник одни хороший вопрос : транзакционная стратегия проекта как грамотно ее организовать ? Зависит все от бизнес логики и от целей : как мне кажется правильный стиль это указывать над бинами стратегии по умолчанию , чтобы указать для остальных разработчиков важность этого момента и заставить обращать на него внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 14:24:04 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
Atum1, вот аннотации стратегии проекта - нету))))) Там в статье всё написано. Нет золотой пули. - CRUD. Транзакции как можно короче. Тогда и откат не нужен). Всё. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2013, 14:29:04 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
возник очередной вопрос : по оформлению кода и так есть класс sevice, если я использую спринг нужно ли указывать session.beginTransaction(); или достаточно аннотации @Transactional(readOnly = true, ? мы лишь только читаем фирмы из базы. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 10:38:02 |
|
||
|
Вопрос по JPA 2 и EntityManager
|
|||
|---|---|---|---|
|
#18+
Atum1, imho - у вас ПРОСТЕЙШАЯ стратегия транзакций. Поэтому ничего не стартовать, не отменять, и не ставить аннотации. Сервер+спринг сам разберётся при таком простом клиенте. Ну и, выше написано, стартую рукми при НЕдекларативном подходе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2013, 11:26:50 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2129132]: |
0ms |
get settings: |
16ms |
get forum list: |
22ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
39ms |
get topic data: |
17ms |
get first new msg: |
11ms |
get forum data: |
4ms |
get page messages: |
74ms |
get tp. blocked users: |
2ms |
| others: | 318ms |
| total: | 517ms |

| 0 / 0 |
