Плохая практика использования JPA и PreparedStatements? - PullRequest
0 голосов
/ 27 февраля 2019

Я пишу Java-приложение, в котором я использую Spring Boot и JPA для сопоставления классов с таблицами базы данных.

Однако из-за несколько сложной структуры базы данных мне также необходимо создатьпользовательские запросы, которые не сопоставлены с какими-либо конкретными объектами POJO.

Поэтому я использую PreparedStatement вместе с DataSource с аннотацией @Autowired.

Меня поразило, что использование обоих этих методов доступа к БД может не подходить для совместного использования?

До сих пор все работало в моей среде разработчиков, но есть ли какие-то подводные камни, на которые я должен обратить внимание при использовании обоих вместе, или есть предпочтительный способ выполнения пользовательских запросов при использовании JPA?

Следует отметить, что мои вызовы базы данных довольно короткие и происходят без сохранения состояния, поэтому, надеюсь, не должно быть никаких проблем с мешающими сеансами (?)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Ответ Инвана ясно дает понять.

С другой стороны, ваш штраф, когда:

  • вам нужны сложные запросы для показа данных (только для чтения).
  • вам редко нужносделать несколько пакетных обновлений и очистить кеш entityManager.getEntityManagerFactory().getCache().evictAll()
0 голосов
/ 27 февраля 2019

JPA EntityManager не будет ничего знать о ваших изменениях, сделанных с помощью PreparedStatement.Это вызовет проблемы со встроенным кэшированием JPA, возможно, с контролем версий, а также с поддержкой транзакций.

Хотя вам, возможно, придется проверить этот вопрос: Можно ли использовать оба JPA (для обычных CRUD)и JDBC (для пакетного обновления и вызова сохраненного процесса) в одном проекте

...