Sunday, January 24, 2016

Spring Data very simple example with Postgres

Hi Folks

Today it's again about server technologies and data persistence, but with spring-data project. This project aims to eliminate boilerplate code required to create the data tier, and not only that,

it also eliminate the code required by ORMs like hibernate to manage session and entity manager and everything we used to do to persist our data. enough talking.

technologies used :
a- spring data
b- spring mvc for simple rest api
c- hibernate as JPA provider
d- gradle for build management
e- ide of your preference, I used intellj in this one.
d- postgres as db


 1- Business as usual we need a simple project structure, I'll keep it simple but scalable :

 


spring-data-sample (contains gradle root stuff: build, settings)
|
------ bl : data and business tier, merged together as we don't have any code for data!
|
------ web : where we expose bl with rest apis

 2- setup the database, and by that you only need to install postgres and prepare the database, I created one called 'cars'. hibernate will fill it for us.


3- Business layer




in build.gradle you need these dependencies :
dependencies { compile 'org.springframework.data:spring-data-jpa:1.9.2.RELEASE' compile 'org.hibernate:hibernate-entitymanager:4.2.6.Final' compile 'org.postgresql:postgresql:9.4-1200-jdbc4' }
and for the configuration :
annotations :
@EnableJpaRepositories : scans where our repositories are (i'll get to define what a repository is)
@EnableTransactionManagement: allows you to use @Transactional,

a- data source : db connection
b- entity manager factory : for ORM to work, scans entities and defines hibernate properties
responsible for managing sessions and entities and all that ORM stuff.
d- transaction manager
and for our entity, nothing new, just a simple pojo with persistence annotations

now the fun part, all you have to do to get default crud operations is this:

out of the box you will get the following:
1- save (create & update)
2- delete
3- find, findAll, findByColumnXAndColumnY...etc
and to use it we have CarBo as a BL bean :
and the rest is the web part I'll leave it to you to check in the repository. https://github.com/blabadi/spring-data-repo Good Luck !

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Istio —simple fast way to start

istio archeticture (source istio.io) I would like to share with you a sample repo to start and help you continue your jou...