конфигурация гибернации для тестирования - (новичок вау) - PullRequest
0 голосов
/ 02 августа 2011

Я учусь использовать 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 для этих двух баз данных?Я использую муравей в качестве инструмента для сборки ..

Любые предложения будут приветствоваться

Джим

1 Ответ

2 голосов
/ 02 августа 2011

Я бы очень хотел использовать test_hibernate.cfg.xml со свойствами test db, но так как конфигурация выполняется в статическом блоке в HibernateUtil

Так что не надосоздайте свою конфигурацию в статическом блоке.

Вместо этого создайте класс, который принимает параметр для пути к файлу конфигурации (например, Spring * LocalSessionFactoryBean), который возвращает Configuration / SessionFactoryиспользовать.Или, если вы действительно хотите придерживаться HibernateUtil (что очень рекомендуется для стратегии при любых производственных настройках), измените его, чтобы прочитать свойство или переменную среды системы, чтобы прочитать конфигурацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...