Середина между JDBC и Hibernate? - PullRequest
3 голосов
/ 07 февраля 2010

Недавно мы внедрили Hibernate вместо JDBC.

Что мне нравится, так это отсутствие необходимости постоянно писать операторы SELECT, UPDATE, INSERT и связанный с ними код PreparedStatement и ResultSet.

Однако мы боролись со случайным странным поведением ( пример A ), которое мне трудно понять и разрешить из-за всех различных параметров конфигурации / функций и связанного поведения Hibernate. Я нахожу некоторые функции, такие как кеширование, отложенная загрузка и т. Д., Очень полезными, но гораздо больше, чем мне нужно - и в конечном итоге сбивает с толку.

Есть ли лучшая золотая середина для тех, кто просто хочет избежать утомительности JDBC, но кому не нужны все функции Hibernate?

Ответы [ 2 ]

5 голосов
/ 07 февраля 2010

не полностью избегая jdbc, но ... я предлагаю использовать поддержку jbdc, предоставляемую Spring Framework. Вам все еще нужно написать свой выбор, обновить и вставить, но Spring красиво оборачивает его, так что вы обычно не заботитесь о наборе результатов, закрытии соединений, очистке вашего кода и т. Д.

Посмотрите эту главу из весенней документации, чтобы увидеть детали. Вы можете создать весь слой дао, который выглядит как слой гибернации дао, но внутренняя реализация отличается. Интерфейс RowMapper позволяет очень хорошо обрабатывать преобразование наборов результатов в объекты. В целом это обеспечивает четкое разделение проблем.

(другой альтернативой является использование iBATIS для облегченного отображения O / R или, по крайней мере, для сохранения запросов sql вне кода Java).

0 голосов
/ 07 февраля 2010

Как насчет использования Hibernate (или TopLink ) в качестве поставщика JPA . IMO Я считаю, что основанный на аннотациях JPA подход к выполнению ORM намного проще для понимания / реализации, чем Hibernate напрямую, и вы всегда можете выпасть и выполнить «сложные» вещи непосредственно с Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...