是否有可能 "connection preparation" 与 Spring / JPA 持久性
Is it possible to have "connection preparation" with Spring / JPA persistency
我有一个 Spring CrudRepository
,它只是一个接口,我有一个持久性上下文 class,我在其中定义了我的数据源:
@Configuration
@EnableTransactionManagement
public class PersistenceContext {
@Bean(name="dataSource", destroyMethod = "close")
public DataSource dataSource() throws SQLException {
return ...
public interface DataRepository extends CrudRepository<Data, Long> {
Data findById(long id);
}
然后
@Autowired
protected DataRepository repository;
...
Data data = repository.findById(1234);
一切正常,但数据库模型使得我实际上需要在从使用代码调用 findById
之前在同一连接 上调用存储过程 。此过程必须采用调用代码将知道的参数,但它在调用之间会有所不同,因此不可能仅覆盖 DataSource.getConnection 和 return 以及 "prepared connection"。
在对 Spring 存储库进行访问代码之前,是否有任何方法可以 "prepare a connection"?
使用 AOP 似乎是一种方法:可以在下面找到使用 AOP 丰富 Spring 数据存储库的示例:
https://github.com/spring-projects/spring-data-jpa-examples
如果您可以在建议中获得对注入的 EntityManager 的引用,那么您应该能够使用此处详述的方法之一从中获取底层连接:
How can i get the session object if i have the entitymanager
要获取对 EntityManager 的引用,您可能必须创建一个自定义存储库,您的所有存储库都继承自该存储库:
我有一个 Spring CrudRepository
,它只是一个接口,我有一个持久性上下文 class,我在其中定义了我的数据源:
@Configuration
@EnableTransactionManagement
public class PersistenceContext {
@Bean(name="dataSource", destroyMethod = "close")
public DataSource dataSource() throws SQLException {
return ...
public interface DataRepository extends CrudRepository<Data, Long> {
Data findById(long id);
}
然后
@Autowired
protected DataRepository repository;
...
Data data = repository.findById(1234);
一切正常,但数据库模型使得我实际上需要在从使用代码调用 findById
之前在同一连接 上调用存储过程 。此过程必须采用调用代码将知道的参数,但它在调用之间会有所不同,因此不可能仅覆盖 DataSource.getConnection 和 return 以及 "prepared connection"。
在对 Spring 存储库进行访问代码之前,是否有任何方法可以 "prepare a connection"?
使用 AOP 似乎是一种方法:可以在下面找到使用 AOP 丰富 Spring 数据存储库的示例:
https://github.com/spring-projects/spring-data-jpa-examples
如果您可以在建议中获得对注入的 EntityManager 的引用,那么您应该能够使用此处详述的方法之一从中获取底层连接:
How can i get the session object if i have the entitymanager
要获取对 EntityManager 的引用,您可能必须创建一个自定义存储库,您的所有存储库都继承自该存储库: