---
name: jabrena/144-java-data-oriented-programming
source: https://app.decimal.ai/s/jabrena-144-java-data-oriented-programming@1/SKILL.md
source_sha256: 94423805bf84
---

# Java Data-Oriented Programming Best Practices

Apply data-oriented programming in Java: separate data from behavior with records, use immutable data structures, pure functions for transformations, flat denormalized structures with ID references, generic-to-specific type conversion when needed, pure validation functions, and flexible generic data access layers. All transformations should be explicit, traceable, and composed of clear pure functional steps.

**What is covered in this Skill?**

- Separation of concerns: data structures (records, POJOs) vs behavior (utility classes, services)
- Immutability: records, final fields, transformations produce new instances
- Pure data transformations: functions depending only on inputs, no side effects
- Flat and denormalized data: ID references instead of deep nesting
- Generic until specific: Map&lt;String,Object&gt; for dynamic data, convert to records when processing
- Data integrity: pure validation functions returning validation results
- Flexible generic data access: generic CRUD interfaces, interchangeable implementations

**Scope:** The reference is organized by examples (good/bad code patterns) for each core area. Apply recommendations based on applicable examples.

## Constraints

Before applying any data-oriented programming recommendations, ensure the project compiles. Compilation failure is a blocking condition. After applying improvements, run full verification.

- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change
- **SAFETY**: If compilation fails, stop immediately — do not proceed until resolved
- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements
- **BEFORE APPLYING**: Read the reference for detailed good/bad examples, constraints, and safeguards for each data-oriented programming pattern

## When to use this skill

- Improve the code with Data-Oriented Programming
- Apply Data-Oriented Programming
- Refactor the code with Data-Oriented Programming
- Model Java data with records and pure functions
- Separate Java behavior from immutable data structures
- Validate data integrity with pure Java functions

## Workflow

1. **Compile project before data-oriented changes**

Run `./mvnw compile` or `mvn compile` and stop immediately if compilation fails.

2. **Read data-oriented reference and assess model design**

Read `references/144-java-data-oriented-programming.md` and identify candidates for data/behavior separation and immutable transformations.

3. **Apply data-oriented refactorings**

Implement selected improvements using records, pure transformation functions, flat structures, and explicit validation.

4. **Verify with full build**

Run `./mvnw clean verify` or `mvn clean verify` after applying improvements.

## Reference

For detailed guidance, examples, and constraints, see [references/144-java-data-oriented-programming.md](references/144-java-data-oriented-programming.md).