6

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

mengying.ye
  • 837
  • 2
  • 10
  • 21
  • Possible duplicate of [How are Spring Data repositories actually implemented?](https://stackoverflow.com/questions/38509882/how-are-spring-data-repositories-actually-implemented) – Jens Schauder Oct 13 '18 at 05:43

1 Answers1

7

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.
manish
  • 19,695
  • 5
  • 67
  • 91