开发者

hibernate configuration for testing -(newbie wows)

开发者 https://www.devze.com 2023-03-25 12:52 出处:网络
I have been learning to use hibernate for a couple of months. I am finding it difficult in deciding how to configure hibernate to work on a test database.

I have been learning to use hibernate for a couple of months. I am finding it difficult in deciding how to configure hibernate to work on a test database.

I have a hibernate.cfg.xml with db parameters given as elements.

<property name="connection.url">
    jdbc:postgresql://localhost/mydb
</property>
<property name="connection.username">me</property>
<property name="connection.password">mypasswd</property>

My web app uses a HibernateUtil class which loads the configuration as below

class HibernateUtil {
        private Class<T> persistentClass;
        private static SessionFactory sessionFactory;
        static {
            try {
                sessionFactory = new Configuration().configure().buildSessionFactory();     
            }catch (Throwable ex) {
                throw new ExceptionInInitializerError(ex);
            }
        }
    ...

My dao implementation uses the above class to get the 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;
    }

This is OK as long as I work on the mydb configured in cfg.xml file.But for my tests I am using another database which is given in a test.properties file

test.db.url=jdbc:postgresql://localhost/mytestdb开发者_运维问答
test.db.driver=org.postgresql.Driver
test.db.username=testme
test.db.password=testpass

The only way I can make hibernate work on mytestdb is to manually replace every db related property in cfg.xml.I would very much like to use test_hibernate.cfg.xml with the test db properties,but since the configuration is done in a static block in HibernateUtil ,that won't work.

Is there a better way of configuring hibernate for these two databases? I am using ant as build tool..

Any suggestions would be most welcome

jim


I would very much like to use test_hibernate.cfg.xml with the test db properties,but since the configuration is done in a static block in HibernateUtil

So then don't create your configuration in a static block.

Instead, create a class which accepts a parameter for the path to the configuration file (a la Spring's LocalSessionFactoryBean) which returns the Configuration/SessionFactory to use. Or if you truly want to stick with HibernateUtil (which is a strategy very much recommended against in any production setting), change it to read a property or system environment variable to read the configuration.

0

精彩评论

暂无评论...
验证码 换一张
取 消