Package org.jboss.seam.example.spring

Source Code of org.jboss.seam.example.spring.HibernateTestService

/**
*
*/
package org.jboss.seam.example.spring;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;


/**
* A Service to demonstrate/test some different methods of accessing Seam Managed Hibernate Session in Spring.
* @author Mike Youngstrom
*/
public class HibernateTestService extends HibernateDaoSupport {
  public static final String HIBERNATE_HOTEL_NAME = "This is the Hibernate Hotel";

  public static final String HIBERNATE_HOTEL_ADDRESS = "Hibernate Address";

  private TransactionTemplate hibernateTransactionTemplate;

  public void testHibernateIntegration() {
    hibernateTransactionTemplate.execute(new TransactionCallback() {
      public Object doInTransaction(TransactionStatus status) {
        // Testing access through HibernateTemplate
        Hotel hotel = (Hotel)getHibernateTemplate().execute(new HibernateCallback() {
          public Object doInHibernate(org.hibernate.Session session) throws HibernateException, SQLException {
            return getFirstHotel(session);
          }
        });
        hotel.setName(HIBERNATE_HOTEL_NAME);
        return null;
      }
    });
    hibernateTransactionTemplate.execute(new TransactionCallback() {
      public Object doInTransaction(TransactionStatus status) {
        // Testing access through SessionFactory.getCurrentSession()
        Hotel hotel = getFirstHotel(getSessionFactory().getCurrentSession());
        if (!HIBERNATE_HOTEL_NAME.equals(hotel.getName())) {
          throw new RuntimeException("Hotel name not set.  Hibernate integration not working.");
        }
        hotel.setAddress(HIBERNATE_HOTEL_ADDRESS);
        return null;
      }
    });
    hibernateTransactionTemplate.execute(new TransactionCallback() {
      public Object doInTransaction(TransactionStatus status) {
        // Testing access through SessionFactory.getCurrentSession()
        Hotel hotel = getFirstHotel(getSessionFactory().getCurrentSession());
        if (!HIBERNATE_HOTEL_ADDRESS.equals(hotel.getAddress())) {
          throw new RuntimeException("Hotel address not set.  Hibernate integration not working.");
        }
        return null;
      }
    });
  }
 
  /**
   * @return
   */
  private Hotel getFirstHotel(Session session) {
    List<Hotel> results = session.createQuery("from Hotel").list();
    if (results.size() <= 0) {
      throw new RuntimeException("Hibernate integration is broken");
    }
    Hotel hotel = results.get(0);
    return hotel;
  }

  /**
   * @param transactionTemplate the transactionTemplate to set
   */
  public void setTransactionTemplate(TransactionTemplate transactionTemplate) {
    this.hibernateTransactionTemplate = transactionTemplate;
  }
}
TOP

Related Classes of org.jboss.seam.example.spring.HibernateTestService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.