Spring Framework has for long been around as the de facto standard framework for developing Java applications. From its early versions till now, there are many exciting new things taking place in the Spring ecosystem, including work in the areas of cloud computing and microservices, big data, schema-less data persistence, enterprise integration and many more. Hence, Spring on its own has been established as a complete base framework that addresses almost all modern business needs via its portfolio projects. Among all spring solutions, Spring Boot is maybe the most exciting new thing to come. Spring Boot offers a new paradigm for developing Spring applications with minimal effort, with more agility and with minimal (or possibly no) configuration effort. One of the main things that Spring Boot tries to do is to get Spring boilerplate out of your way and only leave the development of the business logic itself for you.
As part of this effort, Spring provides sophisticated support for diverse data access technologies. This simplifies significantly the implementation of data access layers regardless of the persistence technology used underneath. Although traditionally Spring supports relational databases, as NoSQL alternatives come to the foreground Spring extends its solutions to schema-less technologies as well. All these different approaches fall under a unified project, called Spring Datathat mainly consists of dedicated modules for NoSQL stores, JPA and JDBC modules.
Spring Data has been established as a must-have frameworkfor developing complex enterprise applications that collect, transform and report on vast amounts of information. Despite the different technologies for storing data, relational databases still constitute the backbone onto which other storing systems need always to connect. Moreover, they are still not only the starting point for every enterprise application but more importantly, they usually have a lifespan longer than the application itself. Although “enterprise application and relational database” is a common pattern, moving data back and forth between a database system and java object model has always been hard and needs a lot of unavoidable boilerplate code.
Spring Data, and in particular Java Persistence API (JPA) comes to bridge this gap between object-oriented domain models and relational database structures. In other words, Spring Data JPA is the standard way of persisting java objects into relational databases. It essentially consists of two parts: a mapping subsystem to map classes to relational tables and an entity manager API to access objects, define and execute queries, etc. Spring Data JPA is a data access abstraction, implying that it is not a JPA provider itself. This is a clear benefit as it can work equally well with different object-relational mapping (ORM) technologies that implement the JPA (e.g. Hibernate, EclipseLink).
Recognizing the significant impact of JPA as a necessary abstraction layer between the business logic and the database system that alleviates the need to write much error-prone boilerplate code, this course aims to dive into details of JPA and teach the participants a lot of best practices for including it to modern Java enterprise applications.
This specific Code.Learn program lasts 3 days (Thursday, Friday & Saturday) with 16 hoursof lectures and hands-on exercise on a real-life project.
Key Objectives – Curriculum (High Level)
Prior experience in Spring is not a prerequisite for participating in this training program. The flow begins with the very fundamental principles of Spring core framework, covering aspects such as bean lifecycle and scope, basic annotations, project setup, etc. After establishing a common understanding, the course dives into Spring Data JPA itself, covering the following topics (high-level approach):
- Spring Boot vs. Spring vs. Spring MVC
- Why Spring Boot is so popular – What Spring Boot is not
- Spring Boot new project setup and initialization
- Spring Framework Basics (dependency injection, autowiring, bean scope, bean lifecycle, application context with XML, application context with annotations and component scan, mixed application context, basic annotations)
- Unit testing in Spring
- Spring Data vs. Spring JPA vs. Hibernate
- From Spring JDBC to JPA
- JPA configuration
- Datasource configuration with Spring
- JPA and Hibernate
- Entity class
- One-to-one relationship
- One-to-many relationship
- Queries with JPQL
- Criteria Queries
- Queries based on method names
- Named queries
- Transaction management
- Lazy vs. Eager
- Performance trade-offs
- JPA testing approaches
All covered topics are followed by realistic hands-on code examples that solve practical problems.
Computer scientists, software engineers, and developers with or without prior experience in Spring are welcome to participate in this code.learn program and unlock the full potentiality of the topics taught by upskilling their future careers.