Before we start, it's important to note that as of Spring 3 documentation, it is no longer recommended to use HibernateTemplate as it unnecessarily ties your code to Spring classes.
SpringHibernateTemplate is a Spring wrapper around the native Hibernate API. It adds an extra layer of abstraction on top of Hibernate making life a bit easier specially when it comes to session management.
3 Basic Steps:
1. Hibernate Mapping File:
Create the standard hibernate mapping file(s) for your class bean(s) just as you would on any Hibernate project, nothing interesting here, business as usual.
• DB.CUSTOMER >> Customer.java >> Customer.hbm.xml
2. DAO Implementation:
Here is where it all starts, define a second class
CustomerSpringDao
that extends HibernateDaoSupport
so we can include database operations.
public class CustomerSpringDao extends HibernateDaoSupport
{
public void addCustomer(Customer customer) {
getHibernateTemplate().save(customer);
}
public Customer getCustomerAccountInfo(Customer customer) {
Customer cust = null;
List list = getHibernateTemplate().find("from Customer customer where customer.userId = ?" , customer.getUserId(),Hibernate.STRING);
if(list.size() > 0){
cust = (Customer) list.get(0);
}
return cust;
}
}
HibernateDaoSupport
This is a convenient super class for Hibernate-based data access objects. By extending this Spring abstract class you can make use of methods such as
getHibernateTemplate()
where you can perform hibernate operations without having to manage sessions manually. The SessionFactory is pre-initialized by the framework. Yep, that's right, it is completely abstracting the sessionFactory.openSession()
, session.flush()
, etc.3. JDBC DataSource and HibernateSessionFactory Wiring
In the Spring framework, resources such as JDBC DataSource and HibernateSessionFactory can be realised as beans in the application context. Create the Spring Application Context file (if you haven't already created one) and place it in the classpath of your project. This file should reference your
CustomerSpringDao
class.Putting it all toghether
Once you've completed all 3 steps, you will be ready to put it all into action. The following is an example on how you can access those spring beans and make use of spring's session management.
Before anything else, you can load the Spring application context XML file into a BeanFactory using the ClassPathXmlApplicationContext class, then go ahead persisting your object using common hibernate methods:
ClassPathXmlApplicationContext context = new
ClassPathXmlApplicationContext("context.xml");
CustomerSpringDao csd = (CustomerSpringDao) context.getBean("eventDao", CustomerSpringDao.class);
// create customer object
csd.saveOrUpdate(customer);
Note, you're still free to use hibernate session if you like, all you have to do is access the hibernate session factory bean:
context.getBean("mySessionFactoryBean", SessionFactory.class);
AdiĆ³s!
No comments:
Post a Comment