Поддержка JPA для столбцов типов данных XML - PullRequest
6 голосов
/ 03 сентября 2010

Для нового проекта, который мы начинаем (который использует JPA 2 поверх Hibernate 3), мы должны иметь возможность хранить документы XML, а затем запрашивать их содержимое и структуру позже.Базы данных, которые мы хотели бы поддерживать, - это DB2, Oracle и SQLServer.

Я знаю, что все три поставщика БД поддерживают нативные запросы XML (используя операторы, подобные SQL и XQuery), но есть ли в Hibernate прямая поддержка для этого?Другими словами, могу ли я написать один набор кодов доступа к данным Hibernate, который запрашивает все 3 типа баз данных независимо, используя встроенную функцию Hibernate / JPA, или мне нужно было бы кодировать конкретные запросы для каждого типа БД?

Я ценю, что мог определить столбец как столбец @Lob, а затем прочитать все записи, проанализировать и проверить, но я надеялся использовать всю мощь механизма БД, а не делать это сам.

Длямы будем использовать только один вариант БД за раз, просто мы хотим поддерживать все 3, если нам нужно.

Спасибо, Стив

1 Ответ

2 голосов
/ 03 сентября 2010

JPA не предлагает конкретной поддержки для этих проприетарных типов, кроме Lob. Для более расширенной поддержки, я думаю, вам придется реализовать некоторые пользовательские типы Hibernate. Следующие документы могут дать вам некоторые идеи.

Конечно, они будут привязаны к базе данных и сделают код менее переносимым.

Что касается запросов, AFAIK любая функция, которая вызывается в предложении WHERE оператора HQL и которая не известна Hibernate, передается в базу данных как есть. Таким образом, вы могли бы использовать определенные функции. Но опять же, это сделает базу данных запросов конкретной. Возможно, стоит рассмотреть возможность использования сопоставлений orm.xml для конкретных развертываний.

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