JAVA-同时使用JPA和PreparedStatement的错误做法?

时间:2019-02-27 19:08:21

标签: java spring-boot jpa prepared-statement datasource

我正在编写一个Java应用程序,在其中使用Spring Boot和JPA以便将类映射到我的数据库表。

但是,由于数据库结构有些复杂,我还需要创建未映射到任何特定POJO /实体的自定义查询。

因此,我将PreparedStatement与带有DataSource注释的@Autowired一起使用。

让我惊讶的是,同时使用这两种数据库访问方法可能不合适吗?

到目前为止,所有事情都在我的开发环境中解决了,但是当同时使用这两种方法时,我是否应该注意一些陷阱?或者在使用JPA时是否存在首选的自定义查询方法?

应该注意的是,我的数据库调用非常短并且以无状态方式发生,因此希望会话之间不会有任何问题(?)

2 个答案:

答案 0 :(得分:2)

JPA EntityManager对您使用PreparedStatement所做的更改一无所知。这将导致JPA内置缓存(可能是版本控制以及事务支持)出现问题。

尽管您可能需要检查以下问题:Is it OK to use both JPA (for normal CRUDs) and JDBC (for batch update & call stored proc) in the same project

答案 1 :(得分:2)

Invan的答案很明确。

另一方面,在以下情况下您可以罚款:

  • 您需要复杂的查询才能显示数据(只读)。
  • 不经常需要进行一些批处理更新并进行明确的缓存a