Aplikasi nyata menyimpan data di database. Section ini membahas akses database langsung (JDBC), ORM (Exposed, JPA), dan praktik manajemen transaksi.

# Relational Database Fundamentals

Pelajari konsep inti relational database: table, primary key, foreign key, normalisasi 1NF-3NF, dan indeks untuk akses data yang konsisten.

Buka →
# JDBC Fundamentals

Pelajari JDBC API di Kotlin: DriverManager, Connection, Statement, dan ResultSet sebagai fondasi akses database langsung tanpa ORM.

Buka →
# Connecting to Database

Pelajari format JDBC URL, perbedaan SQLite (embedded) vs PostgreSQL (client-server), dan lifecycle koneksi yang aman.

Buka →
# Executing SQL Queries

Pelajari tiga method eksekusi SQL JDBC — execute(), executeQuery(), executeUpdate() — dan kapan memakai masing-masing untuk operasi baca atau tulis.

Buka →
# Prepared Statements

Pelajari PreparedStatement, parameter binding dengan placeholder ?, dan cara mencegah SQL injection yang menjadi celah paling umum di aplikasi database.

Buka →
# Result Sets

Pelajari iterasi ResultSet dengan next(), akses kolom via getString/getInt, serta jenis cursor forward-only dan scrollable untuk navigasi fleksibel.

Buka →
# Transaction Management

Pelajari transaction management JDBC: setAutoCommit(false), commit, rollback, savepoint, ACID properties, dan isolation levels untuk integritas data.

Buka →
# Connection Pooling

Pelajari connection pooling dengan HikariCP: konfigurasi max pool size, idle timeout, dan mengapa pooling penting untuk aplikasi server.

Buka →
# ORM Fundamentals

Pelajari Object-Relational Mapping: memetakan class Kotlin ke tabel SQL, keuntungan dan kerugian ORM, serta kapan memakainya.

Buka →
# Exposed Framework

Pelajari Exposed DSL dari JetBrains: definisi Table, insert, select, dan blok transaction untuk akses database type-safe di Kotlin.

Buka →
# JPA dan Hibernate

Pelajari JPA sebagai standar persistence Java, implementasi Hibernate, anotasi @Entity/@Id/@OneToMany, serta lifecycle session.

Buka →
# Entities dan Relationships

Pelajari relasi entity JPA — one-to-one, one-to-many, many-to-many — serta strategi fetch EAGER vs LAZY dan jebakan N+1 query.

Buka →
# Database Migrations

Pelajari database migrations dengan Flyway dan Liquibase: skrip SQL versi yang diterapkan berurutan untuk evolusi skema yang terkontrol.

Buka →
# Database Seeding

Pelajari database seeding untuk mengisi data awal secara idempoten: INSERT OR IGNORE, ON CONFLICT, dan kapan seeding dipakai.

Buka →
# Database Testing

Pelajari strategi testing database: SQLite in-memory atau H2 untuk kecepatan, Testcontainers untuk realisme, serta pola fixture per test.

Buka →
# Database Security

Pelajari keamanan database: koneksi terenkripsi TLS, prinsip least privilege pada user DB, dan audit log untuk akuntabilitas operasi.

Buka →