Pensando em melhorar a manutenção
dos projetos, surgiu a necessidade de ler um arquivo de propriedade com as
credenciais do banco de dado, dispensando a necessidade da recompilação do
projeto com essas informações toda vez que o banco de dados ou credenciais
foram alteradas.
Ao levantar um projeto que use o framework JBC, o hibernate
se conecta ao banco de dados através do arquivo hibernate.cfg.xml na raíz do projeto. Na versão 1.1, o JBC verifica se existe um arquivo hibernate.properties
na raiz do projeto. Este arquivo segue as especificações hibernate, como abaixo as
credenciais para conexão com o MySql:
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://server:port/database
hibernate.connection.username=user
hibernate.connection.password=pass
hibernate.hbm2ddl.auto=update
O arquivo hibernate.cfg.xml na raiz do projeto
não é dispensado, pois é neste que o mapeamento das entidades são descritos
para o hibernate:
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://server:port/database</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="br.com.Entidade1"/>
<mapping class="br.com.Entidade2"/>
<mapping class="br.com.Entidade3"/>
</session-factory>
</hibernate-configuration>
Caso o arquivo hibernate.properties for encontrado
na raiz do projeto, suas credenciais são carregadas, caso contrário, as
credenciais do arquivo hibernate.cfg.xml prevalecem. Com
isso aumenta a flexibilidade do projeto, sendo possível alterar o banco de
dados e seus credencias a qualquer momento que o cliente necessitar, sem a necessidade
de recompilar o projeto, e sem ter conhecimentos de programação.
public class HibernateUtil {
private static SessionFactory factory;
private static String HIBERNATE_PROPERTIES_FILE_NAME = "hibernate.properties";
static{
Properties hibernateProperties = new Properties();
InputStream in;
try {
in = new FileInputStream(HibernateUtil.HIBERNATE_PROPERTIES_FILE_NAME);
hibernateProperties.load(in);
in.close();
factory = new AnnotationConfiguration().configure().setProperties(hibernateProperties).buildSessionFactory();
} catch (Exception ex) {
try {
factory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable e) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed." + e);
throw new ExceptionInInitializerError(ex);
}
}
}
/**
* Abre e retorna a Sessão Hibernate
* @return Session
*/
public static Session getSession() {
return factory.openSession();
}
}
Para baixar o jar da versão 1.1, clique aqui;