|
|
|
Help me, JPA developers
|
|||
|---|---|---|---|
|
#18+
Есть элементарная задача. Использую JPA 1.0. Есть ентити - MyEntity, которая содержит поля id, value1, value2, managedvalue1, managedvalue2. Все поля, кроме ID - имеют тип String. Есть также запрос (приходит изначально от вебсервиса) - updateEnitities(List<MyEntity> entites). Для каждой интити нужно найти соответсвующее поле в базе - по value1 и value2 и изменить ее значения managedvalue1 и managedvalue2. Вопрос: Как можно реализовать дао? Кучу апдейтов делать неохота, т.к. хибер почему то не делает Batch Update, а делает N реквестов в БД. CriteriaBuilder использовать нельзя, т.к. jpa 1.0. Стринги конкатенировать в длинный запрос (так мне советует мой лид) - тоже нехорошо + кеш оракла засорять неохота + там будет 3 цикла - на создание основного запроса, потом на вставку "?" и потом query.setParameter. Я бы предпочел выгрузить нужные ентити, проставить у них сеттеры и закомитить (в этом случае хибер сделает батч апдейт), но лид опять же говорит, что это плохо, т.к. идет 2 обращение в БД и данные вытягивать нехорошо - мы их хотим апдейтить и это лишняя операция. Есть ли другие альтернативы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 19:03:16 |
|
||
|
Help me, JPA developers
|
|||
|---|---|---|---|
|
#18+
Так, я тут немного напутал и скрестил 2 задачи. Для начала нужно понять, как сделать селект для такого запроса на HSQL, чтобы за один запрос вытащить все энтити. А потом, желательно, в 1-2 реквеста к БД сделать балковый апдейт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 19:17:14 |
|
||
|
Help me, JPA developers
|
|||
|---|---|---|---|
|
#18+
WickedPacmanчтобы за один запрос вытащить все энтитизачем их вытаскивать-то? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. а в хибернейте StatelessSession есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 22:00:24 |
|
||
|
Help me, JPA developers
|
|||
|---|---|---|---|
|
#18+
grasoff.net, да это решение то очевидно и так. Проблема у него такая, что не охота мне entities.size() раз обращаться к БД. Ваше решение будет медленно работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 23:16:45 |
|
||
|
Help me, JPA developers
|
|||
|---|---|---|---|
|
#18+
Так, похоже я забыл про flushMode. Протестирую перфоманс и отпишусь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 23:20:46 |
|
||
|
Help me, JPA developers
|
|||
|---|---|---|---|
|
#18+
ещё есть batch_size например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2012, 23:32:27 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2131898]: |
0ms |
get settings: |
15ms |
get forum list: |
27ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
53ms |
get topic data: |
18ms |
get forum data: |
5ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 356ms |
| total: | 551ms |

| 0 / 0 |
