|
|
|
hibernate+oracle
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. У меня скорее концептуальный вопрос. Как лучше использовать связку Hibernate + Oracle. Сейчас столкнулся с несколькими проблемками: 1) обычно генерация ид на оракле построена через тригер и сиквенции. при написании на java воспользовался слеудющей конструкцией Код: java 1. 2. 3. сиквенция все еще используется, а тригер уже нет вроде как ни есть хорошо 2) Есть ДАО который имеет метод insert, если такая запись уже есть в базе данных то метод выкидывает об этом ексепшен а) можно реализовать через простой запрос select count(*) from tabel_name с последующей проверкой количества возвращаемых записей б) можно через перехват ConstraintViolationException. Но тут проблема ведь я же не могу точно, когда произойдет flush Буду благодарен за любые подсказки и советы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 13:31:37 |
|
||
|
hibernate+oracle
|
|||
|---|---|---|---|
|
#18+
1) Сиквенсы с триггерами никак не связаны. Это вы где-то накосячили. 2) Значит делайте флаш руками сразу после вставки записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 13:51:46 |
|
||
|
hibernate+oracle
|
|||
|---|---|---|---|
|
#18+
2. а как связан перехват ошибки с flush. - делите все ошибки на 2 группы - которые в лог (подробности) и которые на верхний уровень. Это туда где БЛ и начало БИЗНЕС-транзакции. Вероятность наткнутся на "запись уже есть" - велика и её надо обработать, и не допускать (все проверки перед записью) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 14:18:59 |
|
||
|
hibernate+oracle
|
|||
|---|---|---|---|
|
#18+
Petro123а как связан перехват ошибки с flush. Ну, кэш первого уровня же. SQLException выкидывается не там где session.save(), а там где сессия сбрасывает своё состояние в базу. Это может быть flush(), а может быть другой метод в той же транзакции позже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 14:24:37 |
|
||
|
hibernate+oracle
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Точно, был такой вопрос тут - отложенный эксепшн в другом стеке уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 14:34:03 |
|
||
|
hibernate+oracle
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я вот что не пойму. Между save и сбросом в БД одна строка или ~ 1 сек. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. у нас как бы всё короткое на реквест, который сам менее секунды. Ну будет Raise не save а на Close - обработка исключения всё равно должна быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2012, 16:04:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37618013&tid=2132817]: |
0ms |
get settings: |
13ms |
get forum list: |
20ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
52ms |
get topic data: |
15ms |
get forum data: |
4ms |
get page messages: |
70ms |
get tp. blocked users: |
3ms |
| others: | 346ms |
| total: | 535ms |

| 0 / 0 |
