powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate+oracle
6 сообщений из 6, страница 1 из 1
hibernate+oracle
    #37617905
Synchrophasotron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток.
У меня скорее концептуальный вопрос. Как лучше использовать связку Hibernate + Oracle.
Сейчас столкнулся с несколькими проблемками:
1) обычно генерация ид на оракле построена через тригер и сиквенции.
при написании на java воспользовался слеудющей конструкцией
Код: java
1.
2.
3.
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "G1")
    @SequenceGenerator(name = "G1", sequenceName = "SQ_COMPANIES")


сиквенция все еще используется, а тригер уже нет вроде как ни есть хорошо
2) Есть ДАО который имеет метод insert, если такая запись уже есть в базе данных то метод выкидывает об этом ексепшен
а) можно реализовать через простой запрос select count(*) from tabel_name с последующей проверкой количества возвращаемых записей
б) можно через перехват ConstraintViolationException. Но тут проблема ведь я же не могу точно, когда произойдет flush

Буду благодарен за любые подсказки и советы
...
Рейтинг: 0 / 0
hibernate+oracle
    #37617943
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Сиквенсы с триггерами никак не связаны. Это вы где-то накосячили.
2) Значит делайте флаш руками сразу после вставки записи.
...
Рейтинг: 0 / 0
hibernate+oracle
    #37618013
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2.
а как связан перехват ошибки с flush.
- делите все ошибки на 2 группы - которые в лог (подробности) и которые на верхний уровень.
Это туда где БЛ и начало БИЗНЕС-транзакции.
Вероятность наткнутся на "запись уже есть" - велика и её надо обработать, и не допускать (все проверки перед записью)
...
Рейтинг: 0 / 0
hibernate+oracle
    #37618026
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123а как связан перехват ошибки с flush.

Ну, кэш первого уровня же. SQLException выкидывается не там где session.save(), а там где сессия сбрасывает своё состояние в базу. Это может быть flush(), а может быть другой метод в той же транзакции позже.
...
Рейтинг: 0 / 0
hibernate+oracle
    #37618061
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Точно, был такой вопрос тут - отложенный эксепшн в другом стеке уже.
...
Рейтинг: 0 / 0
hibernate+oracle
    #37618331
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
я вот что не пойму.
Между save и сбросом в БД одна строка или ~ 1 сек.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
Session session = HibernateUtil.currentSession();
Transaction tx= session.beginTransaction();
Cat princess = new Cat();
princess.setName("Princess");
princess.setSex('F');
princess.setWeight(7.4f);
session.save(princess);
tx.commit();
HibernateUtil.closeSession();


у нас как бы всё короткое на реквест, который сам менее секунды.
Ну будет Raise не save а на Close - обработка исключения всё равно должна быть?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate+oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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