Pessoal, criei um maven project, adicionei as dependências do hibernate e anotei a classe que será entidade no banco. Vou usar o tomcat como servidor de aplicação, ao iniciar o mesmo, a entidade não é criada. Como devo proceder para criar a entidade? Lembrando que o arquivo persistence.xml já está configurado tambeḿ.
Boa noite Rocknauta,
segue um exemplo para inicializar o hibernate junto com o tomcat:
//otimiza o carregamento do hibernate na inicialização do tomcat
public class HibernateContexto implements ServletContextListener {
@Override //quando desliga o tomcat
public void contextDestroyed(ServletContextEvent event) {
HibernateUtil.getFabricaDeSessoes().close();
}
@Override //quando liga o tomcat
public void contextInitialized(ServletContextEvent event) {
HibernateUtil.getFabricaDeSessoes(); /*forçar criação da fabrica de sessões
quando o tomcat for iniciado */
}
}
Ai no seu web.xml vc configura
<!-- Carregamento Hibernate -->
<listener>
<listener-class>nomedoseupacote.HibernateContexto</listener-class>
</listener>
Ou se vc preferir pode fazer uma classe para testar/executar o Hibernate:
package br.com.fms.pedido.util;
import org.hibernate.Session;
public class HibernateUtilTest {
public static void main(String[] args) {
HibernateUtilTest teste = new HibernateUtilTest();
teste.conectar();
}
public void conectar() {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
sessao.close();
HibernateUtil.getFabricaDeSessoes().close();
}
}
Ah segue minha classe HibernateUtil pra vc se achar melhor:
package br.com.fms.pedido.util;
import java.sql.Connection;
import java.sql.SQLException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.jdbc.ReturningWork;
import org.hibernate.service.ServiceRegistry;
public class HibernateUtil {
private static SessionFactory fabricaDeSessoes = criarFabricaDeSessoes();
public static SessionFactory getFabricaDeSessoes() {
return fabricaDeSessoes;
}
public static Connection getConexao() {
Session sessao = fabricaDeSessoes.openSession();
Connection conexao = sessao
.doReturningWork(new ReturningWork<Connection>() {
@Override
public Connection execute(Connection conn)
throws SQLException {
return conn;
}
});
return conexao;
}
private static SessionFactory criarFabricaDeSessoes() {
try {
Configuration configuracao = new Configuration().configure();
ServiceRegistry registro = new StandardServiceRegistryBuilder()
.applySettings(configuracao.getProperties()).build();
SessionFactory fabrica = configuracao.buildSessionFactory(registro);
return fabrica;
} catch (Throwable e) {
System.err.println("A fábrica de sessões não pode ser criada." + e);
throw new ExceptionInInitializerError(e);
}
}
}
Obrigado pela resposta, mas não encontro a classe import HibernateUtil.
HibernateUtil é uma classe que eu que dei esse nome, vc tem que criar esta classe e pode usar o mesmo nome ou mudar a seu critério. Segue exemplo no post anterior da classe HibernateUtil.
Cria vc mesmo, a não ser que adore ter toda hora varchar(255) (dá pra configurar, mas é MAIS uma anotaçao)
Certo pessoal, caso eu queira subir o hibernate sem ser pelo tomcat, existe um outro método? Ex: goal do maven?