Last updated: 2024-02-12

  1. Learn
  2. Documentation
  3. Entities Tab

Entities tab - backgrounds

In the Entities tab the database schema for your new Spring Boot application can be created.

The Entities tab with a simple database schema

The Entities tab with a simple database schema

Entities

Initially, there are no entities in a new project. They can be added by clicking on the plus sign. After saving, the future tables are displayed in a UML preview.

When creating or editing an entity, the name can be specified first. This is automatically converted into the correct formatting for the Java class (pascal case "CarPart") and if necessary the table name (snake case "car_part"). If the name is a keyword in the chosen database system, an annotation is added to the table to quote it - e.g. @Table(name = "\"User\"") in Postgres. If MongoDB is chosen as the database, the entities are created with the @Document annotation.

Editing an entity in the Bootify Builder

Editing an entity in the Bootify Builder

Any entity can become a mapped superclass with the respective checkbox. This will add the @MappedSuperclass annotation to class (or abstract class for MongoDB) and makes it available for extension by the other entities. A mapped superclass does not become a table itself, but does provide fields and relations for all entities that inherit from it.

The option "Add REST Endpoints" automatically generates a Data Transfer Object (DTO), a Service and a Resource class to provide a REST API with simple CRUD operations for the entity. The DTO contains annotations to validate the specified contraints (e.g. @Size(max = 255) or @UserEmailUnique) provide a proper error to the client. The option "Add frontend controller" is only available when a frontend has been selected for your application in the General tab. It will add a Controller and required Thymeleaf templates on top. In the Professional plan, additional checkboxes for pagination, sorting and a search filter are available and will be applied to both, REST and frontend controllers.

Adding a mapped superclass

Adding a mapped superclass

A total of four types are available for the primary key. Integer and Long (default) are generated by the database via a sequence. UUID is filled by Hibernate's UUIDGenerator before the first persistence. String must always be provided by the application or REST endpoint and, as a primary key, can never be updated.

For the other fields, many more simple types are available, e.g. Boolean or LocalDate. In addition, Enums and Data Objects created in the Data Objects tab can be selected. Enums are always written to the database as strings, whereas Data Objects are persisted as JSON fields using the hypersistence-utils library.

Relations

After the first entity has been created, relations can also be added to the database schema. The available types are One-to-One, Many-to-one, One-to-many and Many-to-many. Appropriate JPA annotations are added based on the selected type - check out JPA relationship types with examples for more details. Circular references are possible, but not all of them are allowed to be required - this would make it impossible to persist any values.

Adding a many-to-many relation to our project

Adding a many-to-many relation to our project

If MongoDB is chosen as the database, relations are added to entities with @DocumentReference. This way MongoDB uses a manual reference internally, while the developer can still directly access the referenced document - more backgrounds here.

SQL Import

Using the SQL Import of the Free plan, the entities and relations can be created directly from a SQL script. The link "Import Schema" in the Entities tab opens a modal into which the script can be copied.

Paste your SQL script to see a preview

Paste your SQL script to see a preview

The relevant entries from the script are automatically parsed (starting with CREATE TABLE / ALTER TABLE). A preview is displayed in the next step, which can then be copied into the project. Existing entities and relations will be overwritten. The imported entities have the REST option disabled at first.

If the application should be connected to an existing database later, it is recommended to set the DB Generation to None (validate) in the General tab. This will cause Hibernate to compare the entities with the actual database schema when starting the application and throw an exception if necessary. Minor adjustments are usually still needed in order to map the field types without errors.

Start Project
No registration required