Posts

Showing posts from January, 2026

MongoDB Advanced Data Modeling dengan Spring Boot

Image
Sebelumnya kita sudah belajar tentang membuat applikasi spring boot sederhana dengan mongodb di artikel ini  spring-dan-mongodb-user-login  dan juga ini  belajar-relasi-mongo-db-dengan-studi , selanjutnya mari buat studi kasus yang lebih komplek untuk memberikan pemahaman lebih lanjut tentang MongoDB Advanced Data Modeling dengan Spring Boot. 1. Embedded vs Reference dan Implementasinya di Spring Boot Artikel ini merupakan lanjutan langsung dari pembahasan sistem rental mobil (Owner & Car) sebelumnya. Pada bagian ini, fokus kita bergeser dari sekadar CRUD dan relasi dasar menuju pemahaman mendalam tentang cara memodelkan data MongoDB secara fungsional, sekaligus bagaimana keputusan tersebut diimplementasikan dengan benar di Spring Boot. Tujuan utama artikel ini adalah membantu kamu berpikir seperti system designer, bukan sekadar penulis kode. 3. Mengubah Cara Pandang: MongoDB Bukan SQL Tanpa JOIN Kesalahan paling umum saat pertama kali menggunakan MongoDB adalah mempe...

Belajar Relasi Mongo Db Dengan Studi Kasus Rental Mobil

Image
Sebelumnya kita sudah belajar tentang membuat applikasi spring boot sederhana dengan mongodb di artikel ini  https://undebugable.blogspot.com/2026/01/spring-dan-mongodb-user-login.html , selanjutnya mari buat studi kasus yang lebih komplek dan memberikan pemahaman lebih lanjut tentang MongoDB pada Spring Boot. Belajar Relasi MongoDB dengan Spring Boot Studi Kasus: Platform Rental Mobil Berbasis Owner Pendahuluan Banyak developer yang sudah nyaman dengan relasi di relational database (JOIN, foreign key, dll), tapi mulai bingung ketika masuk ke MongoDB yang bersifat document-based . Artikel ini dibuat untuk menjembatani kebingungan tersebut dengan studi kasus nyata namun sederhana. Kita akan membangun platform rental mobil, di mana: Ada perusahaan rental sebagai platform Ada Owner (pemilik mobil) Setiap owner bisa memiliki banyak mobil Mobil-mobil tersebut disewakan melalui platform Fokus artikel ini BUKAN booking atau pembayaran, melainkan belajar relasi data di MongoDB menggunakan ...

Spring dan MongoDB USER LOGIN

Image
Jika sebelumnya kita membuat artikel  Spring Boot MongoDB - Simple App Tutorial , sekarang kita bangun USER LOGIN dari nol , berangkat dari collection users di MongoDB dan Spring Boot , rapi, aman, dan clean-code minded . TARGET AKHIR Collection: users Fitur: Register user Login user Password di-hash (BCrypt) Tanpa Spring Security dulu (biar alur logika login mudah dipahami ) STEP 1 — Struktur Collection users (MongoDB) Di MongoDB, user kita akan berbentuk seperti ini: {   "_id": ObjectId("..."),   "name": "Yusuf",   "email": "yusuf@gmail.com",   "passwordHash": "$2a$10$..." } Struktur dari collection users Isi dari collection users Prinsip penting: Tidak ada password plain Tidak ada token di DB Email unique Password = hash STEP 2 — User Entity (Domain Layer) domain/User.java Gunakan record supaya ringkas & immutable. package com.yusuf.springmongoclean.domain; impo...

Menangani Exception Secara Global dengan @ControllerAdvice dan @RestControllerAdvice di Spring Boot

Image
Pengenalan Dalam pengembangan aplikasi Spring Boot, penanganan error yang konsisten dan terstruktur merupakan hal yang sangat penting. Spring Framework menyediakan mekanisme yang powerful untuk menangani exception secara global menggunakan anotasi @ControllerAdvice dan @RestControllerAdvice . Artikel ini akan membahas kedua anotasi tersebut beserta implementasi praktisnya. Contoh RestControllerAdvice Apa itu @ControllerAdvice? @ControllerAdvice adalah anotasi yang memungkinkan kita untuk menangani exception secara global di seluruh aplikasi Spring. Dengan menggunakan anotasi ini, kita tidak perlu menulis blok try-catch di setiap controller atau method . Semua exception yang terjadi akan ditangkap dan diproses di satu tempat terpusat. Karakteristik @ControllerAdvice: Berlaku untuk semua controller dalam aplikasi Dapat menangani berbagai jenis exception Mendukung pembuatan response view (HTML, JSP, Thymeleaf) Cocok untuk aplikasi web tradisional yang mengembalikan halaman HTML Ap...