Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring boot JPA without Spring data

I'm gradually introducing Spring Boot to a Spring JPA project. My intent was to first introduce Spring Boot, than at some later stage Spring Data, but I was not able to find any examples (nor a suitable starter) that uses Spring Boot + JPA without Spring Data.

How come? Is there any benefit of introducing Spring Boot to Spring JPA project, without Spring Data, or does it make sense only with Spring Data in place.

Any article link or example code would be helpfull and appreciated, thanks

More context

I'm working with a live project so every change introduces risk. We're discussing of moving from XML to JAVA based configuration, and I'm advocating adopting Spring Boot at a same time, but I lack persuasive selling points.

Personally, I want to include Spring Boot on all layers to boost future productivity, but I need to argue better the direct immediate benefits of using it in our Service/DAO module which is at the moment based on Spring/JPA/Hibernate with the good old manual CRUD implementations.

So I need selling points for using Spring Boot on a persistence layer, but ones that span beyond Spring Data (e.g. configuration gains, maintenance, testing...anything)

like image 856
learnAndImprove Avatar asked Feb 07 '23 06:02

learnAndImprove


2 Answers

As folks have said above, there is no Spring Boot JPA. It's either Spring Boot Data JPA, or JPA on its own.

The immediate benefits that I could think of:

  • With Spring Data JPA you don't write the Dao layer. For all CRUD operations, the CrudRepository interface gives you all you need. When that is not enough, all you have to use is the @Query annotation to fine-tune your SQLs

  • Configuration by convention. For example, with Spring Boot, just having the H2 dependency in the classpath gets Spring to use the H2 in-memory database, gives you Datasource configuration and transaction management (only at the JPA repository level) by default

  • Ability to create micro-services. With Spring Boot, you can create micro services that can be deployed and run on a number of boxes with java -jar ...

  • You can enable annotation-based transaction with one simple annotation: @EnableTransactionManagement

  • Java configuration over XML. This advantage is not to be underestimated

  • A lot less code (the DAO layer) means also a lot less maintenance

  • The native ability to provide a RESTful API around data: https://spring.io/guides/gs/accessing-data-rest/

It all depends where your company is heading for. If they want to deliver business value faster and move towards more a DevOps operating model, then the above advantages should be enough selling points for any organisation

like image 150
Marco Tedone Avatar answered Feb 14 '23 00:02

Marco Tedone


Spring wiht JPA (for example Hibernate) but without Spring-Data-Jpa means that you direct interact with the JPA Entity manager and. Typical you use it to implement your own DAO from it and use the @Respository annotation.

@Respository
public class UserDao {
    @PersistenceContext EntityManager em;

    public User findUserByLogin(Sting login) {
        ....
    }
}

Even if there is no starter project, you could use a Spring-Data-JPA project, and implement the Repository in this old fashion style. (And then you could show how simple it become when you just write Spring-Data-JPA interfaces)

like image 41
Ralph Avatar answered Feb 14 '23 00:02

Ralph