Настройка SQL запросов в Hibernate

316
08 августа 2017, 14:28

Добрый день, разрабатываю систему отчетности в виде web-приложения. Использую Spring и Hibernate.

Сделал xml файл ИмяСущности.hbm.xml, в него положил запрос CDATA.

<hibernate-mapping>
<class name="domain.Worklog" table="worklog">
<id name="id" column="id" />
  <property name="author" column="AUTHOR" type="string"/>
  <property name="startdate" column="STARTDATE" type="date"/>
  <property name="timeworked" column="timeworked" type="int"/>
</class>
<query name="xmlGetWorkLog">
    <![CDATA[FROM Worklog w WHERE w.author = :user]]>
</query>
</hibernate-mapping>

Хотел бы узнать, есть ли возможность вынести настройки запросов

<query name="xmlGetWorkLog">
    <![CDATA[FROM Worklog w WHERE w.author = :user]]>
</query>

в отдельный файл общий xml и в файлы сущностей уже его просто импортировать? как-нибудь через mapping resources?

Так как запросы могут меняться, добавлять, удалять, не хотелось бы чтобы это делалось в файле настройки сущностей. А был общий файл настройки запросов и в нем менять.

Толкового не нашел в сети ничего :( Может кто так делал?

Или все же проще делать это через DOM и далее собирать запрос через StringBuilder?

Answer 1

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

entity.xml:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE hibernate-mapping[
  <!--- здесь включаем внешний файл query.xml --->
  <!ENTITY query SYSTEM "query.xml">
]>
<hibernate-mapping>
  <class name="domain.Worklog" table="worklog">
  <id name="id" column="id" />
    <property name="author" column="AUTHOR" type="string"/>
    <property name="startdate" column="STARTDATE" type="date"/>
    <property name="timeworked" column="timeworked" type="int"/>
  </class>
  &query; <!--- а здесь используем подключенный файл --->
</hibernate-mapping>

query.xml:

<query name="xmlGetWorkLog">
    <![CDATA[FROM Worklog w WHERE w.author = :user]]>
</query>

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

READ ALSO
Redirect:/ После авторизации Spring java

Redirect:/ После авторизации Spring java

На сайте система авторизацииSpring security

281
Микросервисная архитектура Java

Микросервисная архитектура Java

Посредством чего или с помощью чего взаимодействует один микросервис с другим?

437
Библиотеки для работы с COM-портом

Библиотеки для работы с COM-портом

Нужно сделать примитивное общение с устройством через COM-портКакие есть вообще библиотеки для этого? Что ни нахожу в гугле - то пизанские...

336
Некорректный прием данных через COM-порт

Некорректный прием данных через COM-порт

Есть плата Adruino UnoС нее через Serial передаю в COM-порт данные( if(Serial

344