2012-03-05 4 views
2

Я работаю над проектом, который использует Spring 3.0, hibernate 3.0. Мой проект имеет уровни Controller, Service и DAO. Даос (написанный в спящем режиме) доступен с уровня обслуживания. Теперь мне нужно использовать как Hibernate, так и JDBC. Часть спящего режима составляет около 80-90%. Для оставшихся 10% я должен использовать простой JDBC (можно использовать JdbcTemplate). Пожалуйста, предложите мне, как мне сходить и для спящего режима, и для Jdbc вместе. Мне нужен дизайн с разделением, повторным использованием. И как это реализовать весной?Использование Hibernate и Jdbc как в Spring Framework 3.0

Любые предложения приветствуются.

Спасибо заранее!

ответ

5

Вы можете безопасно смешивать спящий режим с весной JDBC, и оба должны иметь возможность обмениваться транзакциями, управляемыми HibernateTransactionManager. Имейте в виду, что вы должны использовать весенние шаблоны для достижения этого, потому что они могут обнаруживать и повторно использовать связанное с потоком соединение с активной транзакцией. Если по какой-то причине вы хотели бы добавить в микс другую библиотеку jdbc (например, groovy sql), вы все равно можете сделать это через весну DataSourceUtils.

Единственные потенциальные проблемы могут возникнуть, когда оба шаблона hibernate и spring jdbc работают с одними и теми же данными. Спящий режим может задерживать обновления базы данных, а весна jdbc будет обращаться к устаревшим данным. Мой опыт в этом взаимодействии исходит из более старых версий весны, и в настоящее время могут быть некоторые механизмы для решения этой проблемы.

+0

Можете ли вы рассказать мне, как мне его использовать? любой пример того, как получить соединение и как его использовать? –

+0

С пружиной jdbc вам не нужно устанавливать соединение или управлять им вручную, вы предоставляете обратные вызовы (rowmappers) для обработки данных. Лучше всего ссылаться на отличную весеннюю документацию для объяснения и примеров. – mrembisz

+0

спасибо mrembisz! –

1

Я пишу этот ответ в надежде, что люди улучшат мой ответ, поскольку это может быть не лучший ответ, поэтому, пожалуйста, прокомментируйте.

В спящем режиме вы можете использовать именованные родной запрос примера: http://www.java2s.com/Code/Java/JPA/UsingNamedNativeQuery.htm Scroll немного вниз и найти файл: Professor.java Вы можете использовать этот пример. Таким образом вы можете запускать собственные запросы из спящего режима.

+0

спасибо выродка! но я хочу использовать простой JDBC. –

+0

Хорошо, как насчет создания уровня доступа к данным (DAO - это объекты, я предлагаю создать пользовательский уровень), чтобы возможности Hibernate и Native JDBC могли использоваться в соответствии с потребностями. Это было бы похоже на то, что у вас есть этот другой уровень (интерфейс), который имеет некоторый набор методов для выполнения операций, которые вы хотели бы сделать, используя возможности спящего режима, такие как CRUD, вы также поддерживаете создание пользовательского запроса на спящий режим (OR, Between, AND и т. Д.), и у вас есть метод для принятия простых запросов JDBC, и он возвращает набор результатов (Recordset) – Geek

+0

Вы собираетесь иметь несколько реализаций тех же DAO? т.е. PersonDaoHibernate и PersonDaoJdbc? – bvulaj

Смежные вопросы