In this post I'll explain the required work to create a rest API utilizing both spring and hibernate version 4, and the configuration will be using java configuration classes not XML.
I'll use gradle to build and for dependency management, it's way easier than maven and keeps you focused on the application, if you are not familiar with gradle and interested in it see my previous post about it.
The first part which is dependency management is covered in gradle post mentioned above.
I'll skip to explain each tier of the project and its configurations:
As you can see we have 4 tiers:
1) DAO tier / data tier
In this tier we configure the datasource and hibernate, I used HSQL in memory db it can be easily substituted with other db engine providing the right dependencies
The DaoConfig defines the data source, transaction manager, session factory and hibernate properties
The most important part is the annotations :
1) @Configuration : to tell spring that this is a configuration class
2) @PropertySource("classpath:dao.properties") : is to load the properites file for this configuration
3) @ComponentScan({ "com.blabadi.gradle.dao" }) : is to tell spring container to scan the specific packages to look for beans, like Dao classes and entities
4) @EnableTransactionManagement : is similar to xml configuration <tx:annotation-driven>
responsible for registering the necessary Spring components that power
annotation-driven transaction management (to be able to use @Transactional).
The rest is the person DO and the person DAO :
2) Business logic tier
configuration here is simple, and the person service is utilizing the @Transnational annotation
3) Rest tier
this is where the web app configuration is, and exposes the Person APIs
The WebConfig.java contains the spring web configuration for the rest project, it uses the @EnableWebMvc to configure the spring dispatcher servlet.
The WebAppInit.java is actually the replacement for web.xml in the java servlet 3 standard it looks for a class the implements WebApplicationInitializer interface as replacement for the web.xml
Note that I had to add the dependency for servlet-api-3.0.1 to my gradle as compile time dependency but that's not the best way, because it will be provided by the application server.
Subscribe to:
Post Comments (Atom)
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...
-
So RecyclerView was introduced to replace List view and it's optimized to reuse existing views and so it's faster and more efficient...
-
I worked before on learning angular 2+, and made a sample functioning app that tracks calories & macros, called it ...
-
In the previous part we finished the dashboard read functionality, now we want to add the skeleton for other pages: - Login In this p...
Thanks for the write-up, 2 years later and it still helped me solve my issue with latest Hibernate.
ReplyDelete