Я учусь использовать Hibernate в течение нескольких месяцев.Мне трудно решить, как настроить hibernate для работы с тестовой базой данных.
У меня есть hibernate.cfg.xml с параметрами базы данных, заданными как элементов.
<property name="connection.url">
jdbc:postgresql://localhost/mydb
</property>
<property name="connection.username">me</property>
<property name="connection.password">mypasswd</property>
Мое веб-приложение использует класс HibernateUtil, который загружает конфигурацию, как показано ниже
class HibernateUtil {
private Class<T> persistentClass;
private static SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
}catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
...
Моя реализация дао использует вышеуказанный класс для получения Session
public class BaseDaoImpl<T, ID extends Serializable>{
private Session session;
...
public Session getSession() {
if (session == null || !session.isOpen()){
return HibernateUtil.getCurrentSession();
}else{
return session;
}
}
public T findById(ID id){
T entity = (T) getSession().load(getPersistentClass(), id);
return entity;
}
Это нормально, пока я работаю с mydb, настроенным в файле cfg.xml. Но для своих тестов я использую другую базу данных, которая указана в файле test.properties
test.db.url=jdbc:postgresql://localhost/mytestdb
test.db.driver=org.postgresql.Driver
test.db.username=testme
test.db.password=testpass
Единственный способ заставить hibernate работать на mytestdb - это вручную заменить каждое связанное с БД свойство в cfg.xml. Я бы очень хотел использовать test_hibernate.cfg.xml со свойствами test db, но так как настройка выполненав статическом блоке в HibernateUtil это не сработает.
Есть ли лучший способ настройки hibernate для этих двух баз данных?Я использую муравей в качестве инструмента для сборки ..
Любые предложения будут приветствоваться
Джим