/*
* Copyright (c) JForum Team. All rights reserved.
*
* The software in this package is published under the terms of the LGPL
* license a copy of which has been included with this distribution in the
* license.txt file.
*
* The JForum Project
* http://www.jforum.net
*/
package net.jforum.core.hibernate;
import net.jforum.repository.HibernateGenericDAO;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
/**
* @author Rafael Steil
*/
public abstract class AbstractDAOTestCase<T> {
private Session session;
private SessionFactory sessionFactory;
/**
* Persists an entity.
* After inserting, the transaction will be commited and
* the session cleared.
* @param entity the entity to persist
* @param dao the dao to use
*/
protected void insert(T entity, HibernateGenericDAO<T> dao) {
dao.add(entity);
commit();
beginTransaction();
}
/**
* Updates an entity.
* After updating, the transaction will be commited and
* the session cleared.
* @param entity the entity to update
* @param dao the dao to use
*/
protected void update(T entity, HibernateGenericDAO<T> dao) {
dao.update(entity);
commit();
beginTransaction();
}
/**
* Deletes an entity
* @param entity the entity to delete
* @param dao the dao to use
*/
protected void delete(T entity, HibernateGenericDAO<T> dao) {
dao.remove(entity);
commit();
beginTransaction();
}
protected Session session() {
return session;
}
/**
* First commits the transaction
*/
protected void commit() {
session.getTransaction().commit();
}
@Before
public void setUp() throws Exception {
Configuration config = new AnnotationConfiguration();
config.configure("/hibernate-tests.cfg.xml");
sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
beginTransaction();
}
protected Transaction beginTransaction() {
return session.beginTransaction();
}
@After
public void tearDown() throws Exception {
if(session != null) {
session.close();
}
if (sessionFactory != null) {
sessionFactory.close();
}
}
}