Learn Java Data Access Pattern In Action
// Mental model data access Java production-grade: state, query boundary, mutation boundary, transaction boundary, consistency, mapping, and failure model.
This overview is designed to help you choose the right entry point quickly. Follow the full track from lesson one, continue from your last checkpoint, or jump straight into a phase that matches what you need right now.
Curriculum Map
Navigate by phase, then choose the lesson that matches your current depth.
Data Access Mental Model
17 minMental model data access Java production-grade: state, query boundary, mutation boundary, transaction boundary, consistency, mapping, and failure model.
Data Access Layer Responsibility
16 minResponsibility map untuk DAO, Repository, Gateway, Unit of Work, Query Service, Transaction Script, dan boundary data access Java production-grade.
Relational Access From Java
15 minMemahami bagaimana Java benar-benar berinteraksi dengan database relasional melalui JDBC primitive: DataSource, Connection, Statement, PreparedStatement, ResultSet, transaksi, mapping, dan failure boundary.
Anti-Patterns That Destroy Data Layers
21 minMembongkar anti-pattern yang sering menghancurkan data access layer Java: repository bocor, entity bocor, N+1, transaksi kabur, generic repository, SQL tidak ter-review, error swallowing, dan testing palsu.
SQL-First vs Object-First vs Domain-First
13 minMembandingkan pendekatan SQL-first, object-first, dan domain-first dalam data access Java, termasuk trade-off, failure mode, dan cara memilih pendekatan yang tepat untuk sistem production-grade.
Data Access Decision Framework
15 minFramework keputusan untuk memilih JDBC, JPA, Hibernate, MyBatis, jOOQ, R2DBC, stored procedure, read model, atau kombinasi pattern data access Java secara production-grade.
Data Access Architecture Map
19 minPeta arsitektur data access Java untuk monolith, modular monolith, microservice, batch worker, dan API backend, dengan fokus pada boundary, ownership, query shape, transaction scope, dan evolusi sistem.
Production-Grade Data Access Invariants
18 minInvariant production-grade untuk data access Java: correctness, idempotency, transaction boundary, query stability, timeout, resource lifecycle, observability, testing, dan migration safety.
JDBC Core API
15 minDeep dive JDBC core API sebagai primitive dasar data access Java: DriverManager, DataSource, Connection, Statement, PreparedStatement, CallableStatement, ResultSet, metadata, transaction, lifecycle, dan architecture boundary.
PreparedStatement and Parameter Binding
18 minPreparedStatement dan parameter binding secara production-grade: SQL injection prevention, placeholder semantics, type binding, dynamic SQL, generated keys, batch execution, query naming, plan reuse, dan failure modes.
ResultSet Mapping Patterns
16 minPola mapping ResultSet ke DTO, row object, domain object, dan aggregate secara aman: nullability, type conversion, one-to-many mapping, projection, mapper contract, error handling, dan testing.
JDBC Transaction Control
18 minKontrol transaksi JDBC secara mendalam: auto-commit, commit, rollback, savepoint, isolation, transaction boundary, failure path, retry boundary, idempotency, connection lifecycle, dan production-grade transaction template.
JDBC Error Handling
20 minError handling JDBC secara production-grade: SQLException, SQLState, vendor code, transient vs non-transient error, constraint violation, deadlock, timeout, connection failure, retry policy, idempotency, dan semantic exception mapping.
JDBC Resource Lifecycle
20 minLifecycle resource JDBC secara production-grade: Connection, PreparedStatement, ResultSet, try-with-resources, pooled connection state, leak pattern, cancellation, timeout, streaming, transaction cleanup, and operational diagnostics.
JDBC Batch and Bulk Write
18 minBatch dan bulk write JDBC secara production-grade: addBatch, executeBatch, chunking, transaction sizing, generated keys, partial failure, BatchUpdateException, idempotency, upsert, staging table, lock pressure, dan observability.
JDBC Streaming Large Result
21 minStreaming large result JDBC secara production-grade: ResultSet cursor, fetch size, driver behavior, transaction scope, memory safety, callback vs Stream, chunking, export, cancellation, timeout, backpressure illusion, dan operational playbook.
Transaction Boundary Design
17 minDesain transaction boundary pada Java application: service layer, use case, command handler, repository, async boundary, outbox, audit, retry, idempotency, dan consistency boundary secara production-grade.
Isolation Level In Practice
19 minIsolation level dalam praktik Java data access: read committed, repeatable read, serializable, dirty read, non-repeatable read, phantom, lost update, write skew, predicate anomaly, retry, locking, dan invariant design.
Locking Patterns
16 minPola locking dalam Java data access: optimistic lock, pessimistic lock, SELECT FOR UPDATE, advisory lock, application lock, lease lock, deadlock prevention, lock timeout, SKIP LOCKED, dan kapan lock lebih tepat daripada constraint atau state machine.
Idempotent Write Pattern
20 minIdempotent write pattern untuk Java data access: idempotency key, command ID, unique constraint, dedup table, replay-safe result, request retry, message redelivery, outbox/inbox dedup, exactly-once illusion, dan production-grade implementation.
Concurrency Anomaly Lab
12 minLab anomaly concurrency untuk Java data access: double spending, duplicate approval, stale state transition, concurrent assignment, lost update, phantom, write skew, test dua connection, barrier/latch, dan cara membuktikan fix dengan constraint, version, lock, dan serializable.
Transaction Retry Pattern
14 minTransaction retry pattern untuk Java data access: deadlock, serialization failure, transient connection issue, retry budget, exponential backoff, jitter, deadline, idempotency, whole-transaction retry, outbox, side-effect safety, dan observability.
Long-Running Transaction Avoidance
12 minMenghindari long-running transaction dalam Java data access: split phase, status machine, reservation, compensation, durable progress, async workflow, file/external service boundary, batch checkpoint, dan failure recovery.
Consistency Without Distributed Transaction
15 minMendesain consistency tanpa distributed transaction: local transaction, transactional outbox, inbox/idempotent consumer, saga boundary, compensation, eventual consistency, exactly-once illusion, read model lag, reconciliation, dan Java implementation patterns.
DAO Pattern Done Right
13 minDAO pattern modern yang benar dalam Java data access: contract, SQL ownership, mapping, transaction participation, error translation, query naming, batching, testing seam, dan anti-pattern DAO generik.
Repository Pattern Done Right
13 minRepository pattern modern dalam Java: aggregate boundary, collection illusion, mutation semantics, persistence ignorance, DAO composition, transaction boundary, optimistic locking, query limitation, testing, dan anti-pattern generic repository.
Query Object and Specification Pattern
13 minQuery Object dan Specification Pattern dalam Java data access: filter object, sorting, pagination, keyset cursor, composable predicate, criteria, dynamic SQL, query ownership, validation, tenant scope, dan testing.
Command Query Separation in Data Access
12 minCommand Query Separation dalam Java data access: memisahkan write repository dan read/query service, pragmatis tanpa overengineering CQRS, DTO projection, read model, transaction boundary, consistency lag, dan testing.
DTO Projection and Read Model
14 minDTO projection dan read model dalam Java data access: view model, reporting query, list screen optimization, avoiding entity leak, direct projection, constructor mapping, database view, denormalization, projection lag, rebuild, dan testing.
Data Mapper vs Active Record
15 minData Mapper vs Active Record dalam Java enterprise: persistence model, domain separation, ORM, transaction boundary, testing, complexity trade-offs, why Java often prefers Data Mapper, and when Active Record is acceptable.
Unit of Work, Identity Map, Lazy Loading
16 minUnit of Work, identity map, dirty checking, lazy loading, flush boundary, persistence context, entity state, N+1, detached entity, dan production failure modes pada Java data access.
Data Access Contract Design
12 minDesain kontrak method data access Java: naming, return type, nullability, Optional, collection, stream, pagination, cursor, update count, error semantics, transaction expectation, locking, idempotency, dan API review rubric.
JPA Entity Modeling for Data Access
14 minEntity modeling JPA untuk data access production: identity, lifecycle, association, embeddable, value object, aggregate boundary, table mapping, versioning, audit, invariants, dan anti-pattern entity design.