|
|
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
собссно вопрос в том что я через екзекьютор запускаю параллельные потоки, которые достают хибером объекты с базы, внутри которых есть лейзи связи. Транзакцию ставлю сверху метода (который в многопотоке) -- то толку ноль. тупо его игнорирует. Читаю стэковерфлоу вроде как должен пораждать вторую транзакцию. Но оно вообще игнорирует эту аннотацию. что я делаю не так? Можно конечно без транзакций решить всё. но это бэд вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 17:29 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html Вероятно сами создали экземпляр ExecutorService? Информация о транзакциях хранится в ThreadLocal. Хранит её там Spring. Про потоки которые вы создали самостоятельно Spring ничего не знает. И информацию о транзакциях в ваших потоках он получить никак не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 18:03 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjr, может http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/annotation/Async.html ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 18:20 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicz https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html Вероятно сами создали экземпляр ExecutorService? Информация о транзакциях хранится в ThreadLocal. Хранит её там Spring. Про потоки которые вы создали самостоятельно Spring ничего не знает. И информацию о транзакциях в ваших потоках он получить никак не может. да, сам создал. если через репозиторий работать - то сохранить прочитать всё хорошо )) а с транзакциями беда. :) можно еще сейшн.геткуррентсейшн... и дальше по цепочке - но тогда получается лютый хардкод. Правда, работает. хорошо, а как через тредлокл передать эту инфу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 18:30 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
спасибо за асинк. по ходу то, что надо. сделал метод асинк, возвращающий футуру. цель была распарсить большой документ. сделал через мап-редьюс, разбив на куски, раздав куски на разные потоки, потом собрав всё в кучу. не уверен впрочем, что правильно. но вроде пашет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 19:33 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrспасибо за асинк. по ходу то, что надо) Тоже некогда читать мануал? Привёл же ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 21:00 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, не... оказывается не работает. тупо игнорирует транзакшнл вообще. если делаю через асинк - то вообще к базе доступа нету. никакого. ни с транзакцией ни без. если через екзекутор без асинка - то хоть без транзакций доступ есть. навешивать аннотации транзакшнл - бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 23:10 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Blazkowicznatanabrahamjrспасибо за асинк. по ходу то, что надо) Тоже некогда читать мануал? Привёл же ссылку. так нет там ничего про асинк и транзакшнл. я конечно могу поднять персистанз контекст и всё такое. но мне кажется что это через чур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2017, 23:25 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
34.4.3 The @Async annotation ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 00:10 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
questionernatanabrahamjr, Похоже тут решали вашу проблему https://m.habrahabr.ru/post/228953/ да... там в общем то то, что я уже делал. я и так могу открыть через контекст.. но это ужас получается, и вообще шиворот на выворот.. сейчас в общем-то пришел к тому, от чего ушел - при асинк доступ к базе есть. ставлю аннотацию транзакшнл - вообще всё работать перестает. пишет ошибка скл запроса не может найти таблицу. конечно по особому счету есть два пути это обойти - сделать игер на нужных полях, тупо сделать запрос с другой стороны, или через контекст обращаться. но все три пути рушат архитектуру и делают код страшным... продолжаю копать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 13:06 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
говорит вот это: авторjava.util.concurrent.ExecutionException: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSe происходит только когда есть анноташка асинк+транзакшнл. если либо то либо то - то всё раотает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 13:14 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrпродолжаю копать.. у вас документ такой большой что не вобрать его в оперативку и потом парсить? Зачем вообще транзакции от СУБД + асинхронка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 13:25 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Petro123natanabrahamjrпродолжаю копать.. у вас документ такой большой что не вобрать его в оперативку и потом парсить? Зачем вообще транзакции от СУБД + асинхронка? у меня локально не большой. а на проде большой. заказчик так хочет подстраховаться - резать документ на части и обсчитывать по частям - этакий мап-редьюс. на самом деле, сейчас загвоздка в том, что я считываю объект с базы, а в нем есть лейзи связь на другой. и именно она всё ложит. ...сделал как на хабре. зараза. не хочет. как только добавляю транзакшн темплейт-екзекьют - всё ломается. :) аннотация транзакшнл делает тоже самое. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. варианты воркэраунда есть. но хочу сделать по-человечески. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 14:40 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrзаказчик так хочет подстраховаться - резать документ на части и обсчитывать по частям - этакий мап-редьюс. на самом деле, мап-редьюс почитал концепцию - первый главный узел режет на куски задачу и решает проблему с вашими ссылками между кусков докумта. Чудес не бывает. Либо качаете всё в оперативку (жёсткий твёрдоцельный диск) и отдаёте куски на обработку. Либо блокируете документа на изменение (снимок) и опять спокойно парсите. Причём при снимке плевать на то сколько у вас там транзакций. Они все только читают. .... Может вам тип БД тогда пересматривать? Под такие БОЛЬШИЕ документы "Вики-подобные". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 15:47 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrно хочу сделать по-человечески. "по человечески" - это когда заказчик может понять концепцию простыми словами в ворд файле на A4)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 15:49 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Это все понятно что можно и так и сяк. Вопрос все же как сделать транзакции в потоке.. не может же быть что так никто не делает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 17:06 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrтранзакции в потоке.. не может же быть что так никто не делает. в поток передают потокозащищённый объект Connection (драйвера) и продолжают в той же транзакции. Либо создают новый объект и стартуют новую. А так ты IMHO переключаешь клавиши спринга как баловство пока не заработает. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 19:04 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Petro123natanabrahamjrтранзакции в потоке.. не может же быть что так никто не делает. в поток передают потокозащищённый объект Connection (драйвера) и продолжают в той же транзакции. Либо создают новый объект и стартуют новую. А так ты IMHO переключаешь клавиши спринга как баловство пока не заработает. Удачи! возможно и так, но что делать то? не поднимать же внутри потока всю требуху, которую поднимаешь в спринге? ...или поднимать? просто если второй вариант, то преимущества потоков тупо пропадают.. у меня например, была как то задачка, клиент дергает ендпойнт, по нему инициируется процесс сохранения сотни тысяч уникальных объектов в базу. т.е. в рамках сессии клиента это сделать тупо нереально от слова совсем. я делал это ессно параллельным потоком, выкладывал в базу эту сотню тысяч объектов. но там как то без транзакций обходился. тупо через репозиторий сейв и до свидания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.03.2017, 22:49 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjr, так что там с п.п. 34.4.3 от Blazkowicz? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 00:36 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
Petro123, у меня метод находится в другом классе, возвращает футуру.. сделал всё правильно. собссно, вы о чем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 11:18 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
я вот одного понять ен могу почему ни у кого проблема эта толком не возникала? а) - так никто не делает. б) - я что-то совсем уж делаю не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 11:35 |
|
||
|
Hibernate Spring Transaction
|
|||
|---|---|---|---|
|
#18+
natanabrahamjrсобссно, вы о чем? начни топик заново. Я о том что Blazkowicz вроде решил твою проблему. Ни у кого твоей проблемы нет)))) LOL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2017, 11:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39417328&tid=2123074]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 247ms |
| total: | 449ms |

| 0 / 0 |
