Tuesday, 1 January 2013

Integrate Hibernate with Spring:

Step 1: Add the entries in spring-context.xml
<bean id="DS" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost/webusers"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
</bean>

<context:component-scan base-package="com.hib.javabeam" />

<tx:annotation-driven transaction-manager="transactionManager" />
      

Step 2: Create a class which will serve you Session Factory

package com.hib.javabeam.utils.hibernate;

import java.util.Properties;

import javax.sql.DataSource;

import org.hibernate.dialect.MySQL5Dialect;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.hibernate3.HibernateTransactionManager;
import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;

import com.hib.javabeam.domain.CustomerDetails;
import com.hib.javabeam.domain.Item;
import com.hib.javabeam.domain.Order;

@Configuration
public class HibernateConfiguration {

   @Value("#{DS}")
   private DataSource dataSource;

   @Bean
   public AnnotationSessionFactoryBean sessionFactoryBean() {
          Properties props = new Properties();
          props.put("hibernate.dialect",MySQL5Dialect.class.getName());
          props.put("hibernate.format_sql", "true");

          AnnotationSessionFactoryBean bean = new AnnotationSessionFactoryBean();
          bean.setAnnotatedClasses(new Class[]{Item.class, Order.class, CustomerDetails.class});     
          bean.setHibernateProperties(props);
          bean.setDataSource(dataSource);
          bean.setSchemaUpdate(true);
          return bean;
   }

   @Bean
   public HibernateTransactionManager transactionManager() {
          return new HibernateTransactionManager( sessionFactoryBean().getObject() );
   }

}

Step 3: Create a DAO interface

package com.hib.javabeam.dao.api;

import com.hib.javabeam.domain.CustomerDetails;

public interface CustomerDetailsDAO {
      
       public void addCustomerDetails(CustomerDetails custDetails);

}


Step 4 : Implements DAO interface and perform the your operations

package com.hib.javabeam.dao.impl;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.hib.javabeam.dao.api.CustomerDetailsDAO;
import com.hib.javabeam.domain.CustomerDetails;

@Repository("cusomerDetailsDAO")
public class CustomerDetailsDAOImpl implements CustomerDetailsDAO {

       @Autowired
       SessionFactory sessionfactory;
      
       @Transactional
       public void addCustomerDetails(CustomerDetails custDetails) {
              sessionfactory.getCurrentSession().save(custDetails);
       }

}

No comments:

Post a Comment