JPA PostgreSQL Spring Service Example
This is a Spring Boot based microservice example backed by PostgreSQL database. This examples shows the following:
- Use
spring.datasource
properties and Spring Data auto configuration. - How to use JPA's
CrudRepository
- How to insert
UUID
field in Postgres database and generateUUID
index. - How to convert Java
Enum
to PostgresEnum
type. - How to use
Dozer
Java Bean mapper.
PostgreSQL Assumptions
- You have a PostgreSQL database server running on your
localhost
and in port5432
. - You have a database named
postgres
running on the server - The server has a user named
postgres
with passwordpostgres
. - If any of the assumptions doesn't hold true, change the
spring.datasource
properties in theapplication.yml
file.
Create Database Entities
Execute the create-db.sql
script under resources
directory on your PostgreSQL server either using PostgreSQL administration and management tools, pgAdmin,
or from the PostgreSQL interactive terminal program, called psql
.
Build
Execute the following command from the parent directory:
mvn clean install
Start the Service
The main entry point jpa-postgres-spring
example is com.basaki.example.postgres.boot.BookApplication
class.
You can start the application from an IDE by starting the BookApplication
class.
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.1.RELEASE)
...
2017-03-08 21:50:17.987 INFO 62548 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-03-08 21:50:17.992 INFO 62548 --- [ main] c.b.e.p.spring.boot.BookApplication : Started BookApplication in 7.152 seconds (JVM running for 7.566)
The application starts up at port 8080
.
Accessing Swagger
On your browser, navigate to http://localhost:8080/
to view the Swagger.
Click the Show/Hide
link to view all the operations exposed by Book API.
POST Example
Once expanded, create a new Book entry by clicking POST
and entering the following JSON snippet in the request
field and click Try it out!
.
Here is the response you get back. Please notice the book title and the author gets captitalized before insertion.
GET Example
To view all books, click GET
and entry either title
, author
, genre
or any combination of them and click lick Try it out!
.
The title
and author
parameters are case insensitive.
Here is the response you get back: