Aplikasi nyata menyimpan data di database. Section ini membahas akses database langsung (JDBC), ORM (Exposed, JPA), dan praktik manajemen transaksi.
Pelajari konsep inti relational database: table, primary key, foreign key, normalisasi 1NF-3NF, dan indeks untuk akses data yang konsisten.
Buka → # JDBC FundamentalsPelajari JDBC API di Kotlin: DriverManager, Connection, Statement, dan ResultSet sebagai fondasi akses database langsung tanpa ORM.
Buka → # Connecting to DatabasePelajari format JDBC URL, perbedaan SQLite (embedded) vs PostgreSQL (client-server), dan lifecycle koneksi yang aman.
Buka → # Executing SQL QueriesPelajari tiga method eksekusi SQL JDBC — execute(), executeQuery(), executeUpdate() — dan kapan memakai masing-masing untuk operasi baca atau tulis.
Buka → # Prepared StatementsPelajari PreparedStatement, parameter binding dengan placeholder ?, dan cara mencegah SQL injection yang menjadi celah paling umum di aplikasi database.
Buka → # Result SetsPelajari iterasi ResultSet dengan next(), akses kolom via getString/getInt, serta jenis cursor forward-only dan scrollable untuk navigasi fleksibel.
Buka → # Transaction ManagementPelajari transaction management JDBC: setAutoCommit(false), commit, rollback, savepoint, ACID properties, dan isolation levels untuk integritas data.
Buka → # Connection PoolingPelajari connection pooling dengan HikariCP: konfigurasi max pool size, idle timeout, dan mengapa pooling penting untuk aplikasi server.
Buka → # ORM FundamentalsPelajari Object-Relational Mapping: memetakan class Kotlin ke tabel SQL, keuntungan dan kerugian ORM, serta kapan memakainya.
Buka → # Exposed FrameworkPelajari Exposed DSL dari JetBrains: definisi Table, insert, select, dan blok transaction untuk akses database type-safe di Kotlin.
Buka → # JPA dan HibernatePelajari JPA sebagai standar persistence Java, implementasi Hibernate, anotasi @Entity/@Id/@OneToMany, serta lifecycle session.
Buka → # Entities dan RelationshipsPelajari 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 MigrationsPelajari database migrations dengan Flyway dan Liquibase: skrip SQL versi yang diterapkan berurutan untuk evolusi skema yang terkontrol.
Buka → # Database SeedingPelajari database seeding untuk mengisi data awal secara idempoten: INSERT OR IGNORE, ON CONFLICT, dan kapan seeding dipakai.
Buka → # Database TestingPelajari strategi testing database: SQLite in-memory atau H2 untuk kecepatan, Testcontainers untuk realisme, serta pola fixture per test.
Buka → # Database SecurityPelajari keamanan database: koneksi terenkripsi TLS, prinsip least privilege pada user DB, dan audit log untuk akuntabilitas operasi.
Buka →