Impactos do Hibernate na migração E-R para O.O

13 respostas
J

Olá a todos, sou iniciante neste fórum e segundo uma sugestão que me foi dada, criei este tópico para saber quais são os impactos na migração de um projeto do paradigma Entidade Relacionamento (E-R) para o paradigma Orientado por Objeto (O.O) utilizando o Hibernate como framework de persistência.

Esta dúvida surgiu pois estou com um projeto que foi Elaborado (definição do modelo de dados) todo em um banco de dados E.R. (MySQL) e agora, antes de iniciar o desenvolvimento, optou-se pelo desenvolvimento em Java (JSP + Servlets) daí veio a utilização de Struts como framework que resolveu as questões “C” e “V” do modelo MVC, mas o “M” ainda não estava claro como seria incorporado com Struts daí a idéia de utilizar o Hibernate, que até onde sei é tipicamente O.O.

Espero ter sido minimamente claro para ser entendido.

[]'s, JWCunha

13 Respostas

Mauricio_Linhares

Primeiro, a sua aplicação pode ser completametne OO e utilizar um banco de dados relacional comum para persistir as informações, segundo, usar Hibernate não quer dizer de forma alguma que a sua aplicação foi feita utilizando os preceitos da orientação a objetos.

O impacto do uso do Hibernate em um banco relacional corretamente normalizado é zero, se o modelo estiver correto e com os relacionamentos bem definidos, você não vai ter problema nenhum em utilizá-lo.

J

Maurício Linhares:
Primeiro, a sua aplicação pode ser completametne OO e utilizar um banco de dados relacional comum para persistir as informações, segundo, usar Hibernate não quer dizer de forma alguma que a sua aplicação foi feita utilizando os preceitos da orientação a objetos.

O impacto do uso do Hibernate em um banco relacional corretamente normalizado é zero, se o modelo estiver correto e com os relacionamentos bem definidos, você não vai ter problema nenhum em utilizá-lo.

Obrigado Maurício, fico mais seguro quanto a isto então.

Já optando pelo Hibernate, estou lendo o seu artigo “Introdução ao Hibernate” mas não sei onde colocar os arquivos hbm.xml. Estou usando o Netbeans 5.5 e ao fazer a abstração do banco de dados ele mesmo criou os arquivo .java com os respectivos getters e setters, creio que são chamados de Pojos, ok? Agora para fazer o mapeamento com as minhas entidades via XML onde vou colocar estes arquivos?

A estrutura de diretórios que estou utilizando é?

context.xml structs-config.xml tiles-defs.xml validation.xml validator-rules.xml web.xml form.jsp .... index.jsp .schema <-------------- nó criado pelo netbeans ...... MANIFEST.XML context.xml persistence.xml strtucts-config.xml tiles-defs.xml validation.xml validator-rules.xml web.xml Server Resources Source Packages com.myapp.db.struts com.myapp.struts ApplicationResources.properties Servlet.java +Test Package +Libraries +Test Libraries

Desde já agradeço mais uma vez.

kissdemon

Colega,

ao invés da utilização dos arquivos XML, por que nao usar Annotations para fazer o mapeamento das entidades? São infinitamente mais faceis e legíveis (sim, XML é um porre), alem de possuir todas as caracteristicas das entidades em código Java. :wink:

Boa sorte aí na sua migração

[]'s

J

kissdemon:
Colega,

ao invés da utilização dos arquivos XML, por que nao usar Annotations para fazer o mapeamento das entidades? São infinitamente mais faceis e legíveis (sim, XML é um porre), alem de possuir todas as caracteristicas das entidades em código Java. :wink:

Boa sorte aí na sua migração

[]'s

Caro colega, vc está me dizendo que eu posso me livrar dos XML para mapeamento??? Alguma referência (tutorial, site, etc) para estudar como fazê-lo?

Obrigado.

luis.soares

Você pode acessar o site da http://www.caelum.com.br Caelum e baixar a apostila do curso FJ-21, que trata em um dos seus capítulos sobre Hibernate com Annotations.
No Google e aqui no GUJ, faça uma busca por “Hibernate Annotations”. O conceito é simples.

Abraço !

kissdemon

jwcunha:

Caro colega, vc está me dizendo que eu posso me livrar dos XML para mapeamento??? Alguma referência (tutorial, site, etc) para estudar como fazê-lo?

Obrigado.

Exato. E como o Luis mesmo já citou, a Caelum disponibiliza otimas apostilas em seu site, alem de encontrar facilmente materiais pela net e aqui mesmo no GUJ.

De uma olhada aqui tb:

[]'s

J

luis.soares:
Você pode acessar o site da http://www.caelum.com.br Caelum e baixar a apostila do curso FJ-21, que trata em um dos seus capítulos sobre Hibernate com Annotations.
No Google e aqui no GUJ, faça uma busca por “Hibernate Annotations”. O conceito é simples.

Abraço !

Luis, é o seguinte, estou utilizando o material da Caelum, mas o seguinte erro esta sendo gerado. Os dois warnings são previstos no material mas está sendo lançada uma exceção como se eu não tivesse configurado o hibernate.propertie, sei que é pelo fato do dialeto, mas já configurei o arquivo, estou usando o netbeans e coloquei no diretório src.

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Exception in thread “main” org.hibernate.HibernateException: Hibernate Dialect must be explicitly set

A quem possa ajudar,

att

J

Pessoal, tô debugando o erro e é o seguinte:

Non-existing path “C:\projeto\build\ear-module\WEB-INF\classes” provided.
Exception in thread “main” java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
at java.lang.ClassLoader.defineClass1(Native Method)

A linhda é esta:

AnnotationConfiguration cfg = new AnnotationConfiguration();

o que pode estar faltando?

luis.soares

Você precisa adicionar os .jar do hibernate no classpath do seu projeto.
Deve existir o arquivo hiernate.cfg.xml no diretório src raiz. E o arquivo de properties também.
Verifique isso, e qualquer coisa post aqui.

Abraço.

J

luis.soares:
Você precisa adicionar os .jar do hibernate no classpath do seu projeto.
Deve existir o arquivo hiernate.cfg.xml no diretório src raiz. E o arquivo de properties também.
Verifique isso, e qualquer coisa post aqui.

Abraço.

Luis, tem alguma coisa muito estranha acontecendo :(, estou usando o netbeans, adicionei os jars do hibernate e o hibernate.cfg.xml e também o hibernate.properties no src (naquele material da caelum não fala nada do cfg.xml, mas tudo bem) mas mesmo assim o erro continua, como se o projeto não estivesse encontrando estes arquivos.

É isso!

[]'s, JWCunha

kissdemon

Copie-os diretamente para o classes. Tive o mesmo problema utilizando o src e no meu caso, o Eclipse nao atualizava o classes. Resolvi alterando diretamente no classes.

[]'s

J

kissdemon:
Copie-os diretamente para o classes. Tive o mesmo problema utilizando o src e no meu caso, o Eclipse nao atualizava o classes. Resolvi alterando diretamente no classes.

[]'s

O netbeans não cria o diretórios classes vc saberia me dizer qual é diretório correspondente?

Já estou suando frio!!!

rs… :slight_smile:

J

Maurício Linhares:
Primeiro, a sua aplicação pode ser completametne OO e utilizar um banco de dados relacional comum para persistir as informações, segundo, usar Hibernate não quer dizer de forma alguma que a sua aplicação foi feita utilizando os preceitos da orientação a objetos.

O impacto do uso do Hibernate em um banco relacional corretamente normalizado é zero, se o modelo estiver correto e com os relacionamentos bem definidos, você não vai ter problema nenhum em utilizá-lo.

Maurício, estou tendo o seguinte erro:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet execution threw an exception
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

java.lang.NoClassDefFoundError

InstituicaoServlet.processRequest(InstituicaoServlet.java:52)

InstituicaoServlet.doPost(InstituicaoServlet.java:108)

javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

Na linha 52 tenho o seguinte código:

Session session = HibernateUtil.getSession();

código:

public static Session getSession()

throws HibernateException {

return sessionFactory.openSession();

}

Obrigado!

Criado 5 de dezembro de 2006
Ultima resposta 13 de dez. de 2006
Respostas 13
Participantes 4