Отображение представления SQL в JPA Entity
В моем проекте разработки я использую JPA (hibernate) как технологию OR Mapping для доступа к базе данных. Иногда я сталкиваюсь с проблемами производительности и техническими трудностями, когда я сопоставляю таблицу DB с объектами напрямую для сложных отношений.
Я обнаружил, что обходным путем является отображение DB-представления в объекты JPA. Это упрощает кодирование, а иногда и производительность. Считаете ли вы, что это анти-шаблон использования JPA таким образом?
Ответы
Ответ 1
Это не обходной путь, а не анти-шаблон. Есть тема на сопоставление объектов JPA с представлениями SQL.
Это дает вам достаточно информации о том, использовать этот метод или нет.
Лично я предпочитаю классы Java, и поэтому я использую выражение конструктора классов результатов. Он создает и заполняет объекты предоставленного класса на основе запроса результатов.
Вы можете просмотреть оба этих метода, которые повышают производительность и уменьшают сложность структуры.
Ответ 2
У меня возникла проблема со ссылкой JMelnik любезно предоставлено: Я создал сложный запрос в виде представления в Javadb, затем попытался перетащить представление в форму, но Netbeans не позволял мне его удалять (поэтому я не мог автозаписывать связанную таблицу. Я видел по этой ссылке я не только тот, кто испытал это.
Решение, которое сработало для меня:
Создать вид в db, для вашего сложного SQL с объединением
Создать сущность из базы данных в пакете сущностей и назовите ее xxxViewName
- Убедитесь, что поле в объекте идентифицировано как ключ, добавив над ним "@Id".
Создайте запрос на сохранение Java в Navigator:
-
Убедитесь, что дизайн формы виден, затем щелкните правой кнопкой мыши "Другие компоненты" в Навигаторе и выберите "Добавить из палитры" > "Сохранение Java" > "Запрос"
-
Настройте запрос: НЕ используйте обычное "show xxxViewName" (что не удается, потому что JPA не поддерживает показ). Используйте Select w из xxxViewName w "
Создать результат сохранения Java-данных в Навигаторе:
- Аналогично созданию запроса. Обязательно задайте параметры типа списка для
Привяжите JTable к списку.