Правильное использование Spring mvc 3 со спящим режимом (Spring ORM)

Я начинаю новый проект, пытаюсь сделать все правильно на этот раз (так что несколько вопросов), мне может понадобиться помощь, я не уверен, что делаю неправильно:

  1. Контекст Spring
  2. Контроллер
  3. Интерфейс службы
  4. Реализация службы
  5. Интерфейс DAO
  6. Реализация DAO

Я хочу максимально использовать Spring MVC, как мне сделать открытие / закрытие сеанса обработанным @Transactional?

Как мне перехватить исключения (например, несуществующая запись или сбой базы данных), если они есть. т.е. Моя база данных не принимает повторяющиеся записи, подобные этой:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry

Как я могу это поймать?

И на каждый следующий запрос я получаю это исключение:

org.hibernate.AssertionFailure: null id in com.test.spring.ws.service.impl.TestObject entry (don't flush the Session after an exception occurs)

Что я делаю не так? Кто-нибудь может предложить улучшения в моем проекте?

8
задан London 15 July 2011 в 15:49
поделиться