powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / обработка hibernate ошибок
16 сообщений из 16, страница 1 из 1
обработка hibernate ошибок
    #38338780
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
всегда писал dao методы примерно так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public boolean update(Candidate candidate) {
		Session session = sessionFactory.openSession();
		if (candidate == null) {
			return false;
		}
		try {
			session.beginTransaction();
			session.update(candidate);
			session.getTransaction().commit();
			return true;
		} catch (HibernateException e) {
			logger.warn("operation was not completed " + e);
			return false;
		} finally {
			session.close();
		}
	}



но потом заметил, что
Код: java
1.
session.close

тоже может выкинуть
Код: java
1.
HibernateException


Тогда подумалось, что стоит вытащить exception в объявление метода, но тогда я не смогу в finally закрывать сессию.


P.S. использую hibernate в связке со spring
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38339475
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90но потом заметил, что
Код: java
1.
session.close

Использовать вложенный try-блок запрещено по религиозным соображениям:
Код: sql
1.
2.
3.
4.
5.
6.
finaly {
  try {
    session.close();
  }
  finaly {
  }

?
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38339709
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,

я надеялся на более элегантный способ.
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38339749
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, есть же Spring... Была же тема пару недель назад.
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340156
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

да, уже понял, что и сессию можно spring отдельно создавать и обработку через @ExceptionHandler

только почему то во всех примерах создания сессии через spring dao методы делаются @transactional
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340162
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90да, уже понял, что и сессию можно spring отдельно создавать и обработку через @ExceptionHandler

Какое это имеет отношение к текущей теме

redwhite90только почему то во всех примерах создания сессии через spring dao методы делаются @transactional
1) Чтобы не писать всё то что вы привели выше для каждого метода.
2) Чтобы иметь транзакции длиннее чем один метод. С вашим кодом так не выйдет.
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340170
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

@ExceptionHandler
разве никак не относится к этой теме?
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340175
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340177
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@ExceptionHandler это фича Spring MVC
К уровню работы с базой данных она отношения не имеет.
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340237
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90P.S. использую hibernate в связке со spring
не заметно
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340265
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

действительно, не работает...
а как лучше то тогда сделать? сделать метод throws и обрабатывать на уровне контроллера?
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340279
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90а как лучше то тогда сделать? сделать метод throws и обрабатывать на уровне контроллера?
Может таки начать использовать Spring? У него уже есть свои обертки вроде DataAccessException
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340288
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

я хочу Spring использовать)

угостите примером?
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340305
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90я хочу Spring использовать)
угостите примером?
http://static.springsource.org/spring-data/data-jpa/docs/current/reference/html/
Если мануал не по зубам, то можно начать отсюда
http://www.springsource.org/spring-data/jpa
там есть ссылки на видео-уроки и github примеров.
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340329
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

спасибо
...
Рейтинг: 0 / 0
обработка hibernate ошибок
    #38340564
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте @Transactional методы. Они ловят все исключения и откатывают транзакцию. более того - при этом не нужно самому явно вызывать session.close(), т.к. @Transactional за это отвечает и мешать ему не надо. Также не нужно самому манипулировать транзакциями: начинать их и коммитить. Оставьте всю работу спрингу
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / обработка hibernate ошибок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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