Hibernate com Hibernate Tools – iMasters

Embed Size (px)

Citation preview

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    1/12

    Abril.com Mais sites Abril GrupoAbril Abril Midia Distribui!;iio Grafica Abril Educa!;iio Assine Lo

    ~ AGENDA MULTIMiDIA BOX COLETIVOS IMASTERS PRO CODE FORUM INTERCON 2011 FaeaLogin I Cadastre

    ~~~ [Java Pesquisar ...

    Java + MySQL + DesenvolvimentoHibernate com Hibernate Tools IW e b M a t r iTerca-feira, 29/06/2010 as 1ohoo, por Edson Gonculues

    ala, pessoal, tudo bom? a artigo de hoje e sobre a uttllzacao do Hibernate Tools, umexcelente plugin para 0 Eclipse IDE, of icial da Red Hat, feito para t rabalhar com 0 Hibernate.

    Duvidas e criticas sao sempre bem-vindas, aguardo os comentariosl Vamos la,Obtendo e instalando 0 Eclipse IDEPara desenvolver este exemplo, ut ilizei a versao do Eclipse IDE 3.6, em um ambiente voltadopara 0 trabalho com Java EE. Para obter 0 Eclipse IDE, ja configurado com 0 ambiente Web,va ao endereyo http://www.eclipse.org/downloads/ e clique em Eclipse IDE for Java EEDevelopers. Lembre-se de selecionar 0 seu sistema operacional. f !vJ baixar, descompacteem um local desejado de sua rnaquina,

    a plug in JBoss ToolsPara a versao do Eclipse 3.6, a atual enquanto escrevo este artigo, temos uma versao emdesenvolvimento compativel do plugin JBoss Tools. Para obts- lo, basta baixar a versao dedesenvolvimento atual, encontrada em um dos diretorios existentes dentro deste endereco:http://download.jboss.org/jbosstools/builds/nightly/trunkl

    ULTIMAS NOTiclAS27/10 as 9h20Update para Java 7 corrigeproblemas com Apache Lucene

    Podemos baixar 0 Hibernate Tools separadamente ou, como f iz, baixando 0 JBoss Toolscompleto. a arquivo que obt ive, no momenta em que escrevo, eo JBossTools-Update-3.2.0.v201006240331N-H369-M1.zip. Com 0 Eclipse IDE fechado, ao baixar 0 plugin,descompacte e mova seu conteudo sobre 0 dlretorio eclipse. Isso tara a lnstalacao do pluginJBoss Tools. Depois de adicionarmos 0 plugin, inicie 0 Eclipse.

    09/06 as 10h30Oracle corrige 17 bugs do Java27/01 as 15h40Oracle indica SouJava paracomite executivo do Java SE/EE

    Aten~ao: Por se tratar de uma versso em desenvolvimento, 0 enderer;o passado nestearligo podera sofrer alterar;oes. Porlanto, sempre veri fique a ultima versso no enderer;ohttp://do'M1load.jboss.orq/jbosstoois/builds! As versoes de desenvolvimento costumamcausar instabilidade no Eclipse, porlanto, far;am seu uso em um ambiente de testes.

    03/01 as 9hNovave~iodoJBosstrazsuporte a Java EE 6

    a banco de dados

    20/07/2010

    Oracle lanca versio 6.9 doNetBeansUtilizaremos 0 banco de dados MySQL, que pode ser adquirido clicando agui. a banco dedados que uti lizaremos para executar 0 exemplo se chamara hibernatenapratica.

    VER MAIS NOTic lAS

    CURSOS ONLINECriando 0 projetoIniciem alterando a perspectiva. No icone Open Perspective, cliguem em Other.

    Cria!; iio de Temas para WordPress

    http://www.eclipse.org/downloads/http://download.jboss.org/jbosstools/builds/nightly/trunklhttp://download.jboss.org/jbosstools/builds/nightly/trunklhttp://www.eclipse.org/downloads/
  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    2/12

    Selecionem em seguida a Perspectiva Hibernate.Na view Package Explorer, cliquem com 0 direito do mouse e selecionem, no menu decontexto, 0 item Project.

    ':IlIk

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    3/12

    (br.com.integrator) e a nome da classe, nocaso Categoria, em Name. Confirmem acriacao no batao Finish.Alterem a classe Categoria conforme mostrado na Listagem 1.Listagem 1 - 0 JavaBean Categoriapackage br.com.integrator;import java.io.Serializable;import java.lang.Long;import java. lang. String;public class Categoria implements serializable {private Long id;private String categoria;private String descricao;public Long getId() (return id;

    public void setId(Long id) {this.id ~ id;

    public String getCategoria()return categoria;

    public void setCategoria(String categoria) {this.categoria = categoria;

    public String getDescricao()return descricao;

    public void setDescricao(String descricao) {this.descricao = descricao;

    Mapeando a tabela no Hibernate utilizando a forma tradicionalPara mapear a tabela correspondente no banco de dados a classe Categoria, atraves doHibernate,temos que criar urn XML como forma tradicional de utilizacao do framework.Selecionem a pacote e a classe naview Package Explorer e, com a direito do mouse,selecionem a item New>Hibernate XML Mapping file (hbm.xml).Nacaixa de dialogo New Hibernate XML Mapping Files (hbm.xml), teremos as dais itensselecionados: a pacote e a classe. Caso tenhamos esquecido de selecionar um au ambos,podemos clicar nos botoes que estao na lateral direita (Add Class e Add Package).Continuem no batao Next.Naetapa seguinte, a assistente exibira a arquivo Categoria.hbm.xml que sera criado.Continuem no batao Next.A ultima etapa apresentara a XML do mapeamento criado para a Hibernate,onde a base foi aclasse Categoria. Confirmem a criacao no batao Finish.Com a finalizacao do assistente, temos a XML gerado aberto pelo editor do HibernateTools.Neste editor podemos mudar as caracteristicas que desejamos noXML gerado, colocandomais inforrnacoes em cada propriedade.o resultado final sera como a mostrado na Listagem 2 a seguir:Listagem 2 - 0 arquivo Categoria.hbm.xml

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    4/12

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    5/12

    Conf igura~ao do banco de dados no hibernate.cfg.xmlNa ult ima etapa, temos as cont iquracoes do console do Hibernate. Esse console, quandoconf igurado e funcional, nos permite executar quer ies HQl au trabalhar com Criteria.

    O4!:lDlIII:loMIuDliGJII(IIII'IGJI'IIliJIIJWIiIIII~. ~ u roI"_~""K(I~_I(foII~f!) II~((ooI! )I

    ''''e,'I5:n,(}"awt.ilm::lI;lIll.U"OII''''i'''L~''

    [~~~..J:-1~= = = = = = = - - - - - - - - - - - - - - ~f li"I"",If-!oIII~

    p,t.-!I,:.~ ... .rH~'L ~

    Configura~ao do console HibernateCliquem na aba Mappings e removam a caminho configurado automaticamente para aarquivo Categoria.hbm.xml. Esse caminho nao sera preciso, porque iremos conflqura-lodiretamente no arquivo hibernate.cfg.xml, ao qual a console tara usa tarnbern. Confirmem aassistente clicando no batao Finish.

    ~~=~'~,,:~:':i~~~ ~ _ ~ ~ ~ ~ ~ i i i i i i i i ~ ~(-:A abra Mappings da configura~ao do consoleNa flnalizacao do assistente, abrlra a editor do arquivo de conf lquracao do Hibernate.

    . - - - ,.~H'l!aNLi fi,....i! .......iIKl'" lllM..1!i1Jdf'

    . . ': ;; 51 . .. ." .. ... , .. .- = I r . . . .. . . .. .

    o editor do arquivo de confiquracao do HibernateComo muitas das lntorrnacoes que desejavarnos foram colocadas no assistente, restaapenas adicionar a caminho para Categoria.hbm.xml. Para fazermos iss 0, basta ir no bataoAdd e digitar a caminho em Resource.

    "I; II_" 'D>

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    6/12

    Para executarmos 0 exemplo, tornando possivel a criacao da tabela no banco de dados peloHibernate, assim como sua recrlacao a cada nova execucao, expandindo SessionFactory>Properties>Hibernate, em Hibernate Configuration 3.0 XMl Editor, alteremHbm2ddl Auto para create-drop.Neste mesmo local, onde temos as propriedades, podemos alterar para true em Show SQl,Use SQl Comments e Format SQL.

    S : : ::= -.-_.- -:_t- ,...,.....,.~ = = r P ~ _--.->". . . . . . . . . . . . . . ._ _4:_~_._.~,:"","""_~. _.-

    Adicionando novas propriedades ao arquivo hibernate.cfg.xmlo resultado final das conf igurac; :oes, no arquivo hibernate.cfg.xml, sao mostrados naListagem 3 a seguir:Listagem 3 - 0 arquivo hibernate.cfg.xml

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    7/12

    o HibernateTools possui uma ferramenta visual que nos permite visualizar as classesmapeadas em suas tabelas correspondentes encontradas no banco de dados. Isso naosignifica que a tabelaja exista no banco de dados. Trata-se da forma como a contiquracao"enxerga" a tabela em que ira trabalhar no banco de dados.

    iO.. ..u......_.,.",...ru.(DI1,I-.. I:II:I.,m.." " " . J o ' r I ; J _ ~IIIIIL !I~y.aJ.""""..!J".!iI..,.,..,.. J . .. .. .. .. ~

    "

    Visualizando a classe Categoria mapeada para a tabela correspondente no banco de dados

    Colocando 0 Hibernate para trabalharIremos criar duas pequenas classes que juntas iraQgerar a tabela e seus dados dela nobanco de dados.Com 0 direito do mouse sobre src, naview Package Explorer, selecionem 0 itemNew>Other. Na caixa de dialogo New, selecionem Java>Class.Coloquem 0 pacote br.com.integrator.util e deem 0 nome da classe de HlbernateUtil,confirmando 0 assistente, em seguida, no botao Finish.o conteudo da classe HibernateUtil sera similar ao mostrado na Listagem 4 a seguir:Listagem 4 - Aclasse HibernateUtilpackage br.com.integrator.util;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtilprivate static final SessionFactory sessionFactory;static {try {sessionFactory ~ new Configuration() .conFigura().buildSessionFactory() ;} catch (Throwable ex)System_err_println('ITnitial SessionFactory creation failed_"1 + ex);throw new ExceptionInInitializerError(ex);

    public static SessionFactory getSessionFactory()return sessionFactory;

    A segunda classe que criaremos ira se chamar Main e sera colocada no pacotebr.com.integrator.o conteudo da classe Main e mostrado na Listagem 5 a seguir:Listagem 5 - Aclasse Mainpackage br.com.integrator;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.Transaction;import br.com.integrator.util.HibernateUtil;public class Main {public static void main(String[] args) {Session session ~ HibernateUtil. getSessionFactory ().openSession ();Transaction transaction = null;try {transaction = session.beginTransactioll();Categoria categorial ~ new Categoria();categorial.setCategoria("InformAtica"I);categorial.setDescricao("Produtos de Inforrntica");session.save(categorial) ;Categoria categoria2 new Categoria();

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    8/12

    categorlaL.setCategorlal'~~etroaomestlcosJ ;categoria2.setDescricao("Eletrodom~sticos ernGeral");session.save(categoria2) ;Categoria categoria3 ~ new Categoria();categoria3.setCategoria("Livraria") ;categoria3.setDescricao("Ljvros para todos os gostos");session.save(categoria3) ;transaction.commit() ;} catch (HibernateException e)transaction.rollback() ;e.printStackTrace() ;} finally (session.close() ;

    Executem a classe Main para que 0 Hibernate crie a tabela categoria e adicionem 0conteudo, Oracas aas configurat; :oes cr iadas no arquivo hibernate.cfg.xml, temos a saida naview Console como mostra a figura a seguir.

    ....l.;jIf ......t....,,1:"'"~!iI. 1Il~'o:-

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    9/12

    xesunacos encomraaos na query HUL executaoa nas views rnoernate uuery KeSUIt ePropertiesA parte de Criteria tarnbern e bem facil de se criar. Cliquem com 0 direito do mouse sobreSession Factory>br.com.integrator.Categoria e selecionem, no menu de contexto, 0 itemHibernate Criteria Editor.Aa surgir 0 editor de Criteria, basta completarmos a mst rucao que desejamos executar. Emseguida, clicamos no botao Run criteria (0 mesmo botao que no editor HQl se chama RunHQl).

    Engenharia ReversaA engenharia revers a no Hibernate Tools tarnbam e de facil ut ilizac;:ao. Para trabalhar com aengenharia reversa, e necessario termos 0 arquivo de confiquracao do Hibernate, configuradopara conectar-se ao banco de dados pre-exlstente,A engenharia revers a esta preparada para gerar as classes, os arquivos .hbm.xml ou entaoanotacoes, Tarnbern e possivel termos anotacoes JPA, relacionamentos e outros.Para criar a engenharia reversa em nosso exemplo, cliquem com 0 direito do mouse na viewPackage Explorer. No menu de contexto selecionem New>Hibernate ReverseEngineering File (reveng.xml).Na caixa de dialogo, selecionem 0 diret6rio src e mantenham 0 nome do arquivo padraosolic itado. Cl iquem no botao Next .Na etapa seguinte, selecionem a confiquracao do console previamente criada em Consoleconfiguration. Cliquem no botao Refresh e selecionem no banco de dados a(s) tabela(s)que desejam trabalhar na engenharia revers a para utilizar com 0 Hibernate e conf irmem nobotao Include. Concluam 0 assistente no botao Finish.o assistente i ra gerar 0 arquivo de engenharia reversa. Agora iremos confiqura-lo para que,na gerac; :ao dos arquivos baseados na(s) tabela(s) do banco de dados, a conversao sejaexatamente como desejamos.Comecem indo na aba Type Mappings e cliquem no botao Refresh.

    -....._ ...~ ......_ ......Ir_.-_. . ._ .- , . , . . _ . . . . . . .-~

    Exibindo 0 banco de dados atraves do botao Ref reshNa caixa de dlalogo Select a console configuration, selecionem 0 console cr iado econf irmem no botao OK.Retornando para 0 editor, temos 0 banco de dados, tabela(s) e campo(s). Para que ocorra aengenharia revers a de forma correta, devemos Add cada um deles, editando 0 HibernateType, length e tarnbern Not-Null.Vejam como e mostrado na f igura abaixo.

    Conf igurando os tipos JOSC e Hibernate da tabela para executar a engenharia reversao resultado do arquivo configurado, visto na aba Source, em formato XMl, e como amostrado na Listagem 6.Listagem 6 - 0 arquivo hibernate.revenge.xml

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    10/12

    -" D__UeLldLe D__UeLldLe neve

    I ! ! ! lRetornando a view Package Explorer, vamos configurar um console Hibernate para executaro arquivo de engenharia reversa criado. Cliquem com 0 direito do mouse sobre 0 arquivohibernate.revenge.xml e selecionem, nomenu de contexto, 0 item Hibernate ConsoleConfiguration.Atenr;ao: Esta etapa nao e realmente necessaria quandoja existe um console conf igurado.Entretanto, na pr imeira vez que configuramos um, 0 acesso nao havia sido feito destamaneira.

    Nacaixa de dialogo, alterem 0 campo Name paraProjUtilizandoHibernateToolsAnnotations. Verifiquem se Configuration file estacorretamente apresentando 0 arquivo hibernate.cfg.xml.

    O4!:lDlIII:loMIuDIIGJ!o(llllIII!GJ~IIJWb11'1~ . ~ u r oI "_ ~ " "K ( n t l ( f oI I ~f !) I I ~ ( (o oI ! ) I

    _:1~11i"iuo:l"I-"""T_~- -~ ..: 1 laLI~ ;:--,!iI '-;"' _ ~_~. " "nn ~"awt.ilm:lI;lIll.U1Ol''' 'i'''L~.1"""'--"".......""'=";;::,-=.....=------~[~~~..J:-1~====-------~f ' N " ' I , . . . . . . . . . . II~

    " " _ " ' ." ' - " ' _ . .' ' ' ' ' ' ' = . ' " i l i , , ' ' ' . . ' " ' " " ' . ' ' ' ; ' ! . I : I i ' ' ' , ' "...,'''_=--~

    Dialoqo de criacao da conflquracao do console Hibernate para a engenharia reversaAtraves do botao Run / ! Is , clicando no pequeno trianqulo que aponta para baixo,encontramosum menu onde temos 0 item Hibernate Code Generation Configurations.

    Nacaixa de dialogo Hibernate Code Generation Configurations, em Hibernate CodeGeneration, cliquem com 0 direito do mouse e selecionem, nomenu de contexto, 0 itemNew.Na lateral direita, tenham ProjUtilizandoHibernateToolsAnnotations em Consoleconfiguration selecionado. Em Output directory, cliquem em Browse e selecionem 0 localonde sera(ao) gerada(s) a(s) classe(s), neste caso.Digitem 0 pacote em Package e, em reveng.xml, cliquem em Setup.Ao surgir 0 dialoqo Setup reverse engineering, cliquem em Use existing.Selecionem 0 item hibernate.reveng.xml e confirmem no botao OK.

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    11/12

    rveunnanuu aU UlalUYU nUelli:lLe "uue uelei:lUUI "UIIlgUi:lUUI::i, amua na aua IVI:l1II,temos todas as lntorrnacoes que desejamos preenchidas, como na figura abaixo:

    ~~tI.l~rrpotl!.~ltl:ld.9seen OOI m[ 0=- OO ff OS ;e~"UI'l~~~~,~_.Eo_;U"~

    o ulillIIl!lJni'i'lll~illJi.lfII,till.lli:II nII~:iI_1

    Aba Main do dialoqn Hibernate Code Generation Conf igurat ions preenchidoAgora iremos na aba Exporters, na qual iremos marcar Generate EJB 3 annotations eDomain code ( .java).Por fim, vamos clicar no botao Run para executar a engenharia reversa.Neste ult imo exemplo, 0 resultado e a classe Categoria sendo criada com anotacoes.

    Considera~oes finaisComo voces puderam ver, 0 Hibernate Tools e uma ferramenta bem interessante paraaqueles que trabalham com 0 f ramework Hibernate. Seja para criar suas conf lquracoesatraves dos assistentes, para executar as queries HQl ou Criteria em seus editores, vale apena instalar e conhecer este plugin do Eclipse IDE.Ate 0 proximo artigo, pessoALL.

    TWlltg o Like Send

    Edson GOnl:;alves e desenvolvecor analista, pesquisador e escritor. ComoDiretor Tecnico da empresa Integrator Technology and Design, e responsaselpela area de desenwlvimento de sistemas, tanto em ambiente ClienteJServidorcomo em sistemas distribuidos. Especialista em desenwlvimento Web comlinguagens como Java, C#, Ruby, Py thon e PHP 5, atualmente e um dosentusiasmados deseruobeoores no rumo de Ruby on Rails (RoR). Comoescritor ja lancou seis livros, entre eles Dominando Eclipse e DominandoAJAXPagina do autor Email

    Leia os ultimos artigos publicados por Edson GoncalvesSpring MVC 3 na Pratica com JPA 2Ajax com JSF 2.0Ajax com JSF 1.2 utilizando JBoss RichFacesSeguranca com Spring Security 3.0 utilizando banco de dados

    3 COMENTARIOS COM ENTE TAM BEM

    Lucio CharalloOtirno tutorial explica como usar os principais recurcos do Hibernate ToolsHa 1 ano Responder

    Lucio CharalloErrata:

    Na listagem 4 temos a linha:sessionFactory = new ConfigurationO.conFiguraO.buildSessionFactoryO;

  • 5/13/2018 Hibernate com Hibernate Tools iMasters

    12/12

    o correto seriasessionFactory = new ConfigurationO.configureO.buildSessionFactoryO;

    acho que 0 rnetodo conFigura foi digitado erradoHa 1 ano : Responder

    . & Edson Gon!ialves@Lucio, corretissimo.o rnetodo esta er rado porque 0 artigo foi escrito no Word e ele automaticamente fezautocorrecao.Obrigado pela correcao,Ha 1 ano : Responder

    QUAL A SUA OPINIAO?

    . & [~Escreva seu comentar to aqu i. . .

    PARCEIROS

    ----""==""-="" ".,......,,;0---"---------.-- - _ , _ , _~~~_"="--,_"-

    CUOSTMfDIA ~1;~oI":."_1IMiP"CTA

    'T['I:~'IILiIIIU'"

    .comapiki

    2001 iMasters FFPA Informatica LtdaTodos as d i re itos rese rvados.

    J

    Hoopei2aOO per:Dia,IHost

    Iw~bM

    Sabre a iMastersPolitica de privacidaAnunc: ieFale canDSCO