Static Weaving Configuration

This document explains the static weaving setup for JPA entities in the Fineract project.

Overview

Static weaving is a process that enhances JPA entities at build time to improve runtime performance. This is done using the org.eclipse.persistence.tools.weaving.jpa.StaticWeave which processes the compiled classes and applies the necessary bytecode transformations.

Configuration

The static weaving is configured in static-weaving.gradle and applied to all Java projects that contain JPA entities.

How It Works

  1. Compilation: Java source files are compiled to the standard classes directory (build/classes/java/main).
  2. Weaving: Weaving happens as last step of compileJava task, which outputs them to the standard classes directory (build/classes/java/main).

Adding Static Weaving to a Module

  1. Add JPA entities to src/main/java
  2. Ensure there's a persistence.xml file in src/main/resources/jpa/static-weaving/module/[module-name]/
  3. The build will automatically detect and apply static weaving

Troubleshooting

If you encounter issues with static weaving:

  1. Check that the persistence.xml file exists in the correct location
  2. Verify that the output directories are being created correctly
  3. Check the build logs for any weaving-related errors