Create model and CRUD with JHipster terminal generator
Hey, today we will focus on generating application model. JHipster gives us an opportunity to create it veeery fast. Generates all needed class files and view in angular (or other framework which you will choose).
During creating model with JHipster you are choosing how should looks like your entity. You need to type entity name, field name, types, restrictions (minValue, maxValue, etc), relations to other entities, pagination if needed, generating DTO and service class for your logic. Bunch of files at the beginning, isn’t it? So what way are available for creating all those files?
Spis treści
Methods of generating model in JHipster
1. Using command line
Generator is asking all questions one by one. It uses default values when you press enter. You need to remember that if you have any relation in your main entity, you need to generate the second entity before you invoke it in main one. Seems logic, generator needs to know the second one 😉
If you pass the whole generation process, it will list you all added files. Then you need to rebuild project and new structures will be available!
C:\hip\eventsearch>yo jhipster:entity prelegent
The entity prelegent is being created.
Generating field #1
? Do you want to add a field to your entity? Yes
? What is the name of your field? name
? What is the type of your field? String
? Do you want to add validation rules to your field? Yes
? Which validation rules do you want to add? Required
================= Prelegent =================
Fields
name (String) required
Generating field #2
? Do you want to add a field to your entity? Yes
? What is the name of your field? bio
? What is the type of your field? String
? Do you want to add validation rules to your field? No
================= Prelegent =================
Fields
name (String) required
bio (String)
Generating field #3
? Do you want to add a field to your entity? Yes
? What is the name of your field? websiteUrl
? What is the type of your field? String
? Do you want to add validation rules to your field? No
================= Prelegent =================
Fields
name (String) required
bio (String)
websiteUrl (String)
Generating field #4
? Do you want to add a field to your entity? No
================= Prelegent =================
Fields
name (String) required
bio (String)
websiteUrl (String)
Generating relationships to other entities
? Do you want to add a relationship to another entity? No
================= Prelegent =================
Fields
name (String) required
bio (String)
websiteUrl (String)
? Do you want to use a Data Transfer Object (DTO)? No, use the entity directly
? Do you want to use separate service class for your business logic? No, the REST controller should use the repository directly
? Do you want pagination on your entity? Yes, with pagination links
Everything is configured, generating the entity...
create .jhipster\Prelegent.json
create src\main\resources\config\liquibase\changelog\20170322233100_added_entity_Prelegent.xml
create src\main\java\com\pdb\eventsearch\domain\Prelegent.java
create src\main\java\com\pdb\eventsearch\repository\PrelegentRepository.java
create src\main\java\com\pdb\eventsearch\web\rest\PrelegentResource.java
create src\main\java\com\pdb\eventsearch\repository\search\PrelegentSearchRepository.java
create src\test\java\com\pdb\eventsearch\web\rest\PrelegentResourceIntTest.java
create src\test\gatling\simulations\PrelegentGatlingTest.scala
conflict src\main\resources\config\liquibase\master.xml
? Overwrite src\main\resources\config\liquibase\master.xml? overwrite
force src\main\resources\config\liquibase\master.xml
conflict src\main\java\com\pdb\eventsearch\config\CacheConfiguration.java
? Overwrite src\main\java\com\pdb\eventsearch\config\CacheConfiguration.java? overwrite
force src\main\java\com\pdb\eventsearch\config\CacheConfiguration.java
create src\main\webapp\app\entities\prelegent\prelegents.html
create src\main\webapp\app\entities\prelegent\prelegent-detail.html
create src\main\webapp\app\entities\prelegent\prelegent-dialog.html
create src\main\webapp\app\entities\prelegent\prelegent-delete-dialog.html
create src\main\webapp\app\entities\prelegent\prelegent.state.js
create src\main\webapp\app\entities\prelegent\prelegent.controller.js
create src\main\webapp\app\entities\prelegent\prelegent-dialog.controller.js
create src\main\webapp\app\entities\prelegent\prelegent-delete-dialog.controller.js
create src\main\webapp\app\entities\prelegent\prelegent-detail.controller.js
create src\main\webapp\app\entities\prelegent\prelegent.service.js
create src\main\webapp\app\entities\prelegent\prelegent.search.service.js
create src\test\javascript\spec\app\entities\prelegent\prelegent-detail.controller.spec.js
create src\test\javascript\e2e\entities\prelegent.js
conflict src\main\webapp\app\layouts\navbar\navbar.html
? Overwrite src\main\webapp\app\layouts\navbar\navbar.html? overwrite
force src\main\webapp\app\layouts\navbar\navbar.html
create src\main\webapp\i18n\en\prelegent.json
conflict src\main\webapp\i18n\en\global.json
? Overwrite src\main\webapp\i18n\en\global.json? overwrite
force src\main\webapp\i18n\en\global.json
create src\main\webapp\i18n\pl\prelegent.json
conflict src\main\webapp\i18n\pl\global.json
? Overwrite src\main\webapp\i18n\pl\global.json? overwrite
force src\main\webapp\i18n\pl\global.json
Running `gulp inject` to add JavaScript to index.html
[00:31:10] Using gulpfile C:\hip\eventsearch\gulpfile.js
[00:31:10] Starting 'inject:app'...
[00:31:10] gulp-inject 115 files into index.html.
[00:31:10] Finished 'inject:app' after 215 ms
2. Using free online tool
You can buidl you ERD model in JDL studio. What you type will be visualised in the scheme on the right. You can define there all informations, including relations, paginations, and many more. Then you need to export JDL file and read it via command line using tutorial from documentation.
3. Using UML schema
You can generate model from diagram using JHipster-UML which supports many formats.
Genertion of files lasts very quickly and the results looks like the one below:

On .jhipster folder in the root folder you will find json files corresponding to entities which was created by you. In that json files you can modify field names, relations or other configurations. After that you need to regenerate entity using our favorited command:
yo jhipster:entity prelegent

{
"fluentMethods": true,
"relationships": [],
"fields": [
{
"fieldName": "name",
"fieldType": "String",
"fieldValidateRules": [
"required"
]
},
{
"fieldName": "bio",
"fieldType": "String"
},
{
"fieldName": "websiteUrl",
"fieldType": "String"
}
],
"changelogDate": "20170322233100",
"dto": "no",
"service": "no",
"entityTableName": "prelegent",
"pagination": "pagination"
}
I need to spend some time on preparing model for this project. Maybe this weekend will be more generous than the one before 🙂

