This course is prepared for Intermediate Learners.
What you will learn!
Understand the right way to develop APIs using Spring Boot and JPA.
Understand how to tune API query performance using Spring Boot and JPA.
Understand how to optimize practical performance using Spring Boot and JPA.
Spring Boot, if you want to use it well in practice? Develop the power to solve complex problems.
🚩 This course is a roadmap course.
This lecture is the second lecture of the practical course of Java backend development. Please check the Spring Boot and JPA practical complete conquest roadmap first. (Link)
Real-world! Spring Boot and JPA Utilization 2 - API Development and Performance Optimization
In the Java world, it is a global trend to develop web applications using Spring Boot and JPA. So many developers are learning and using these two technologies. However, it is not as easy as it sounds to properly utilize these technologies while considering performance in various and complex situations in practice.
In practice, you need to be able to solve technical problems beyond the stage of developing features. You need to develop applications that optimize performance in complex, data-intensive situations and are easy to maintain at the same time.
Course Objectives
If Part 1 focused on implementing functions while developing web applications, Part 2 focuses on solving technical problems beyond functional development . We will help you solve technical problems by explaining how to properly implement them, what performance problems are common in practice, and how to solve them.
Implementing the API properly
Even if you develop one API, if you use JPA, there are many things to worry about because the concept of entities is included. Should entities be exposed directly to the API? Or should they be returned as separate objects? How should lazy loading be handled if entities are returned? You will have many concerns. We will tell you practical know-how on how to implement them safely and maintainably in practice.
In practice, complex situations often arise where multiple tables must be joined to quickly retrieve data. However, collection data with one-to-many relationships must also be retrieved, and additional paging may be required. Then, the problem becomes very complex, and it is difficult to solve the problem simply by joining tables. We will share practical know-how on how to optimize such complex query performance problems with JPA, and what the limits are.
Performance tuning by coding complex examples in 6 steps
We have prepared a system where you can develop an API that does not perform well, analyze why it does not perform well, and tune it by dividing it into 6 steps and coding step by step . If you follow this content, you will naturally learn how to deal with complex performance issues in practice.
Solves 90% of practical JPA performance issues
This lecture covers various performance problems that occur frequently in practice so that you can solve 90% of practical JPA performance problems. When I look at practical projects using Spring Boot and JPA, I see many developers who are good at implementing functions but struggle because the performance is not good at the end of the project. So when I go to help them, there are many people who don't know how to optimize JPA performance.
I've seen a wide variety of situations, from people who stay up all night trying to solve it somehow, to people who don't know how to do it and manually write SQL instead of JPA, changing a lot of code to SQL. However, when I actually went to help, it didn't even take 5 minutes to tune it for good performance. I can still vividly see the look on the developer's face when he saw a query that used to take an hour after struggling for several days reduced to tens of seconds by adjusting the JPA query options and modifying only a few codes. JPA already provides various performance tuning options in itself . Therefore, you can try various performance optimizations with just a few options and code modifications.
If you understand what is explained in this lecture, you will be able to solve 90% of practical performance problems.
Main Table of Contents
Recently, rather than using view templates to directly create HTML on the server and respond, it is common to load JSON data into an API and return it. The goal of this article is to understand the points to keep in mind and the correct design direction when developing an API using Spring Boot and JPA, and to complete the API while considering performance.
Part 2 develops a REST API based on the domain created in Part 1. Then, we step by step optimize the performance of the API for querying. Through this process, we will quickly and clearly explain the parts related to JPA query tuning that are essential in practice.
API Development Basics : Develop a basic REST API for registration, modification, and querying.
Advanced API Development: We will inform you of the precautions and correct design direction when developing APIs for querying with JPA in practice. We will solve JPA lazy loading issues and explain various performance optimization methods step by step.
Essential Optimizations for Practice: Covers OSIV topics that can lead to practical problems if not handled carefully when using Spring Boot and JPA.
How to learn
This course is mostly hands- on, so you'll get the most out of it if you follow the course from start to finish and code on your own .
For reference, this lecture is for those who have some knowledge of Spring Boot and JPA and can develop simple web applications. The goal is to help these people gain a technically in-depth understanding beyond functional implementation. Therefore, if you lack understanding of Spring Boot and JPA, it is recommended that you first take the first lecture.
💻 Check out the player lecture!
We will develop an API based on the domain model designed in Part 1 and show various performance optimization techniques. Therefore, we recommend that you listen to Part 1 and then Part 2.
Practice! Querydsl Solve complex and dynamic query problems with Querydsl.
reference book
The book is for those who want to study more in depth. You can think of it as a reference book. (If you do not have a book, separate materials for the lecture will be provided.)
Recommended for these people!
Who is this course right for?
For those who use Spring Boot and JPA in their work but want to get better use out of the technology
I know Spring Boot and JPA, but I want to understand the correct way to develop APIs.
Those who know Spring Boot and JPA, but want to understand the performance optimization techniques required for practical use
I know Spring Boot and JPA, but I want to understand the in-depth content that is essential for practical use.
What if I tell you everything, Team Leader!
This lecture is full of know-hows that have been very helpful in my work.
Thank you for making such a great lecture :)
Thanks to the numerous Q&A's posted by students studying Spring and JPA together, if you have any questions while watching the lecture, 90% of them can be resolved by referring to the Q&A. This is because King Young-Hwan has been paying attention to the Q&A from the beginning... It is a lecture where I can earn money just by paying and listening.
I have completed the JPA Basics and Utilization 1 and 2.
There were many lectures that were so boring that it was hard to listen to them without playing them at high speed, but I couldn't play Younghan's lectures at high speed. The content was so rich and the lecture tension was good, so I was able to concentrate and listen to all the lectures. Thank you for the great lecture~!~!
Wow! Thank you, Jeongwon. Actually, I also think that tension is important, so when the tension dies down, I take it again. ㅋㅋㅋ I worked hard on this part, so I feel good to receive good feedback. ㅎㅎ
* You explain the best practices, but you also explain the bad practices, so I could understand why the improved ones are the best practices.
* You explain in detail the trade-offs of development convenience, performance, and maintenance. I haven't experienced much traffic yet, but I was able to understand what backend developers should consider to improve performance when the service grows and traffic increases.
* When I worked on improving performance, you showed me SQL queries one by one and explained how performance optimization is done, and also explained that this type of performance optimization is not always a silver bullet.
After listening to the explanation of Spring Data JPA and QueryDSL, I feel like I want to solidify my basics of DB and JPA.
Thank you for sharing your practical experience in a great lecture :)