Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 214
mengying.ye Avatar asked Jul 22 '16 05:07

mengying.ye


1 Answers

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.
like image 187
manish Avatar answered Nov 08 '22 22:11

manish