Независимость от базы данных Java SQL - PullRequest
1 голос
/ 30 марта 2010

Я искал альтернативу Hibernate по разным причинам.Я натолкнулся на Liquibase, и мне нравится идея, поэтому я хочу попробовать ее.Liquibase будет обслуживать создание / модификацию базы данных независимо от SQL.Мой главный вопрос - как мой код в моем приложении выполняет операторы SQL, не будучи зависимым от базы данных?Есть ли какой-нибудь другой проект, который действует как классы Hibernates Dialect?

Спасибо,

Пол

Ответы [ 4 ]

1 голос
/ 31 марта 2010

Мой главный вопрос - как мой код в моем приложении выполняет операторы SQL, не завися от базы данных?

Что ж, единственный способ действительно добиться этого - использовать запрос более высокого уровняязык, чем SQL, который будет переведен в базу данных конкретного SQL.И у нас уже есть несколько (проприетарных, стандартных) DSL для этого: Toplink QL, EJB-QL, JDO QL, HQL, JPQL и т. Д. Я бы посоветовал выбрать яд (но, пожалуйста, не бросайте свое решение).

1 голос
/ 30 марта 2010

Я сомневаюсь в этом - диалекты в hibernate используются для перевода объектов и HQL-запросов в собственные нативные запросы.

Если вы хотите использовать простые SQL-запросы, вам следует перевести SQL-запросы в .. SQL-запросы.

Одним из способов достижения независимости от базы данных является использование только ANSI SQL. Но даже это не гарантирует полной независимости базы данных.

Я бы предложил придерживаться режима гибернации и HQL (JPA-QL)

1 голос
/ 30 марта 2010

Если вы хотите использовать классы генерации SQL liquibase вне обычного процесса liquibase, вы можете это сделать. Особенно в 2.0 классы генерации sql были улучшены и абстрагированы, но в зависимости от того, что вы хотите запустить, они могут не соответствовать вашим потребностям.

Поскольку liquibase касается миграций базы данных, большая часть независимой от базы данных логики основана на выражениях DDL (создать таблицу / добавить столбец и т. Д.), А не на операторах insert / update / delete. Не зная, какой тип операторов вы будете запускать, я предполагаю, что вас больше волнуют операторы вставки / обновления / удаления между базами данных, и в этом случае вам будет лучше обслуживаться hibernate / ibatis / и т.д.

1 голос
/ 30 марта 2010

Одной из проблем использования SQL является то, что он зависит от поставщика. Я не думаю, что есть способ обойти это без использования сторонней библиотеки или фреймворка (например, Hibernate!).

Но если вы используете SQL, я настоятельно рекомендую вам взглянуть на Ibatis .

...