mengying.ye
mengying.ye

Reputation: 877

How spring data generate sql according to method name?

I know spring data jpa can execute sql by two ways.One is execute sql which is included by @Query, the other is parse method name and generate sql. I clone the source code of spring data jpa from github and want to find how spring data generate sql according to method name.But I can't find the class which is related to parse method name.So,could you tell me something about how spring data jpa works about parsing method name?Thanks

Upvotes: 6

Views: 2344

Answers (1)

manish
manish

Reputation: 20135

Its a multi-step process:

  1. Spring Data JPA generates a proxy class for the repository interface.
  2. The proxy generates a PartTree instance for each repository method using the PartTreeJpaQuery class. The PartTree class is part of the Spring Data Commons module, which is a dependency for the store-specific Spring Data modules (like the Spring Data JPA module).
  3. The PartTree is then passed to a JpaQueryCreator to generate a JPA CriteriaQuery instance.
  4. The CriteriaQuery instance is passed to the underlying JPA provider (Hibernate, OpenJPA, EclipseLink, etc.) which then generates SQL to be executed.

Upvotes: 7

Related Questions