In this post, we will discuss how to configure MySQL for Spring Boot application. We will get into details for the support provided by Spring Boot for MySQL database.
Spring Boot provides a ready-to-use support for H2 Database.Spring Boot automatically set up in memory H2 database if it detects H2 configurations in the classpath.This is superb to work on the development project, however, most of the enterprise projects use production level databases like MySQL, Oracle, etc.
Spring Boot has support for MySQL and other popular relational databases.In this post, we will focus on configuring Spring Boot for MySQL database.
I will not cover installing MySQL server on your machine or how to create a new database in the MySQL. For this post, I assume that we have already installed MySQL on your machine.Please create a new database on the MySQL server (Let’s call this new database as javadevjournal).
To enable support for MySQL in our project, we need to add
mysql-connector-java starter in the pom.xml file.
<dependencies> <!-- JPA Data (We are going to use Repositories, Entities, Hibernate, etc...) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- Use MySQL Connector-J --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependencies>
Spring Boot auto-configure
spring-boot-starter-data-jpa is in the classpath by reading database configurations defined in the
By Default, Spring Boot provides database configurations for the H2 database.To use MySQL for our application, we need to override these default configurations.Once we define DB properties in the project’s application.properties file, Spring Boot will not set up default database anymore.
spring.datasource.url=jdbc:mysql://localhost:3306/javadevjournal spring.datasource.username=javadevjournal spring.datasource.password=ThePassword spring.jpa.hibernate.ddl-auto=update ## Hibernate Properties # The SQL dialect makes Hibernate generate better SQL for the chosen database spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto is for database initialization. It is good security practice that after your database is in production state, you make this
none. Here are some commonly used ddl values:
none: The default for
MySQL. We make no change to the database structure.
update: Hibernate changes the database according to the entity structures.
create: Creates the database every time but does not drop it on close.
create-drop: Creates the database and drops it when
While setting up JPA properties, We need not specify the driver or the dialect. These are detected automatically. If you want to customize these properties, feel free to add/customize using
These are the only configuration changes required to use MySQL with your Spring Boot application.Once you start your application, Spring Boot will use MySQL as your underlying database.
In this short post, we covered configure MySQL for Spring Boot application.We learned how to override default data source configurations provided by Spring Boot to use MySQL as the underlying database.
Hello!! Welcome to the Java Development Journal. We love to share our knowledge with our readers and love to build a thriving community.
Spring Boot OAuth2 | Securing REST API
Spring Boot Actuator with Prometheus
Spring Boot Dependency Management with a Custom Parent
Best books for Spring Boot
Introduction to Spring Boot Scheduler
Configuring a Main Class in Spring Boot