Только для чтения Multitable DTO + Hibernate - PullRequest
2 голосов
/ 23 октября 2011

У меня есть две таблицы в моей БД, T1 и T2.Один столбец T1 является внешним ключом, который ссылается на T2.Для обработки мне нужна только часть столбцов T1 и T2, поэтому я создал DTO T1T2, который содержит только необходимые столбцы.Чтобы сопоставить DTO с этими двумя таблицами в Hibernate, я использовал атрибут subselect элемента class.

<hibernate-mapping>
<class
    name="com.xconnect.cdrrecorder.processing.dto.IngressNumRuleVoipProfile"
    table="numbermodificationrules"
    subselect="select ... from T1 left join T2 on id1=id2 where ...">

    <cache usage="read-only"/>

...

</class>
</hibernate-mapping>

Я заметил, что когда мне нужно выбрать объект, Hibernate преобразует запрос в два выбора (одинв другой).

Есть ли лучший способ сделать это?Что вы думаете о выступлениях?

Спасибо

1 Ответ

4 голосов
/ 23 октября 2011

Если вы создаете DTO, лучше заполнить DTO из запроса, как в примере здесь . Создавайте сущность только в том случае, если есть резервные таблицы.

Если DTO используется очень часто, вы можете записать представление в БД и создать простую сущность DTO для ссылки на это. Поскольку представление предварительно скомпилировано в БД, оно будет быстрее.

...