The generator will now start asking us about the server side options that we need. Let's go through them one by one:
- Question 1: This prompt asks for a base name for the application, which is used for creating the main class file names, database names, and so on. By default, JHipster will suggest the current directory name if it doesn't contain any special characters in the name. Let's name our application as store. Please note that the files will be created in the current directory you are in:
![](assets/6c95f513-f616-4b4c-87fc-3181fcc65a1e.png)
- Question 2: This prompt asks for a Java package name. Let's choose com.mycompany.store:
![](assets/12e38392-dbee-4676-8b2b-0ddfe909b08a.png)
- Question 3. This prompt asks whether we need to configure JHipster registry for this instance. JHipster registry provides a service discovery and config server implementation which is very useful for centralized configuration management and scaling of the application. For this use case, we will not need it, so let's choose No. We will learn more about the JHipster Registry in Chapter 8, Introduction to Microservice Server-Side Technologies, of this book:
![](assets/7bae52a7-2c14-4227-a243-a9a7c524d9d5.png)
- Question 4: This prompt asks us to select an authentication mechanism. We are presented with three options:
- JWT authentication
- HTTP Session Authentication
- OAuth 2.0/OIDC Authentication
We already saw how these defer in the previous chapter, and for our use case, let's choose JWT authentication:
![](assets/b34a807b-0708-4ca8-8e49-b80e12caa78a.png)
- Question 5: This prompt asks us to select a database type; the options provided are SQL, MongoDB, Couchbase, and Cassandra. We already learned about the different database options in the previous chapter. For our application, let's choose an SQL database:
![](assets/e26c0421-549a-45cf-9b71-24efde78fbfa.png)
- Question 6: This prompt asks us to choose a specific SQL database that we would like to use in production; the available options are MySQL, MariaDB, PostgreSQL, Oracle, and Microsoft SQL Server. Let's choose MySQL here:
![](assets/b9ee211a-c09a-48a8-a811-e51b309f0793.png)
- Question 7: This prompt asks us to choose between our chosen SQL database and H2 embedded database for development. H2 embedded DB is especially useful as it makes development faster and self-contained, without the need to have a MySQL instance running. So, let's choose the H2 disk-based persistence here as it is lightweight and easier in development compared to having a full-fledged DB service running:
![](assets/3d1a438a-f772-4b79-b882-cbfd3d56cc64.png)
If your use case requires working with persisted data in development and if the model is not going to change often, then you could also choose MySQL for development as it would give you a faster startup time. This is because the embedded H2 DB doesn't need to be initialized, but the downside is each time you make schema changes or recreate entities, you would have to update the DB using generated liquibase diff changelogs manually, or wipe the DB manually and start over again. With an embedded H2 DB, you could run ./gradlew clean to wipe it.
- Question 8: This prompt asks us to choose a Spring cache implementation. We have the option to choose between no cache, EHCache, Hazelcast, and Infinispan. Since we learned about these in the previous chapter, let's go ahead and choose Hazelcast here:
![](assets/44d0fcc9-57cd-4221-b20a-371f69c5e203.png)
- Question 9. This prompt asks us to choose if we need a 2nd level cache for Hibernate. Let's choose Yes. It will use the same cache implementation we chose for the previous question:
![](assets/567d2e9e-6f86-4745-857c-9454d9661f4c.png)
- Question 10: This prompt gives us the choice of the build tool to use for the project; the options are Maven and Gradle. Let's choose Gradle here as it is more modern and powerful:
![](assets/eb824465-a757-4f8e-932f-b37fbc591e1d.png)
- Question 11: This prompt is interesting as it presents various additional options supported by JHipster. The options are:
- Social login: Adds support for using a Social login provider like Facebook, Twitter, and so on for login(Social login option is removed in JHipster 5 and you need to choose OAuth 2.0/OIDC Authentication instead to use Social login provided by the OIDC provider)
- Elasticsearch: Adds Elasticsearch support for the generated entities
- WebSockets: Adds WebSocket support using Spring WebSocket, SocketJS, and Stomp protocol
- API first development with swagger-codegen: Adds Swagger codegen support for API first development
- Apache Kafka: Adds support for asynchronous queue using Kafka
Let's keep it simple and choose WebSockets using Spring WebSocket:
![](assets/c5d21189-d8b9-44e7-b2f1-7b44fb54bc9f.png)