Spring Hibernate integration using Java project
Here you will see show to integrate Spring with Hibernate using standalone java project. We will integrate Spring with Hibernate and use Hibernate for all database related operation and Spring as service to pass required command to database layer and result will be shown on console.
Tools used:
- Eclipse ( We are using eclipse Kepler download from here)
- Install JBoss tools in eclipse. If you are not sure how to install JBoss in eclipse please user this URL:Install JBoss tools in eclipse
- MySQL data base (Install MySQL Community Server (GPL) version in your system : MySQL Community Server). We are using version 5.6
- Hibernate 4.3.5.Final
- Maven 3.0.4
Steps:
1. Create table in MySQL data base script:
CREATE TABLE Person ( First_Name varchar(50) NULL, Last_Name varchar(25) NULL, City varchar(25) NULL, Zip varchar(25) NULL, State varchar(25) NULL, id int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) GO
2. Create Maven project name: SpringHibernate (If you are not sure how to create Maven project in eclipse please use this tutorial)
Note: if you are using eclipse project please include below jars in your class path:
4. Hibernate configuration:
- We have used hibernate tools to generate all class and mapping file. Please follow this URL if you want to see details how we have done it : Generate hibernate model class and mapping files automatically .
5. Hibernate configuration files:
- Hibernate.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource"/> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>hibernate/Person.hbm.xml</value> </list> </property> </bean> </beans>
- Person.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated Jun 1, 2014 9:01:17 AM by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping> <class name="com.javahonk.model.Person" table="person" catalog="javahonk"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="identity" /> </id> <property name="firstName" type="string"> <column name="First_Name" length="50" /> </property> <property name="lastName" type="string"> <column name="Last_Name" length="25" /> </property> <property name="city" type="string"> <column name="City" length="25" /> </property> <property name="zip" type="string"> <column name="Zip" length="25" /> </property> <property name="state" type="string"> <column name="State" length="25" /> </property> </class> </hibernate-mapping>
6. Properties File:
- database.properties
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/javahonk jdbc.username=root jdbc.password=admin
7. Spring configuration file:
- applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <import resource="../spring/DataSource.xml"/> <import resource="../hibernate/Hibernate.xml"/> <import resource="../spring/Person.xml"/> </beans>
- DataSource.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"> <value>properties/database.properties</value> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> </beans>
- Person.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <bean id="personService" class="com.javahonk.service.PersonServiceImpl" > <property name="personDAO" ref="personDAO" /> </bean> <bean id="personDAO" class="com.javahonk.dao.PersonDAOImpl" > <property name="sessionFactory" ref="sessionFactory"></property> </bean> <tx:annotation-driven /> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> </beans>
8. Hibernate Model class Person.java
package com.javahonk.model; // Generated Jun 1, 2014 9:01:17 AM by Hibernate Tools 3.4.0.CR1 /** * Person generated by hbm2java */ public class Person implements java.io.Serializable { private static final long serialVersionUID = 1L; private Integer id; private String firstName; private String lastName; private String city; private String zip; private String state; public Person() { } public Person(String firstName, String lastName, String city, String zip, String state) { this.firstName = firstName; this.lastName = lastName; this.city = city; this.zip = zip; this.state = state; } public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getFirstName() { return this.firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return this.lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getCity() { return this.city; } public void setCity(String city) { this.city = city; } public String getZip() { return this.zip; } public void setZip(String zip) { this.zip = zip; } public String getState() { return this.state; } public void setState(String state) { this.state = state; } }
9. Hibernate DAO class:
- PersonDAO.java
package com.javahonk.dao; import java.util.List; import com.javahonk.model.Person; public interface PersonDAO { void insertPerson(Person person); List<Person> findAllPerson(); void updatePerson(Integer personId); void deletePerson(Integer personId); }
- PersonDAOImpl.java
package com.javahonk.dao; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.springframework.transaction.annotation.Transactional; import com.javahonk.model.Person; @Transactional public class PersonDAOImpl implements PersonDAO{ SessionFactory sessionFactory; public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public void insertPerson(Person person) { Session session = sessionFactory.getCurrentSession(); session.save(person); } public void updatePerson(Integer personId) { Person person = new Person(); person.setId(personId); person.setCity("NY"); person.setLastName("Honk"); person.setState("NY"); person.setZip("12345"); person.setFirstName("New Update Java"); this.sessionFactory.getCurrentSession().update(person); } public List<Person> findAllPerson() { List<Person> list = (List<Person>)this.sessionFactory .getCurrentSession().createQuery("from Person") .list(); return list; } public void deletePerson(Integer personId) { Person person2 = (Person) sessionFactory.getCurrentSession() .get(Person.class, personId); if (null != person2) { this.sessionFactory.getCurrentSession().delete(person2); } } }
10. Spring service class:
- PersonService.java
package com.javahonk.service; import java.util.List; import com.javahonk.model.Person; public interface PersonService { void insertPerson(Person person); List<Person> findAllPerson(); void updatePerson(Integer personId); void deletePerson(Integer personId); }
- PersonServiceImpl.java
package com.javahonk.service; import java.util.List; import com.javahonk.dao.PersonDAO; import com.javahonk.model.Person; public class PersonServiceImpl implements PersonService{ PersonDAO personDAO; public void deletePerson(Integer personId) { personDAO.deletePerson(personId); } public List<Person> findAllPerson() { return personDAO.findAllPerson(); } public void insertPerson(Person person) { personDAO.insertPerson(person); } public PersonDAO getPersonDAO() { return personDAO; } public void setPersonDAO(PersonDAO personDAO) { this.personDAO = personDAO; } public void updatePerson(Integer personId) { personDAO.updatePerson(personId); } }
11. Finally Test class to perform and validate all operation SpringHibernateTest.java
package com.javahonk; import java.util.List; import org.springframework.context.ApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.javahonk.model.Person; import com.javahonk.service.PersonService; public class SpringHibernateTest { public static void main(String[] args) { ApplicationContext appContext = new ClassPathXmlApplicationContext( "spring/applicationContext.xml"); PersonService personService = (PersonService) appContext .getBean("personService"); //Insert Person Person person = new Person(); person.setCity("NY"); person.setFirstName("Java"); person.setLastName("Honk"); person.setState("NY"); person.setZip("12345"); personService.insertPerson(person); //Select Person List<Person> listPerson = personService.findAllPerson(); for (Person person2 : listPerson) { System.out.println("First Name: "+person2.getFirstName() +" Last Name: "+person2.getLastName() +" City: "+person2.getCity() +" State: "+person2.getState() +" Zip: "+person2.getZip()); } //Update Person personService.updatePerson(1); //Delete Person personService.deletePerson(1); ((AbstractApplicationContext)appContext).close(); } }
12. To run: Right click SpringHibernateTest.java –> Run As –> Java Application. You will see data insert, select , update and deleted from the table on the console as below:
Download Project: SpringHibernate
For more information please see this Spring tutorial
That’s it Spring Hibernate integration using Java project