In previous chapters, we learned about Spring core features, such as dependency injection (DI) and its configuration. We also saw how we can implement reusable code with the help of Spring Aspect-Oriented Programming (AOP). We learned how we can develop loosely coupled web applications with the help of Spring Model-View-Controller (MVC), and how we can optimize Spring MVC implementation to achieve better results using asynchronous features, multithreading, and authentication caching.
In this chapter, we will learn about database interaction with Spring Framework. Database interaction is the biggest bottleneck in application performance. Spring Framework supports all major data access technologies, such as Java Database Connectivity (JDBC) directly, any object-relational mapping (ORM) framework (such as Hibernate), the Java Persistence...