Anda di halaman 1dari 22

Parte I

Resumo Rpido do Hibernate

Nosso primeiro objetivo permanecermos atualizados sobre o Hibernate o mais rpido possvel. A maioria dos captulos desta parte de verses atualizadas do contedo de Hibernate: A Developers Notebook (OReilly), que reflete as principais mudanas que acompanharam o Hibernate 3. A amostra de cdigo agora funciona com as verses mais atualizadas das ferramentas nas quais confiamos para fornecer um ambiente fcil, porm, realista para se trabalhar com o Hibernate. Tambm h um novo captulo falando sobre a capacidade de usar anotaes Java 5, ao invs de arquivos de mapeamento XML, para configurar os mapeamentos do Hibernate. Comear e seguir os exemplos ainda mais fcil nesta nova verso do livro, pois adotamos o Maven para ajudar a baixar muitas das ferramentas e bibliotecas. Como esperamos que voc perceba, no h desculpa para evitar mergulhar e experimentar tudo isso sozinho! Quando se sentir confortvel com os fundamentos do Hibernate, a Parte II demonstrar como associar o Hibernate a outros ambientes, para que eles sejam ainda mais poderosos do que so quando trabalham sozinhos. Muito bem, hora de mergulhar....

CAPTULO 1

Instalao e Congurao

Ainda me surpreende como h tantas ferramentas JavaTM grandes, livres e de fonte aberta disposio. Quando precisei de um servio de mapeamento objeto/relacional de peso leve para um projeto de e-commerce JSP na virada do milnio, tive de construir o meu prprio. Ele evoluiu com os anos, desenvolveu caractersticas excelentes e nicas e o temos usado em uma grande variedade de contextos diferentes. Mas, quando descobri o Hibernate, ns o utilizamos para um novo desenvolvimento em vez de us-lo para meu prprio sistema, j familiar (para felizmente admitir preconceitos). Isso revela o quanto ele irresistvel! Se estiver dando uma olhada neste livro, provavelmente est interessado em uma maneira poderosa e conveniente para unir os mundos dos objetos Java e dos bancos de dados relacionais. O Hibernate cumpre esse papel muito bem, sem ser to complicado a ponto de tornar o aprendizado um desafio assombroso por si s. Para mostrar isso, este captulo leva voc at o ponto em que poder brincar com o Hibernate e ver porque ele to cativante. Os ltimos captulos mostraro como usar o Hibernate como parte de ambientes mais complexos tais como o Spring e o Stripes e tambm como us-lo com outros bancos de dados. O objetivo deste primeiro captulo mostrar como fcil reunir um ambiente bsico e independente em que possvel explorar o Hibernate e fazer coisas verdadeiras com ele.

Como conseguir uma Distribuio Ant


Embora parea surpreendente, o que voc precisa, inicialmente, para colocar o Hibernate em funcionamento no tem nada a ver com o Hibernate em si. Primeiro voc deve configurar um ambiente em que os exemplos funcionem. Ao fazer isso voc obter o agradvel efeito de construir uma fundao slida para qualquer projeto real do qual seja responsvel. Caso ainda no utilize o Ant para gerenciar a construo, o teste, a execuo e o empacotamento de seus projetos em Java, a hora de comear agora. Os exemplos deste livro so dirigidos para Ant, por isso voc precisar instalar Ant e t-la em funcionamento para execut-los e experimentar com variaes em seu prprio sistema, que a melhor maneira de aprender. Em primeiro lugar, adquira uma Ant binria e instale-a.

Por que me preocupar?


Os exemplos utilizam Apache Ant por diversos motivos. Ele conveniente e poderoso; uma das ferramentas padro construdas para o desenvolvimento baseado em Java; de graa e multiplataforma. Se voc utilizar Ant, os exemplos funcionaro igualmente bem onde houver um ambiente Java, o que significa que os leitores deste livro no ficaro frustrados ou aborrecidos. Felizmente, isso tambm significa que podemos
3

fazer muito mais coisas excelentes com menos esforo - especialmente agora que vrias ferramentas do Hibernate tm suporte Ant explcito, que mostrarei como dominar. (Devo notar que, hoje em dia, esses projetos mais complexos em Java geralmente utilizam o Maven*, que acrescenta muitas outras capacidades para o gerenciamento de projetos. Mas como foi necessrio optar por um, no esprito de manter as coisas simples e verdadeiras para aquilo que acho til, usei Ant com esses exemplos.) Se atualmente voc usa Maven como uma ferramenta de construo, voc perceber que estamos usando Tarefas Ant do Maven para gerenciar as dependncias de nossas construes Ant. Embora o Maven esteja ganhando fora, o Ant continua sendo a ferramenta para construo mais amplamente usada em desenvolvimento de Java. O cdigo de exemplo de cada captulo tambm possui um arquivo pom.xml do Maven e pode ser compilado com ele. Em muitos casos, o arquivo de construo do Maven fornece a mesma funcionalidade que o arquivo build.xml de Ant usando o plug-in Maven Hibernate 3. No captulo 12 voc encontrar orientaes para construir e distribuir aplicaes do Hibernate utilizando o Maven por completo, mas a maioria dos exemplos deste livro foca Ant como uma ferramenta de construo, utilizando as Tarefas Ant Maven para aliviar o tdio de ter que procurar e baixar as vrias bibliotecas que precisamos e as bibliotecas das quais elas, por sua vez, dependem. Para se beneficiar de todas essas capacidades, necessrio ter o Ant instalado e funcionando em seu sistema. Eu me questionava porque as pessoas preferiam Ant quanto poderiam usar Make. Agora vejo como Ant gerencia bem as construes de Java, e fico perdido sem ele.

Como eu fao isso?


Voc pode baixar uma verso binria de Ant de http://ant.apache.org/bindownload.cgi. Role a pgina para baixo para encontrar a verso atual de Ant e baixe o arquivo em um formato adequado para voc trabalhar. Escolha um lugar apropriado para ele e expanda o arquivo ali. O diretrio no qual voc expandiu o arquivo conhecido como ANT_HOME. Digamos que voc expandiu os arquivos compactados no diretrio/usr/ local/apache-ant-1.7.0; se preferir, voc pode criar um link simblico para facilitar o trabalho com ele e evitar a necessidade de mudanas em qualquer configurao de ambiente quando voc atualizar para uma verso mais nova.
/usr/local % ln -s apache-ant-1.7.0 ant

Uma vez que o Ant foi estabelecido, voc precisa fazer algumas coisas para que ele funcione corretamente. necessrio acrescentar seu diretrio bin na distribuio (neste exemplo, / usr/local/ant/bin) para o seu caminho de comando. Tambm necessrio configurar a varivel do ambiente ANT_HOME para o diretrio de nvel superior que voc instalou (neste exemplo, /usr/local/ant). Os detalhes sobre como executar esses passos, em diferentes sistemas operacionais, podem ser encontrados no manual do Ant (http://ant.apache. org/manual/) se precisar deles.

Verique sua verso Java


claro que tambm estou supondo que voc tem um kit de desenvolvimento de software Java (SDK). Atualmente voc deve estar usando, no mnimo, Java 5 , uma vez que oferece algumas caractersticas novas que so teis. Se puder, opte pelo SDK estvel mais recente. Tanto Java 5 quanto o Java 6 devem funcionar com todos os exemplos deste livro. Era possvel utilizar a maior parte do Hibernate 2 com Java 1.3, mas
*http://maven.apache.org/ 4 Dominando Hibernate

geralmente era necessrio reconstruir o arquivo Hibernate JAR usando o seu compilador 1.3. Podemos apenas imaginar que verses mais recentes dependem ainda mais fortemente de verses atuais de Java e Java 5 j est de lado tempo o suficiente e tem seus prprios benefcios, que nem mesmo investigaremos a compatibilidade com JDKs anteriores. Nossos exemplos so escritos supondo que voc tenha ao menos o Java 5 caso no tenha, srios ajustes sero necessrios:
% java version Java version 1.6.0_02 Java(TM) SE Runtime Environment (build 1.6.0_02-b06) Java HotSpot(TM) Client VM (build 1.6.0_02-b06, mixed mode, sharing)

Voc tambm deve usar uma distribuio Java licenciada verdadeira (como as da Sun ou Apple); nossos revisores tcnicos acharam que a semelhante implementao GNU no executaria essas ferramentas e exemplos adequadamente quando estvamos escrevendo este livro. Esse ambiente GNU o Java padro carregado com diversas distribuies Linux. Se estiver trabalhando com uma distribuio Linux, pode ser que precise baixar o JDK da Sun e ter certeza que essa a verso que est chamando (executando javaversion). Agora que a Sun possui Java de fonte aberta, esperamos que isso melhore no futuro e teremos JRE e JDK Sun por padro, mesmo em distribuies puristas. At l, provavelmente ser necessrio fazer o donwload da verso mais recente. Quando este livro estava sendo escrito, as distribuies baseadas em Debian permitiam instalar um JDK Sun utilizando seus utilitrios de gerenciamento de pacotes (tanto o 5 como o 6 esto disponveis nas verses Feisty Fawn e Gustsy Gibbon do Ubuntu. Distribuies derivadas do Red Hat ainda necessitam baixar Java diretamente da Sun Microsystems. Sua quilometragem pode variar. Quando tudo isso estiver configurado, voc pode comear a aquecer o Ant executando um teste e verificar se est tudo certo.
% ant -version Apache Ant version 1.7.0 compiled on December 13 2006

O que aconteceu?
Bem, no muito ainda, mas agora voc est em uma posio onde poder testar os exemplos que fornecermos mais tarde e us-los como ponto inicial para os seus projetos reais do Hibernate. Se o Ant novo para voc, no seria m idia ler o manual um pouquinho para ter noo de como ele funciona e o que ele pode fazer; isso ajudar dando sentido aos arquivos build.xml que usaremos em nossos exemplos. Se decidir (ou j sabe) que gosta do Ant e quer ir mais a fundo, voc pode ler o manual ou pegar o Ant: The Definitive Guide da OReilly (depois que terminar este livro, claro)!

Mas e...
...o Eclipse, o JBuilder, o NetBeans ou qualquer outro IDE Java? Bem, claro que voc pode us-los, mas estar sozinho at que precisar integrar Ant no processo de construo. (Vrios j utilizam Ant, ento pode ser que voc inicie mais frente; para os outros, pode ser que passem por alguns momentos difceis.) Se tudo falhar, use o IDE para desenvolver seu prprio cdigo, mas chame o Ant da linha de comando quando precisar usar um de nossos scripts de construo.
http://www.ant.apache.org/manual/ http://www.eclipse.org/ http://www.borland.com/jbuilder/ http://www.netbeans.org/ Captulo 1: Instalao e Congurao 5

Se estiver usando o Maven, voc pode gerar os arquivos do projeto Eclipse IDE executando mvn eclipse:eclipse do diretrio de exemplo de qualquer captulo ou de diretrios de exemplo de nveis superiores. Se executar mvn eclipse:eclipse dos diretrios de exemplo, o Maven gerar um projeto Eclipse para cada configurao de exemplo do captulo. No Captulo 12 voc encontrar instrues mais detalhadas para construir os exemplos em Maven e, no Captulo 11, uma introduo para usar as ferramentas Eclipse do Hibernate mais profundamente.

Como obter as Tarefas do Maven para Ant


Espere eu no disse que estamos utilizando Ant nos projetos de exemplo deste livro? Sim. Mas no s isso. Embora o Ant permanea como o fundamento para os exemplos deste livro, decidimos tambm, nessa segunda verso, melhorar as caractersticas de gerenciamento de dependncia excelente do Maven atravs das Tarefas Maven para Ant. A primeira verso deste livro gastou pginas preciosas fornecendo instrues para baixar e arrumar toda a hospedagem das bibliotecas de terceiros: tudo do Jakarta Commons Lang para CGLIB. (E pela sua perspectiva, isso significa que voc gastaria muitos minutos preciosos seguindo as instrues com cuidado e de forma tediosa.)

Figura 1-1 Link do download para as Tarefas do Maven para Ant no site do Maven

Nesta verso declaramos as dependncias de nossos projetos em nosso arquivo build.xml e deixamos o Maven tomar conta do download e do gerenciamento de nossas dependncias. Isso economiza toneladas de passos e de tempo. Agora hora de instalar as Tarefas do Maven para Ant.

Como eu fao isso?


Existem duas maneiras de integrar as Tarefas do Maven para Ant: a primeira baixar o JAR requisitado no diretrio lib de Ant e a segunda incluir a antlib atravs da declarao typedef em um arquivo de construo Ant. Vamos utilizar o mtodo anterior e baixar o maven-ant-tasks-2.0.8.jar no diretrio lib de
6 Dominando Hibernate

Ant porque ele requer uma quantidade mnima de trabalho no arquivo build.xml do nosso exemplo e facilita o compartilhamento de vrios projetos. Criaremos build.xml mais tarde. Primeiro vamos baixar o arquivo JAR necessrio do site# do Maven. Na primeira pgina voc ver um link para download das Tarefas do Maven para Ant (veja a Figura 1-1). Enquanto escrevia este livro, as Tarefas do Maven para Ant estavam na verso 2.0.8. Ao clicar no link Maven Tasks for Ant 2.0.8 e escolher uma cpia, voc far o download do arquivo JAR nomeado maven-ant-tasks2.0.8.jar. Salve esse arquivo em um diretrio local.

Instalar as Tarefas do Maven para Ant


Agora, copie o arquivo maven-ant-tasks-2.0.8.jar que voc baixou em seu diretrio ANT_HOME/lib. Se voc est seguindo este captulo do incio ao fim, voc acabou de baixar e instalar o Ant. Voc tambm deve ter configurado a varivel do ambiente ANT_HOME e deve estar familiarizado com o lugar em que instalou o Ant. Depois que copiou maven-ant-tasks-2.0.8.jar para o seu diretrio ANT_HOME/lib, qualquer arquivo build.xml pode incluir espao com nome apropriado para utilizar as Tarefas do Maven para Ant. Se executar esses exemplos em uma mquina de desenvolvimento multiusurio e no tiver direitos administrativos para colocar um arquivo JAR no diretrio ANT_HOME/lib, no se preocupe. Voc pode colocar o arquivo maven-ant-tasks-2.0.8.jar no diretrio ~/.ant/lib. O Ant automaticamente procurar arquivos JAR nesse diretrio. Depois de copiar maven-ant-tasks-2.0.8.jar em seu diretrio ANT_HOME/lib, voc poder executar os seguintes comandos para ver se maven-ant-tasks-2.0.8.jar est includo no caminho da classe em Unix:
% ant -diagnostics | grep maven | grep bytes maven-ant-tasks-2.0.8.jar (960232 bytes)

No Windows, execute ant-diagnostics e analise o resultado para verificar a presena de maven-ant-tasks2.0.8.jar na lista de bibliotecas, no caminho da classe.

Utilizar o servidor de Banco de Dados HSQLDB


O Hibernate funciona com grandes e variados bancos de dados relacionais; as chances so de que ele funcione com aquele que voc est planejando usar em seu prximo projeto. Precisamos escolher um para focar em nossos exemplos e, por sorte, h uma opo bvia. O projeto livre, de fonte aberta, 100% Java HSQLDB poderoso o bastante para formar armazenamento complementar para os nossos projetos de software comercial. Surpreendentemente, tambm independente e de simples instalao to fcil, na realidade, que podemos deixar o Maven cuidar dele para ns nesta nova verso do livro por isso perfeito discuti-lo aqui. (Se voc j ouviu sobre o Hypersonic-SQL, essa a encarnao atual dele. Grande parte da documentao do Hibernate utiliza nomes antigos. No entre em pnico se voc se deparou com o http://hsql.sourceforge.net/, pois parece o tipo de projeto que nunca foi terminado. Esse endereo est errado; ele fala sobre o predecessor ao projeto atual HSQLDB. A figura 1-2 mostra a pgina principal correta, atual e bem viva do projeto.

#http://maven.apache.org/ Captulo 1: Instalao e Congurao 7

Por que me preocupar?


Os exemplos so fundamentados em um banco de dados que todos podem baixar e experimentar facilmente de maneira que no ser necessrio traduzir qualquer um dos nossos dialetos SQL ou comandos de sistema operacional para trabalhar com seus bancos de dados disponveis (e que pode significar ainda que voc economizar um dia ou dois para aprender como baixar, instalar e configurar um dos ambientes de banco de dados mais tpicos. Finalmente, se o HSQLDB novo para voc, provavelmente ficar impressionado e intrigado e poder at utiliz-lo em seus prprios projetos. Conforme est na pgina principal do projeto: O HSQLDB o servidor lder de banco de dados relacional escrito em Java. Ele possui um driver JDBC e suporta um subsistema rico de ANSI-92 SQL (BNF em formato de rvore) mais as melhorias do SQL 99 e 2003. Ele oferece um pequeno (menos de 100 k em uma verso para miniaplicativos) e rpido servidor de banco de dados que oferece tanto memria interna como tabelas baseadas em disco e suporta modos embutidos e servidores. Ele tambm inclui ferramentas tais como um servidor mnimo para web, requisio em memria, ferramentas de gerenciamento (podem ser executadas como miniaplicativos) e um nmero de exemplos de demonstrao.

Como eu fao isso?


Quando voc construir os exemplos deste livro, as Tarefas Ant Maven automaticamente baixaro o HSQLDB JARs (e quaisquer outros JARs que forem necessrios) do repositrio Maven em http://repo1.maven.org/ maven2/. Por isso, se quiser comear a usar imediatamente, voc pode pular para a seo Configurando a Hierarquia de um Projeto. Por outro lado, se preferir baixar o HSQLDB para suas prprias finalidades ou explorar a documentao, o frum online ou os arquivos da lista de correspondncia, visite a pgina do projeto em http://hsqldb.org/. Clique no link para baixar manualmente a ltima verso estvel (que a 1.8.0.7 usada quando o livro estava sendo escrito, conforme destacado na Figura 1-2). Ela te levar a uma pgina de downloads SourceForge com a verso atual selecionada. Faa uma cpia e baixe o arquivo ZIP. Continue, baixe o HSQLDB. Nossa, leva dois minutos, eles so pequenos!

Mas e...
... algum outro banco de dados? No se preocupe, o Hibernate pode trabalhar com MySQL, PostgreSQL, Oracle, DB2, Sybase, Informix, Apache Derby e outros. (Falaremos sobre como especificar dialetos em diferentes bancos de dados mais tarde, no Captulo 10 e no Apndice C.) E, se quiser realmente, voc pode tentar compreender como trabalhar com o seu preferido desde o incio, mas isso significa trabalho extra para voc ao acompanhar os exemplos e perder uma grande oportunidade para descobrir o HSQLDB.

8 Dominando Hibernate

Figura 1-2 Link da ltima verso estvel na pgina principal do HSQLDB

Usar o Hibernate Core


Esta seo no necessita de tanta motivao! Voc pegou este livro porque quis aprender a usar o Hibernate. A parte que fornece servios do ncleo do mapeamento objeto/relacional para suas aplicaes chamada, talvez no surpreendentemente, de Hibernate Core. Quando construir os exemplos deste livro, o Hibernate e todas as suas dependncias so baixadas automaticamente. Apesar de esta nova verso dos exemplos do livro se preocupar em buscar o Hibernate atravs das Tarefas Ant Maven, voc pode baixar a ltima distribuio do Hibernate para explorar a fonte ou apenas visualizar a documentao online, o frum e outros materiais de apoio por sua conta. Se estiver pronto para os testes, voc pode pular para a prxima seo, Configurando a Hierarquia de um Projeto.

Como eu fao isso?


Comece na pgina principal do Hibernate em http://hibernate.org/ e explore a partir dali. Para conseguir uma cpia completa da distribuio, procure o link de Download, que fica no lado esquerdo conforme mostrado na Figura 1-3. A seo das Verses Binrias mostrar qual verso do Hibernate Core recomendvel para ser baixada; siga essa recomendao. (Se tiver coragem, voc pode tentar uma verso em Desenvolvimento, mas a aposta mais segura ficar com a verso mais recente de Produo.) Depois que escolheu a verso, clique no link para Download na linha correspondente (veja a Figura 1-4).

Captulo 1: Instalao e Congurao 9

Figura 1-3 Link para Download na pgina principal do Hibernate

Voc ser levado para uma pgina de downloads SourceForge com a sua verso escolhida e a opo de formatos de arquivos. Escolha a sua verso preferida e baixe-a. O nome do arquivo ser algo do tipo hibernate-3. x.y.tar.gz ou hibernate-3.x.y.zip. (Enquanto escrevia este livro , os nomes dos arquivos comeavam com hibernate-3.2.5.ga, uma vez que geralmente a verso disponvel do Hibernate 3.2.5 a verso de produo atual.) Escolha um local adequado para manter tais itens e expanda os arquivos compactados. Na pgina de download do Hibernate, voc pode olhar o Hibernate Tools (link de download que leva at uma pgina entitulada JBossTools, mas ainda possvel encontrar o Hibernate Tools ali). Essas ferramentas oferecem diversas capacidades teis que no so necessrias em uma aplicao que executa o Hibernate, mas so muito teis para os desenvolvedores que criam tais aplicaes. Logo utilizaremos uma para gerar cdigo em Java em nossa primeira experincia. O nome de arquivo Tools aparecer como em hibernatetools3.x.y.zip (no haver necessariamente a mesma verso do prprio Hibernate, pois normalmente est disponvel apenas como beta; a Matriz de Compatibilidade, logo abaixo da seo Verses Binrias da pgina de download do Hibernate, exibe uma tabela mostrando quais partes do Hibernate so compatveis).

10 Dominando Hibernate

Figura 1-4 Verses binrias do Hibernate

Novamente, baixe esse arquivo e expanda-o perto de onde voc colocou o Hibernate. Se tiver problemas com os links de download, o site pode ser alterado e voc no ver os arquivos que espera. Se isso acontecer, voc pode voltar e clicar no link Browse all Hibernate downloads abaixo da caixa das Verses Binrias e rolar a pgina at encontrar o que procura. O projeto to ativo que isso acontece com mais freqncia do que voc imagina.

Congurar a Hierarquia de um Projeto


Embora comecemos com pequenos arquivos nesse teste, quando comearmos a projetar estruturas de dados e construir classes de Java e tabelas de banco de dados que as representam, junto com toda a configurao e arquivos de controle para uni-los e fazer coisas teis acontecer, terminaremos com muitos arquivos. Por isso, queremos certificar que seremos muito organizados desde o incio. Entre as ferramentas que baixamos e suas bibliotecas de suporte, h ainda um nmero significante de arquivos para organizar. Por sorte, as Tarefas Ant Maven baixam e gerenciam todas as dependncias externas.

Por que me preocupar?


Se voc construir algo legal estendendo os exemplos deste livro e quiser transform-lo em uma aplicao real, estar bem desde o incio. Alm disso, se voc configurar conforme est explicado aqui, os comandos e as instrues que dermos atravs dos exemplos faro sentido e funcionaro de fato; muitos exemplos constroem-se uns nos outros por todo o livro, por isso importante continuar no caminho certo desde o incio. Se quiser pular para os exemplos mais frente ou evitar a digitao de cdigos de amostra mais longos e arquivos de configurao, voc pode baixar as verses terminadas dos exemplos do captulo no site* do livro. Esses downloads sero organizados conforme for descrito aqui. Recomendamos que baixe os exemplos e os use como referncia enquanto ler este livro.

*http://www.altabooks.com.br Captulo 1: Instalao e Congurao 11

Como eu fao isso?


Aqui est a ordem de configurao da hierarquia de um projeto vazio, se voc no estiver baixando os exemplos terminados: 1. Escolha um local em seu disco rgido, onde queira trabalhar com esses exemplos, e crie uma nova pasta, que ser referida a partir de agora como o seu diretrio de projeto. 2. V nesse diretrio e crie subdiretrios chamados src e data. A hierarquia de fonte Java e os recursos relacionados estaro no diretrio src. Nosso processo de construo far a compilao em um diretrio de classes que ele criar, assim como copiar qualquer recurso do tempo de execuo ali. O diretrio data onde colocaremos o banco de dados HSQLDB. 3. As classes de exemplo que criaremos ficaro todas no pacote com.oreilly.hh (harnessing Hibernate) e faremos com que o Hibernate gere nossos beans de dados no pacote com.oreilly.hh.data para mant-los separados das classes que escrevermos mo, por isso crie esses diretrios abaixo do diretrio src. No Linux e no Mac OS X, voc pode usar:
mkdir -p src/com/oreilly/hh/data

de dentro do seu diretrio de projeto para realiz-lo em um passo. Nesta altura, seu diretrio de projeto deve estar estruturado como na Figura 1-5. Est bem mais simples que no primeiro livro, onde quase no compensa mostrar o exemplo.

Um teste rpido
Antes de ativar o Hibernate de fato para fazer qualquer trabalho til, vale a pena verificar se as partes de apoio esto no devido lugar e prontas para serem utilizadas. Vamos comear pelo arquivo de configurao Ant que usaremos em todo o projeto, diga ao Ant onde foram colocados os arquivos que estamos usando e ative a interface de banco de dados grfica HSQLDB. Isso ser prova de que as Tarefas Ant Maven so capazes de encontrar e baixar as bibliotecas das quais os exemplos dependero e a habilidade de acessar a interface ser til mais tarde, quando quisermos olhar os dados reais que o Hibernate vem criando para ns. No momento , em primeiro lugar, um teste de racionalidade para verificar se no h erros e que estamos prontos para seguir adiante. Ative um editor de texto de sua escolha e crie um arquivo nomeado build.xml no nvel superior, dentro do seu diretrio de projeto. Digite o contedo do Exemplo 1-1 no arquivo.

12 Dominando Hibernate

Figura 1-5 Contedo do diretrio de projeto inicial

O Hibernate est fazendo as criaes para ns. Por enquanto, esta apenas uma vericao de sanidade, para ver se no h nenhum defeito, e logo estaremos prontos para continuar. Abra o editor de texto de sua preferncia e crie um arquivo chamado build.xml no topo de seu diretrio de projetos. Digite o contedo do Exemplo 1-1 no arquivo.
Exemplo 1-1. Arquivo de construo Ant
<?xml version=1.0?> 1 <project name=Harnessing Hibernate 3 (Developers Notebook Second Edition) default=db basedir=. xmlns:artifact=antlib:org.apache.maven.artifact.ant> 2 <!-- Configure as propriedades que contm diretrios de projeto importantes 3 --> <property name=source.root value=src/> <property name=class.root value=classes/> <property name=data.dir value=data/> <artifact:dependencies pathId=dependency.classpath> 4 <dependency groupId=hsqldb artifactId=hsqldb version=1.8.0.7/> <dependency groupId=org.hibernate artifactId=hibernate version=3.2.5.ga> <exclusion groupId=javax.transaction artifactId=jta/> </dependency> <dependency groupId=org.hibernate artifactId=hibernate-tools version=3.2.0.beta9a/> <dependency groupId=org.apache.geronimo.specs artifactId=geronimo-jta_1.1_spec version=1.1/> <dependency groupId=log4j artifactId=log4j version=1.2.14/> </artifact:dependencies> <!-- Configure o caminho de classe para compilao e execuo --> <path id=project.class.path> 5 <!-- Inclua nossas prprias classes, claro --> <pathelement location=${class.root} /> 6 <!-- Acrescente o classpath das dependncias --> <path refid=dependency.classpath/> 7 </path> <target name=db description=Runs HSQLDB database management UI against the database file--use when application is not running> 8 <java classname=org.hsqldb.util.DatabaseManager fork=yes> <classpath refid=project.class.path/> <arg value=-driver/> <arg value=org.hsqldb.jdbcDriver/>

Captulo 1: Instalao e Congurao 13

<arg <arg <arg <arg </java> </target> </project>

value=-url/> value=jdbc:hsqldb:${data.dir}/music/> value=-user/> value=sa/>

Cuidado com a pontuao ao digitar isso e preste ateno especial nas tags XML de autofechamento (aquelas que terminam com /> em vez de >). Se errar, ser retribudo com erros de sintaxe quando executar Ant. Novamente, voc pode baixar todos esses arquivos se no precisar digit-los. Se estiver como um arquivo em PDF na tela, voc tambm pode copiar e colar o cdigo, mas precisar editar os marcadores numerados em destaque. Se voc nunca viu um arquivo de construo Ant antes, temos uma introduo rpida para ajudar voc a orientar-se. Se quiser mais detalhes, a documentao em http://ant.apache.org/manual/index.html muito boa:

A primeira linha simplesmente uma declarao que o tipo do arquivo XML. Se voc j trabalhou com XML em outros contextos, est acostumado a ver isso. Se no, voc o ver novamente. (Ant no necessita disso atualmente, mas a maioria das sintaxes XML necessita, ento bom desenvolver esse hbito.) Os arquivos de construo do Ant contm uma definio project nica. O atributo default diz para Ant qual alvo (definido mais tarde) construir, se voc no especificar um comando de linha. E o atributo basedir determina o diretrio relativo para o qual todos os clculos de caminho so feitos. Poderamos ter deixado isso de fora j que o padro tratar os caminhos como sendo relativos ao diretrio no qual o build.xml est localizado, mas no uma boa prtica ser explcito sobre configuraes fundamentais como essa. Algo importante a se notar neste elemento project a definio do espao de nome xmlns:artifact para as Tarefas Ant Maven. Essa definio do espao de nome torna as Tarefas Ant Maven disponveis dentro desse arquivo de construo usando o prefixo artifact: (como voc ver em uso posteriormente). A prxima parte define trs propriedades que podem ser usadas com nome pelo restante do arquivo em construo. Essencialmente, estamos definindo nomes simblicos para os diretrios importantes usados por aspectos diferentes do projeto. No necessrio (especialmente quando os diretrios so nomeados de maneira simples), porm essa outra boa prtica. Primeiramente, isso significa que, se voc precisar mudar a localizao de um desses diretrios, ser necessrio consertar apenas um lugar no arquivo em construo em vez de conduzir uma busca tediosa e fazer a substituio. O elemento artifact:dependencies faz parte das Tarefas Ant Maven, que voc (e Ant) podem chamar pelo prefixo artifact:Nesse elemento definimos uma srie de dependncias que o projeto necessita para compilao e execuo. Essas dependncias correspondem aos arquivos JAR (ou artefatos) no Repositrio central do Maven 2 em http://repo1.maven.org/maven2. Cada artefato unicamente identificado por um groupId, artifactId e um nmero version. Nesse projeto, dependemos do Hibernate, do HSQLDB, do Log4J e do JTA API. Quando as Tarefas Ant Maven encontram essas declaraes de dependncia, cada artefato baixado do repositrio central do Maven 2, em uma base de acordo com a necessidade, em seu repositrio local do Maven 2 (in ~/.m2/repository). No se preocupe se esta seo no fizer muito sentido ainda; entraremos em detalhes nas prximas pginas.

14 Dominando Hibernate

Esta seo onde voc faria mudanas para usar a verso mais recente de um desses pacotes, se quisesse (uma vez que as verses mais recentes provavelmente estaro disponveis aps a publicao deste livro), mudando os valores de version. Mas voc pode ficar tranqilo porque os exemplos publicados no livro continuaro a funcionar, visto que o repositrio do Maven garante que as verses que testamos em oposio continuaro disponveis sempre que explorar os exemplos. Esse foi um grande motivo para decidirmos adotar as Tarefas Ant Maven neste livro.
5

A seo class-path serve uma finalidade clara. Esse atributo sozinho o motivo de eu quase nunca comear os projetos em Java sem configurar, ao menos, uma construo Ant simples para eles. Quando se usa muitas bibliotecas de terceiros, o que voc far em qualquer projeto srio, h muito que precisa ir para o seu caminho de classe e voc tem que ter certeza que configurou de maneira equivalente no tempo de compilao e execuo. O Ant facilita isso. Definimos um caminho, que como se fosse uma propriedade, mas ele sabe como analisar e selecionar arquivos e diretrios. Nosso caminho contm o diretrio classes no qual estaremos compilando nosso cdigo Java (esse diretrio no existe ainda; acrescentaremos um passo no processo de construo para cri-lo no prximo captulo), e tambm contm todos os arquivos JAR correspondentes s dependncias listadas no elemento artifact:dependencies. exatamente disso que precisamos para compilao e execuo. A compreenso e a manipulao de Ant nos caminhos de Java e as hierarquias de classe uma grande vantagem. Vale a pena aprender mais a fundo.

A sintaxe nessa linha parece uma complicao de pontuaes, mas pode ser separada em partes que fazem sentido. O Ant permite usar a substituio para inserir valores variveis em suas regras. Sempre que voc vir algo do tipo

, isso significa procure o valor da propriedade nomeada class.root e coloque-o aqui. Por isso, dada a definio da propriedade class.root antes, como se digitassemos: <pathelementlocation=clas ses/>. Ento, por que fazer isso? Isso permite que voc divida um valor por todo o arquivo, assim, se precisar mud-lo alguma vez, h apenas um lugar para se preocupar. De maneira mais ampla, em projetos complexos, esse tipo de organizao e gerenciamento crucial.

O elemento artifact:dependencies, que vimos antes, junta-se a todas as dependncias declaradas em um nico caminho nomeado dependency.classpath usando seu atributo pathId. Aqui, estamos anexando o contedo de dependency.classpath para o project.class.path para que todas as dependncias trazidas pelo Maven estejam disponveis na compilao e no tempo de execuo.

Finalmente, com todo esse prlogo que no demais, podemos definir nosso primeiro alvo. Um alvo simplesmente uma srie de tarefas que necessita ser executada com a finalidade de cumprir o objetivo de um projeto. Alvos tpicos fazem coisas como compilar cdigo, executar testes, empacotar coisas para distribuio e assim por diante. As tarefas so escolhidas a partir de uma srie rica de capacidades construdas no Ant e ferramentas de terceiros, como o Hibernate, podem estender o Ant para fornecer suas prprias tarefas teis, como veremos no prximo captulo. Nosso primeiro alvo, db, executar a interface grfica do HSQLDB para que possamos olhar em nosso banco de dados de exemplo. Podemos alcanar isso usando a tarefa java construda de Ant, que pode executar uma mquina virtual Java para ns, com quaisquer classe inicial, argumentos e propriedades que queiramos.
Captulo 1: Instalao e Congurao 15

Nesse caso, a classe que queremos invocar org.hsqldb.util.DatabaseManager, localizada em HSQLDB JAR que as Tarefas Ant Maven gerenciaro para ns. Ao configurar o atributo fork para yes, voc diz ao Ant para usar uma mquina virtual separada, que no o padro, uma vez que leva um pouco mais de tempo e normalmente no necessria. Nesse caso importante, desde que queiramos que o gerenciador de banco de dados GUI fique por perto at o dispensarmos, e isso no acontece quando executado o VM prprio do Ant. Se seu banco de dados GUI abre e desaparece, verifique novamente o atributo fork da sua tarefa java. Voc pode ver como informamos a tarefa java no caminho da classe que configuramos; essa uma caracterstica comum de nossos alvos. Em seguida, fornecemos uma quantidade de argumentos ao gerenciador do banco de dados dizendo para usar o driver HSQLDB JDBC, onde encontrar o banco de dados e que nome de usurio utilizar. Especificamos um banco de dados chamado music no diretrio data. Atualmente, esse diretrio est vazio, por isso o HSQLDB criar o banco de dados na primeira vez que o utilizarmos. O usurio o administrador do sistema padro para novos bancos de dados e ele configurado para no precisar de senha inicialmente. bvio que, se voc planeja disponibilizar esse banco de dados na rede (o que o HSQLDB capaz de fazer), voc ter que configurar uma senha. No estamos fazendo nada to especial, ento podemos deixar isso de fora por enquanto. Certo, agora vamos tentar! Salve o arquivo e, a partir de uma orientao (comando) encapsulada executando em seu diretrio de projeto de nvel superior (onde voc coloca build.xml), digite o comando:
ant db

(Ou, depois que fizemos do db o alvo padro , possvel digitar apenas ant.) Uma vez que o Ant comea a ser executado, se tudo correr bem, voc ver o produto assim:
Buildfile: build.xml Downloading: hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.pom Transferring 0K Downloading: org/hibernate/hibernate/3.2.5.ga/hibernate-3.2.5.ga.pom Transferring 3K Downloading: net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.pom Transferring 19K Downloading: commons-logging/commons-logging/1.0.4/commons-logging1.0.4.pom Transferring 5K Downloading: commons-collections/commons-collections/2.1/commons-collections2.1 .pom Transferring 3K Downloading: asm/asm-attrs/1.5.3/asm-attrs-1.5.3.pom Transferring 0K Downloading: dom4j/dom4j/1.6.1/dom4j-1.6.1.pom Transferring 6K Downloading: antlr/antlr/2.7.6/antlr-2.7.6.pom Transferring 0K Downloading: cglib/cglib/2.1_3/cglib-2.1_3.pom Transferring 0K Downloading: asm/asm/1.5.3/asm-1.5.3.pom Transferring 0K Downloading: commons-collections/commons-collections/2.1.1/commonscollections-2 .1.1.pom Transferring 0K

16 Dominando Hibernate

Downloading: org/hibernate/hibernate-tools/3.2.0.beta9a/hibernate-tools3.2.0.be ta9a.pom Transferring 1K Downloading: org/hibernate/hibernate/3.2.0.cr5/hibernate-3.2.0.cr5.pom Transferring 3K Downloading: freemarker/freemarker/2.3.4/freemarker-2.3.4.pom Transferring 0K Downloading: org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.pom Transferring 0K Downloading: org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.1/geronimojta_1. 1_spec-1.1.pom Transferring 1K Downloading: org/apache/geronimo/specs/specs/1.2/specs-1.2.pom Transferring 2K Downloading: org/apache/geronimo/genesis/config/project-config/1.1/projectconfi g-1.1.pom Transferring 14K Downloading: org/apache/geronimo/genesis/config/config/1.1/config-1.1.pom Downloading: org/apache/geronimo/genesis/config/config/1.1/config-1.1.pom Downloading: org/apache/geronimo/genesis/config/config/1.1/config-1.1.pom Transferring 0K Downloading: org/apache/geronimo/genesis/genesis/1.1/genesis-1.1.pom Downloading: org/apache/geronimo/genesis/genesis/1.1/genesis-1.1.pom Downloading: org/apache/geronimo/genesis/genesis/1.1/genesis-1.1.pom Transferring 6K Downloading: org/apache/apache/3/apache-3.pom Downloading: org/apache/apache/3/apache-3.pom Downloading: org/apache/apache/3/apache-3.pom Transferring 3K Downloading: log4j/log4j/1.2.14/log4j-1.2.14.pom Transferring 2K Downloading: org/hibernate/hibernate-tools/3.2.0.beta9a/hibernate-tools3.2.0.be ta9a.jar Transferring 352K Downloading: org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar Transferring 243K Downloading: commons-collections/commons-collections/2.1.1/commonscollections-2 .1.1.jar Transferring 171K Downloading: commons-logging/commons-logging/1.0.4/commons-logging1.0.4.jar Transferring 37K Downloading: antlr/antlr/2.7.6/antlr-2.7.6.jar Transferring 433K Downloading: org/apache/geronimo/specs/geronimo-jta_1.1_spec/1.1/geronimojta_1. 1_spec-1.1.jar Transferring 15K Downloading: net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar Transferring 203K Downloading: asm/asm/1.5.3/asm-1.5.3.jar Transferring 25K Downloading: freemarker/freemarker/2.3.4/freemarker-2.3.4.jar Transferring 770K Downloading: dom4j/dom4j/1.6.1/dom4j-1.6.1.jar Transferring 306K Downloading: asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar Transferring 16K Downloading: cglib/cglib/2.1_3/cglib-2.1_3.jar Transferring 275K Downloading: hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar Transferring 628K Downloading: log4j/log4j/1.2.14/log4j-1.2.14.jar

Captulo 1: Instalao e Congurao 17

Transferring 358K Downloading: org/hibernate/hibernate/3.2.5.ga/hibernate-3.2.5.ga.jar Transferring 2202K db:

Essa grande lista de downloads mostra as Tarefas Ant Maven realizando o seu trabalho de procurar as partes que dissemos que precisaramos (incluindo o HSQLDB e o Hibernate), juntamente com todas as bibliotecas que elas, por sua vez, dependem. Isso leva um tempo para fazer (dependendo da velocidade da sua conexo de rede, e de quanto os servidores estejam carregados), mas isso ser necessrio apenas uma vez. Na prxima vez que voc ativar o Ant, as Tarefas Ant Maven simplesmente avisaro que seu repositrio local j contm todas essas partes, e prosseguir silenciosamente com o que voc quiser executar. Depois que todo o download estiver completo, o Ant mostra db: para indicar que comea executar o alvo requisitado. Um tempo depois, voc deve ver a interface grfica do HSQLDB, que ser como na Figura 1-6. No h nada em nosso banco de dados ainda, por isso h muito coisa a ser vista, caso o comando tenha funcionado. A exibio em rvore na parte superior esquerda onde as diversas tabelas e colunas em nosso banco de dados podem ser exploradas. Por enquanto, verifique apenas se a parte superior l jdbc:hsqldb:data/music.

Figura 1-6 Interface do gerenciador de banco de dados HSQLDB

Voc pode explorar os menus um pouco se quiser, mas no mude nada no banco de dados. Quando terminar, escolha File Exit. A janela fechar e o Ant notificar:
BUILD SUCCESSFUL Total time: 56 seconds

A quantidade de tempo que voc gastar brincando pode variar, claro. (Lembre que o Ant fica por perto at que o banco de dados fecha, devido ao atributo fork que acrescentamos tarefa java.) Nesse ponto, se voc olhar no diretrio de dados, vai achar que o HSQLDB criou alguns arquivos para manter o banco de dados:
% ls data music.log music.properties music.script

18 Dominando Hibernate

Voc pode at olhar o contedo desses arquivos. Diferente da maioria dos sistemas de banco de dados, o HSQLDB armazena seus dados em um formato legvel por padro. O arquivo das propriedades contm algumas configuraes bsicas e os dados por si s entram no arquivo do script, na forma de declarao SQL. O arquivo de evento utilizado para reconstruir o estado de um banco de dados consistente se a aplicao travar, do contrrio sai sem fechar o banco de dados com elegncia. Nesse momento, tudo o que voc encontrar nesses arquivos so as definies bsicas que entram por padro, mas como comeamos a criar tabelas e a adicionar dados a elas, voc poder visualizar o arquivo novamente e ver as mudanas aparecerem nela. Essa pode ser uma caracterstica de depurao para verificao de sanidade e ainda mais rpido que ativar a interface grfica e as queries em execuo. O fato de poder ler os arquivos do banco de dados HSQLDB estranho, mas divertido.

O que aconteceu?
Agora que executamos o primeiro exemplo com sucesso e configuramos nosso arquivo de construo de projeto, provavelmente o tempo de explicar como o Ant recuperou todas as dependncias necessrias para esse projeto. Vamos examinar novamente o elemento artifact:dependencies do arquivo build.xml de exemplo. (veja o Exemplo 1-2). Exemplo 1-2 Nosso elemento artifact:dependencies
<artifact:dependencies pathId=dependency.classpath> <dependency groupId=hsqldb artifactId=hsqldb version=1.8.0.7/> <dependency groupId=org.hibernate artifactId=hibernate version=3.2.5.ga> <exclusion groupId=javax.transaction artifactId=jta/> </dependency> <dependency groupId=org.hibernate artifactId=hibernate-tools version=3.2.0.beta9a/> <dependency groupId=org.apache.geronimo.specs artifactId=geronimo-jta_1.1_spec version=1.1/> <dependency groupId=log4j artifactId=log4j version=1.2.14/> </artifact:dependencies>

Se voc nunca usou o Maven antes, isso pode parecer muito confuso. Vamos comear definindo a terminologia. Primeiro h um artefato. Um artefato um arquivo produzido por um projeto. Um artefato pode ser de qualquer tipo um WAR para uma aplicao web, um EAR para a aplicao de um projeto ou um JAR. Para o nosso objetivo dependemos de artefatos JAR e o tipo padro se no especificado no elemento de dependncia jar, convenientemente suficiente. Um artefato especfico identificado por quatro atributos: groupId, artifactId, version e type. Por exemplo, dependemos da verso 3.2.5.ga do artefato hibernate no grupo org.hibernate e o tipo indicado jar. O Maven utilizar esses identificadores para localizar a dependncia apropriada no repsitrio central do Maven 2 que est hospedado em http://repo1.maven.org/maven2/. Usando esses valores, o Maven tentar localizar o JAR para o hibernate usando o seguinte padro: <repositoryUrl>/<groupId>/<artifactId>/<v ersion>/<artifactId>-<version>.<type>, onde os perodos no groupId so convertidos para separadores de caminho para as URLs, usando esse padro, seria til colocar os JARs nas dependncias do Hibernate e do HSQLDB. Veja o Exemplo 1-3.
Example 1-3. URLs para as dependncias de projeto.
http://repo1.maven.org/org/hibernate/hibernate/3.2.5.ga/hibernate-3.2.5.ga.jar http://repo1.maven.org/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar

Captulo 1: Instalao e Congurao 19

No nosso arquivo build.xml, estamos excluindo a dependncia JTA da declarao de dependncia do Hibernate. Isso necessrio porque a biblioteca do Hibernate depende de um artefato JAR no livre e no disponvel no repositrio pblico do Maven 2. Em vez de usar o padro Sun fornecido pela JTA API JAR, esse projeto depende de uma verso do JTA API criada pelo projeto Apache Geronimo. geronimo-jta_1.1_spec uma implementao livre de fonte aberta de Java Transaction API. Essa substituio realizada usando o elemento exclusion dentro da dependncia para o Hibernate 3.2.5.ga, combinada com a dependncia explcita da especificao Geronimo JTA 1.1 mais frente. Certo, ento temos uma percepo de como as Tarefas Ant Maven recuperam as dependncias do repositrio do Maven, mas para onde elas vo uma vez que foram baixadas? As Tarefas Ant Maven baixam todas as dependncias para um repositrio local do Maven. O Maven mantm um repositrio local com uma estrutura que espelha o repositrio remoto. Quando necessita da verificao de um artefato, ele confere o repositrio local primeiro, antes de exigir o artefato do repositrio remoto. Isso significa que se vinte projetos referenciam a mesma verso do Hibernate, ele baixado do repositrio remoto uma vez, e todos os vinte projetos faro referncia a uma nica cpia armazenada no repositrio local do Maven. Ento, onde fica esse repositrio local mgico do Maven? A maneira mais fcil de responder a essa perguntar acrescentar um alvo para o nosso arquivo build.xml. Acrescente o alvo a seguir ao final do build.xml de Ant anterior do captulo, conforme mostrado no Exemplo 1-4. Exemplo 1-4. Mostrando o caminho de classe da dependncia
<target name=print-classpath description=Show the dependency class path> <property name=class.path refid=dependency.classpath/> <echo>${class.path}</echo> </target>

A execuo desse alvo produzir os seguintes resultados de sada:


% ant print-classpath Buildfile: build.xml print-classpath: [echo] ~\.m2\repository\commons-logging\commons-logging\1.0.4\commonslogging1.0.4.jar;\ ~\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;\ ~\.m2\repository\cglib\cglib\2.1_3\cglib-2.1_3.jar;\...

Tente executar esse alvo. O resultado ter variaes, dependendo de qual sistema operacional voc est usando, mas voc perceber que o caminho de classe da dependncia se refere ao seu repositrio local do Maven. Em uma mquina com Windows XP isso acontecer provavelmente em C:\Documents and Settings\Username\.m2\repository; no Windows Vista ser em C:\Users\Username\.m2\repository e no Unix e Macintosh ser no diretrio ~/.m2/repository. Voc tambm perceber que existem mais dependncias listadas no caminho de classe do que foi declarado no elemento artifact:dependencies em build.xml. Essas dependncias extras so chamadas de dependncias transitrias, e so dependncias de suas dependncias declaradas explicitamente. Por exemplo, o Hibernate depende do CGLib, EHCache e da Commons Collections, dentre outras coisas. Embora esteja fora do escopo deste livro, darei uma dica sobre como as Tarefas Ant Maven entendem as configuraes completas das dependncias para o seu projeto. Se explorar seu repositrio local depois de ter construdo um dos exemplos, voc ver que perto de todo artefato JAR h um arquivo com a extenso .pom. Os arquivos Project Object Model files (or POMs) so a fundao do sistema de construo e repositrio do Maven. Cada POM descreve um artefato e as dependncias daquele artefato. As Tarefas Ant Maven usam esses metadados para construir uma rvore de dependncias transitrias. Em outras palavras, as Tarefas Ant Maven no se preocupam apenas em baixar o Hibernate, elas baixam tudo o que o Hibernate depende. Tudo o que voc precisa saber que funciona.
20 Dominando Hibernate

E agora?
Graas s Tarefas Ant Maven, voc teve menos dificuldades para encontrar, baixar, expandir e organizar o software do que os leitores da verso anterior deste livro. Voc est no ponto ideal para comear a trabalhar com o Hibernate e, como voc ver no prximo captulo, passaremos muito rapidamente. Voc poder ver o cdigo Java escrito para voc! O esquema do banco de dados criados em lugar algum (ou, pelo menos, fora da mesma tabela de mapeamento XML que produziu Java)! As tabelas reais e os dados aparecendo na interface do gerenciador HSQLDB! (ou, pelo menos, dados de amostra falsos genunos...) Parece interessante? Bem, comparado com o que fizemos at aqui? Ento vamos comear com tudo para acordar o poder do Hibernate.

Por que no funcionou?


Se, por outro lado, voc no viu a janela do gerenciador do banco de dados aparecer e, em vez disso, foi recebido com mensagens de erros, tente entender se foi devido a problemas no arquivo de construo, por diferenas na maneira que voc configurou Ant ou sua hierarquia de projeto; dificuldade em acessar a Internet para baixar as dependncias do repositrio do Maven ou algo mais. Verifique mais de uma vez se todas as partes foram arrumadas e instaladas como vimos anteriormente, e considere baixar o cdigo de amostra se estiver tendo problemas com uma verso que voc mesmo digitou.

Captulo 1: Instalao e Congurao 21

Anda mungkin juga menyukai