Naked objects with spring-data-rest.
The spring data naked framework facilitates rapid prototyping for simple RDBMS-backed RESTful services. Through reflection, it avoid the layers of duplicated logic in a more traditional client-server-database stack. This makes it easier to experiment with alternative schema designs.
Spring-data-naked goes further by extending the entity-driven dynamic model to the top-most layer (client) and the bottom-most layer (database schema migrations).
The goal is to generate as much code as possible from a single set of annotated entities. Following the technologies it is primarily built upon (Hibernate, Spring Data REST, and Jackson), all code is generated at runtime -- usually at application initialization. The structure of the entities determines all.
- Client, server, and persistence layer code is generated from a single set of annotated entities.
- Client, server, and schema can reference the exact same entities code. To accomplish this, individual annotations may be meaningful in only the client, only the server, or in both.
- It is recommended to generate database migrations from the entities. In examples, this is done with Hibernate ORM and Liquibase.
- JDBC batch insert for every entity without the need for additional code.
- Testing relies on dockerized containers. These end-to-end tests exercise the dynamically generated code against a variety of database vendors.
Spring-data-naked is a low-code framework built on top of the following technologies.
- A specialized copy of bowman (java client)
- Jackson (JSON serialization)
- Spring HATEOS
- Spring Data REST
- Spring Data JPA
- Hibernate ORM
- Liquibase
Testing relies on docker through testcontainers. See sdn-test-parent.