简体   繁体   中英

Spring JPA: How to run multi sql query in one round?

In spring if we define method in repository like this: findByName(String name) , we could call this method to retrieve data back. What I want is that, could I have some ways to call 2 or more methods like I say above, and spring sends query to database in just one round instead of 2rounds? I would like to optimize performance in the case that I am certain that some sql queries will be sent togother

update: one round means in one connection we send multi sql queries. The object is to avoid more than one round trip time when there is more than 1 sql query is about to send. eg, query 1 is select * from table where xx=bb

query 2 is selext * from another_table where zz=cc

in trivial way, we may send 2 queries like this: 1. send query 1 by calling repository's findbyxx method 2. send query 2 by calling repository's findbyzz method

in above case, query 2 will be sent after query 1's response came back. This is a waste IMHW. I am seeking a way to send these 2 queries at once and got answer at once.

If you want to keep the database connection between these two queries, you must set up a transaction manager for your JPA Configuration:

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
   <property name="entityManagerFactory" ref="yourEntityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="txManager" />

This will imply that when you annotate a @Service 's method with @Transaction (or the whole class), the same session/connection will be kept between your queries.

For more info: https://www.baeldung.com/transaction-configuration-with-jpa-and-spring

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM