Skip to main content

Generated Code

Overview

WaveMaker is not a black box. The platform generates fully readable, standards-based Java source code that follows proven enterprise architecture patterns. All backend artifacts are built using Java, Spring, and Hibernate/JPA, providing complete transparency and control to developers.

This approach enables teams to achieve low-code development speed while retaining the flexibility, extensibility, and governance expected from traditional enterprise applications.


Key Characteristics

  • Backend services are generated using standard Java frameworks
  • Source code is fully accessible and inspectable
  • Custom business logic can be added without impacting platform upgrades
  • Generated code follows layered architectural best practices
  • Suitable for advanced enterprise and integration-driven use cases

WaveMaker Generated Backend Architecture

This diagram illustrates the layered backend architecture generated by WaveMaker. Client requests are handled by REST controllers, processed through service-layer business logic, and persisted using DAO/repository components backed by Hibernate/JPA. Entity models represent database tables, while design-time configuration supports application development without impacting runtime execution. The architecture follows standard Java and Spring practices, ensuring transparency, extensibility, and enterprise readiness.

WaveMaker Backend Architecture


Generated Project Structure

WaveMaker generates a conventional Java project structure under the services directory, aligned with industry-standard backend design principles.

Each layer has a clearly defined responsibility, ensuring separation of concerns, maintainability, and extensibility.

Generated Project Structure


Layered Architecture

REST Controller Layer (controller)

Purpose
Acts as the API entry point for client applications.

Responsibilities

  • Expose RESTful endpoints
  • Handle request and response lifecycle
  • Perform authorization and request validation
  • Marshal and unmarshal JSON payloads

Implementation Notes

  • Implemented using standard Spring REST controllers
  • Can be extended to add custom endpoints or security logic

Service Layer (service)

Purpose
Encapsulates business logic and application workflows.

Responsibilities

  • Implement business rules
  • Validate input data
  • Manage transactions
  • Coordinate interactions between controllers and DAO layer

Implementation Notes

  • Recommended layer for adding custom logic
  • Isolated from regeneration during platform upgrades

DAO / Repository Layer (dao)

Purpose
Provides database access using ORM abstractions.

Responsibilities

  • Interact with the database via Hibernate/JPA
  • Execute persistence operations
  • Abstract database-specific logic

Generated Capabilities

  • CRUD APIs for each entity
  • Filter APIs
  • Count APIs
  • Export APIs
  • Support for custom queries and stored procedures

Implementation Notes

  • Uses standard JPA repositories
  • Avoids proprietary data-access abstractions

Model Layer (models and Entity Classes)

Purpose
Represents database tables as Java objects.

Responsibilities

  • Define entity fields and relationships
  • Map database schema using JPA annotations
  • Serve as data carriers across application layers

Implementation Notes

  • Plain Old Java Objects (POJOs)
  • Fully extensible and reusable

Design-time Configuration (designtime)

Purpose
Stores metadata required by WaveMaker Studio during application design.

Contents

  • Database connection definitions
  • API specifications
  • Query and procedure metadata
  • Schema information

Implementation Notes

  • Used exclusively at design time
  • Runtime execution depends only on generated Java source code

ORM Artifacts

WaveMaker generates ORM artifacts that conform to Hibernate/JPA standards:

  • Entity classes
  • Repository interfaces
  • Generated CRUD methods
  • Query definitions and mappings

Summary

WaveMaker combines the productivity of low-code development with the robustness of high-code architectures by generating transparent, layered, and standards-based backend services. Developers retain full ownership and control of the code while benefiting from rapid application delivery.