Database Migration with Flyway
The Problem — Why ddl-auto=update is Dangerous in Production Since Lecture 5, we have been using this configuration: This tells Hibernate: “Compare my entity classes to the database and apply […]
The Problem — Why ddl-auto=update is Dangerous in Production Since Lecture 5, we have been using this configuration: This tells Hibernate: “Compare my entity classes to the database and apply […]
Layered Architecture — Controller → Service → Repository We have been using the layered architecture since Lecture 2, but we have never formally defined the rules that govern each layer. […]
Why Not Expose Entities Directly? The DTO Pattern Throughout Lectures 5–7, we returned JPA entities directly from our REST controllers. This worked for learning, but it causes serious problems in […]
Relationship Types in Relational Databases In the real world, data is connected. A user writes posts. A post has comments. A post belongs to categories and has multiple tags. Modeling […]
Repository Pattern Deep Dive What is the Repository Pattern? The Repository pattern is a design pattern that abstracts data access behind a clean interface. The idea is simple: your service […]
The Problem — Why Not Write Raw SQL in Java? In Lecture 4, you wrote SQL directly in the MariaDB shell. That is fine for database administration, but what about executing SQL from […]
1. Why a Relational Database? SQL Refresher The Problem with In-Memory Storage In Lectures 2 and 3, we stored data in Java HashMap and ArrayList. This worked for learning, but it has a […]
1. What is REST? Principles and Constraints In Lecture 1, we briefly mentioned REST APIs. Now let us dive deeper into what REST actually means and why it is the […]
Recap — From Java main() to a Running Web Server In Lecture 1, we created a Spring Boot application with a simple HelloController. Let us quickly revisit what happens when you […]
How the Web Works — HTTP Request/Response Cycle Before writing a single line of Spring Boot code, you need to understand what actually happens when you type a URL into […]