Lançamento Oficial do Livro JEE com Frameworks

Comprar

ae Pessoal,

Hoje é mais um dia feliz na minha vida, e primeiramente quero agradecer à todos vocês, pela força, atenção, feedbacks que venho recebendo nesses 3 anos de blog e sem eles, acho que não estaria aqui hj fazendo este post e publicando mais este projeto. Pois, meu segundo filhão nasceu, huhuhu \o/. Lindo igual ao pai, por consequencia do destino hehe. Uma das novidades é que além do formato impresso, temos a versão e-book. A seguir fiz um overview,há um post detalhado de  pré-lançamento aqui.

Lets go…

Note: Infelizmente, tivemos um problema na linha de produção da gráfica e atrasou a publicação que estava prevista para meados de julho/2011.

Agradecimento

Antes de tudo, preciso agradecer ao melhor amigo o Edson Gonçalves. Amigo este de longas datas, o qual eu tenho grande admiração e respeito. É um dos profissionais mais completos de TI que já pude conhecer, o cara tem um conhecimento cross que é uma coisa de louco(não se limita só a parte técnica). Fora amizade que temos, onde às vezes pego o caminho errado, o verdadeiro amigo aparece e ti fala:”Falei que poderia contar comigo, o caminho  é aquele vai em frente”. Esse é o Edson um amigo de verdade.

Outra pessoa que não posso deixar de agradecer é o Daniel de Oliveria (leader-DFJUG) de uma das maiores e respeitável comunidade de Java que temos no Brasil, estou falando do DFJUG. E não poderia deixar de dar minha contribuição (para quem não sabe eu vim da comunidade Java, foi onde tudo começou e hoje retribuir o que recebi é o minimo que posso fazer), adicionado a marca  na capa do livro. Obrigado Daniel pelo seu apoio e da comunidade :).

Overview

O livro tem como objetivo de ajudar aqueles profissionais que desejam aprender Java com Frameworks. É comum ao sairmos do “ABC do JEE” (normalmente é JSP/Servlet) sem saber qual framework estudar (Hibernate, JSF, Spring, “Struts”, VRaptor etc). Porém, há um problema que todo iniciante encontra: como aprender os frameworks e saber integrá-los em uma aplicação real? É isso que vamos ver no livro, aprender a usar os frameworks de forma prática e ver um pouco da teoria(se não gosta de teoria não se preocupe, pois veremos o suficiente para poder programar de maneira confortável). Os exemplos são variados, desde Java Application até JEE, a evolução de aprendizado no livro está no formato “baby-step” ajudando assim o leitor leigo no assunto. Uma novidade que alguns vão gostar e outros não, são os exercícios chamados de “Trabalho do dia” que tem como objetivo fazer o leitor desenvolver uma solução, porém há momentos que o leitor vai precisar fazer uma pesquisa na documentação da API, Google ou consultar outros capítulos.Porém, não avisamos isso no livro, então  o leitor terá que ter essa percepção. O motivo de ter adotado isso aos exercícios, transmitir um pouco do que vai encontrar no dia-dia como desenvolvedor in company, pois nem sempre teremos um colega do lado para dar o help que precisamos.

Público-Alvo

Programadores Java que tem como objetivo aprender de forma pratica o uso dos frameworks JEE mais requisitado no mercado.

Qual o diferencial?

Meus livros são diferentes, primeiramente pela escrita. Eu gosto muito da informalidade, de ser direto e tentar transmitir a informação da melhor maneira possível, como se eu tivesse ao lado do leitor. Nesse livro há vários diferenciais, um deles é o nosso laboratório on-line onde o leitor poderá fazer download do source, assistir uns vídeos de como colocar aplicação em um servidor de produção JEE(apoio da www.integrator.com.br), exercícios práticos etc.

Quando ler?

Assim, que terminar seus estudos, com Servlet & JSP, vc pode ler, do contrário, não faça o investimento agora e aguarde mais um pouquinho( coloque o livro na prateleira ou remova do seu carrinho de compras : ) ).

Requisitos

É preciso já ter uma certa experiência com Java, Banco de dados, saber como as aplicações JEE funcionam etc. Como o livro é focado em ensinar a usar de forma pratica os frameworks, não podemos perder tempo com toda teoria de JEE, então vamos direto ao assunto.Particularmente não gosto de livros grandes, eles ficam mais caros e o que eu quero é um preço acessível para todos, enfim até os que recebem mesada podem comprar (pelo menos a minha na época que tinha, os livros eram caros demais rs).

Desconto

Se quiser comprar o exemplar com 30% de desconto no site da Editora, basta usar o código a seguir durante a compra: V00014 e se cadastrar como associado.

Concorra Sorteio será 21/08/2011

Faça um RT da mensagem abaixo e sua inscrição, assim terá a chance de receber um exemplar na sua casa autografado(se preferir). Para sorteio usaremos o random.org e o número sorteado será o ganhador e a verificação do RT  Lembrando que para aqueles que fizeram mais de um cadastro com o mesmo e-mail, não estará concorrendo ao exemplar.

Lançamento do Livro Guia JEE c/ frameworks @RT: @camilolope #JEE #frameworks.Confira:

Lançamento Oficial do Livro JEE com Frameworks

Após, o resultado entrarei em contato pelo e-mail cadastrado e o ganhador tem até 48 hrs para responder, após o envio  do e-mail.Do contrário um novo sorteio será realizado, e o ganhador anterior acabou de perder a chance de receber o livro. : )

Fazer inscrição

Você pode deixar de ganhar se não fizer isso:

  • cadastrar e não fazer o RT;

  • fazer o RT e não se cadastrar;

A qtde de RT fica por sua conta, se quiser fazer mais de RT, ficarei feliz :).

Versão do Livro

  • Paper – R$ 47,20
  • E-book  – R$ 35,40

Eu quero comprar o meu

Onde comprar?

  • Site da Editora
  • Saraiva
  • Cultura
  • Fnac
  • Americanas.com
  • Submarino
  • e outras que eu não lembro rs

Download

Conseguir com a editora amostra de algumas páginas do livro, confiram aqui

Vou ficando por aqui e espero que tenham gostado do post.

Abracos see ya!!

Pré-Lançamento Guia JEE com Frameworks

Olá Pessoal,

Depois de um periodo off, estou de volta nesse inverno do Rio Grande do Sul, que é de matar, qualquer um. O post de hoje é diferente, é sobre o meu próximo filhão hehe. Recebi alguns twitters, da galera com curiosidade de saber do que seria, mas como não tinha a capa final, não adiantava eu postar aqui, como ficou pronta ontem, lá vai o PRÉ-LANÇAMENTO, nas próximas semanas já teremos os exemplares nas melhores livrarias. A seguir falo um pouco sobre o livro, para quem já conhece meu trabalho sabe que eles nascem com base é alguma experiência,necessidade que tive e não encontrei (como foi o Guia do Exame SCJP) daí teve que rolar o “made by Camilo Lopes” :). Não posso deixar de agradecer o apoio do DFJUG em adotar o livro  para sua biblioteca. Agradeço em especial ao Daniel Oliveira presidente da comunidade.

Livro JEE com Frameworks como tudo começou

O projeto nasceu, devido a dificuldade que tive na época dos meus estudos de encontrar em um único livro que abordasse de forma pratica os frameworks mais usados no mercado que consequentemente são aqueles que em qualquer entrevista de emprego o entrevistador vai perguntar:

  • conhece Hibernate, Spring, JSF, Annotations etc?

Não é isso que acontece? Eu passei por isso, e não foram poucas vezes, e o pior de tudo, que eu sabia 1, mas não conhecia os outros três, pois normalmente o conhecimento triangular em frameworks em algumas vagas é o que o entrevistador precisa, porém como muitos estão passando ou já passaram por uma situação de ser 3×1 para empresa, ou seja, você conhece só, mas os demais fica naquela, eu sei um pouco mais posso aprender. Porém, sabemos da realidade que são poucas empresas que se arriscam nesse “eu posso aprender” e o jeito do cara que está correndo atras é ir aprender por contra própria, caso não ele não seja aceito. Isso não é o fim do mundo, é um ciclo do mercado e cada organização tem uma política interna, e temos que respeitar(na época não acreditava nisso, mas aprendi com o tempo).

Com um pouco de revolta na época, de ter comprado 3,4,5 livros diferentes para aprender cada framework, e ainda não tinha um que conecta de bem de forma o uso dos frameworks em conjunto e eu tinha que ir montando a cabeça, gastando mais tempo que o necessário, pois no inicio nem tudo são flores. Partindo desse contexto, pensei, bem que eu deveria escrever um livro, pois acredito que há alguém passando e tendo as mesmas dificuldades que tive, e não aguenta mais comprar na amazon.com para esse fim. Ahh claro, há muitos artigos, posts de blogs na internet que ajudam. Mas, um artigo, sempre será um artigo e não tem como objetivo substituir um livro, assim como um post não tem como foco substituir um livro, cada macaco no seu galho.Enfim, partindo do problema de ter um livro para cada framework que eu precisasse aprender, o qual achava ruim, na verdade péssimo, até porque no inicio eu precisava, aprender o ABC, o sufuciente para fazer uma boa integração e partindo desse ABC eu posso ir aprofundando aos poucos e a medida que novos desafios vão surgindo vou aprendendo, e não querer ver tudo de uma vez( não dar para colocar um JavaDoc na cabeça, ou dar?), é assim que aprendemos na escola o ABC primeiro, não é verdade? Mas, a notícia que tive era ruim, não encontrei nada e tive que ir escavando usando uma par e fazendo as devidas anotações, depois começava a juntar o quebra cabeça, errava mais do que acertava, mas aprendia com os erros, mas a dor sempre é grande. E assim nasceu naturalmente, o Guia JEE com Frameworks.

O objetivo

O objetivo é muito simples. Guiar o leitor de forma prática desenvolver aplicações Java/JEE usando os frameworks mais requisitados no mercado. Ao final do livro acreditamos que o leitor já seja capaz de trabalhar de forma segura com o que foi abordado.

O que vou ver no livro?

Você vai ver como usar o Hibernate, JSF, SpringSecurity nas suas aplicações JEE, no inicio do livro considero que o leitor é leigo e vamos trabalhando com Java Application, e logo em seguida migramos de forma confortável para JEE, mantendo o uso do já foi aprendido e ampliando. Há exercícios praticos que é chamado de “Trabalho do dia” não é nada de fazer algo como 2+2 e sim praticar o que já foi visto e que motive o leitor ir só um pouco além e consultar API do framework para buscar as respostas. O motivo, é simular a vida real de todo desenvolvedor, buscar resolver os problemas da melhor forma possível usando ferramentas core de durante DEV.

O não vou ver no livro?

  • Não queira sair do livro, um especialista nos frameworks abordado, o foco é colocar você nos trilhos da melhor forma possível.

  • Não queira aprender Java, Servlet, JSP, este não é o objetivo, e vou considerar que o leitor já conheça Java e Servlet & JSP;

Quem pode ler?

Se você já viu um pouco de Servlet & JSP e se sente perdido para onde ir em JEE, com tantos frameworks, mas sem saber direito o que cada um faz e qual a melhor forma de aprender cada um em uma determinada ordem, este livro é para você.

A escrita

Bem, quem já conhece meus livros, sabe que uso uma linguagem informal e pratica, além disso coloco dentro dos codes explicações in line, por acreditar que explicando no “olho do furação” pode trazer efeitos de fixação melhor para o leitor. Nesse eu busquei evitar códigos quebrando entre as paginas e fiz um bom esforço de colocar o máximo possível em uma única página, há codes que diminui um pouco a fonte respeitando a legibilidade, somente para manter todo code possível em uma única página, claro que há codes que não dar. Para alguns que já foram aprensentados, foram omitidos os trechos e apenas o code novo é visto. Mas, não se preocupe que eu aviso quando isso acontece.

O livro não substitui um outro livro que abordar por completo um dos frameworks abordados aqui, até porque não temos esse foco, então se você deseja ver tópicos mais avançados, terá que dar uma olhada na documentação ou buscar livros mais especializamos, porém o que você aprender aqui é o que servirá para se tornar um Advanced-X.

Ganhe um exemplar

Se você quiser concorrer à um exemplar que será sorteado no dia do lançamento faço o seu cadastro no form abaixo e Re-Twitter, quanto mais você RT, mas chances de ganhar.

Faça sua inscrição

“Pré-Lançamento do Livro Guia JEE c/ frameworks @RT: @camilolope #JEE #frameworks.

https://blog.camilolopes.com.br/pre-lancamento-guia-jee-com-frameworks/” (use um encurtador de url de sua preferencia )

Vou ficando por aqui, espero que tenham gostado do post. see ya!

Abracos,

Você vai ver como usar o Hibernate, JSF, SpringSecurity nas suas aplicações JEE, no inicio do livro considero que o leitor é leigo e vamos trabalhando com Java Application, e logo em seguida migramos de forma confortável para JEE, mantendo o uso do já foi aprendido e ampliando. Há exercícios praticos que é chamado de “Trabalho do dia” não é nada de fazer algo como 2+2 e sim praticar o que já foi visto e que motive o leitor ir só um pouco além e consultar API do framework para buscar as respostas. O motivo, é simular a vida real de todo desenvolvedor, buscar resolver os problemas da melhor forma possível usando ferramentas core de durante DEV.

 

O não vou ver no livro?

  • Não queira sair do livro, um especialista nos frameworks abordado, o foco é colocar você nos trilhos da melhor forma possível.

  • Não queira aprender Java, Servlet, JSP, este não é o objetivo, e vou considerar que o leitor já conheça Java e Servlet & JSP;

 

Quem pode ler?

Se você já viu um pouco de Servlet & JSP e se sente perdido para onde ir em JEE, com tantos frameworks, mas sem saber direito o que cada um faz e qual a melhor forma de aprender cada um em uma determinada ordem, este livro é para você.

 

 

A escrita

Bem, quem já conhece meus livros, sabe que uso uma linguagem informal e pratica, além disso coloco dentro dos codes explicações in line, por acreditar que explicando no “olho do furação” pode trazer efeitos de fixação melhor para o leitor. Nesse eu busquei evitar códigos quebrando entre as paginas e fiz um bom esforço de colocar o máximo possível em uma única página, há codes que diminui um pouco a fonte respeitando a legibilidade, somente para manter todo code possível em uma única página, claro que há codes que não dar. Para alguns que já foram aprensentados, foram omitidos os trechos e apenas o code novo é visto. Mas, não se preocupe que eu aviso quando isso acontece.

 

O livro não substitui um outro livro que abordar por completo um dos frameworks abordados aqui, até porque não temos esse foco, então se você deseja ver tópicos mais avançados, terá que dar uma olhada na documentação ou buscar livros mais especializamos, porém o que você aprender aqui é o que servirá para se tornar um Advanced-X.

 

Se você quiser concorrer à um exemplar que será sorteado no dia do lançamento faço o seu cadastro no form abaixo e Re-Twitter, quanto mais você RT, mas chances de ganhar.

 

Pré-Lançamento do Livro Guia JEE c/ frameworks @RT: @camilolope #JEE #frameworks.

<link>

 

Vou ficando por aqui, espero que tenham gostado do post.

 

Abracos,

Lendo XML & Populando no BD via Hibernate

olá Pessoal,

O post de hoje é como popular um banco de dados tendo os dados em um arquivo XML. Se ainda não passou por esse requisito no seu trabalho, não se preocupe que o momento vai chegar. Há várias formas de fazer a leitura do arquivo XML e popular o banco, para o post, escolhi o Xstream e o Hibernate, que já uso o Hibernate por default e o Xstream é de fato uma boa API. Há também a SAPX, que não cheguei a testar.

Lets go…

Requisitos

  • Java 5/superior
  • Hibernate 3.x/Superior
  • Eclipse IDE
  • Xstream : faça o download da API
  • MySql 5

Iniciando

Para inicio você precisa criar um Java Project no seu Eclipse, e ter as bibliotecas do Hibernate adicionadas ao projeto. Não esqueça de adicionar os .JARS do MySql e do XStream (apenas xstream-1.3.1.jar). Abaixo temos o nosso banco vazio, aguardando os dados do XML.

Vamos usar annotations para o mapeamento do nosso bean com o Hibernate, se tiver dúvidas de como fazer isso, terá que ver alguns posts meus mais antigos de Hibernate com annotations.

A seguir temos a imagem de como vai ficar nosso projeto. Você já pode ir adicionando as classes e as bibliotecas, ao decorrer do post, vamos apresentando os códigos relevantes.

Antes de mais nada faça o download do nosso arquivo XML que possui os dados dos usuarios que vamos popular, e adicione ele à raiz do projeto. Para fazer isso basta clicar com o botão direito no projeto, escolher importar ==> File System e buscar pelo arquivo XML no seu computador.

Baixar o usuarios.xml

note: no arquivo usuarios.xml não temos o campo id para representar a coluna no banco, uma vez que este será gerado de forma automatica. Então ao abrir o arquivo sentirá falta dele.

Resolvi colocar poucos dados no XML, mas se funcionar com 2-3, deve está ok com 10,20 etc. (teoricamente sim).


Na imagem acima temos o projeto atualizado com o arquivo xml.

Pronto. Acho que até aqui estamos ok. Na próxima etapa serão os codes das classes que vamos precisar para trabalhar de verdade.

Desenvolvimento

Primeiramente você deve criar o Bean, ou seja, a classe Usuario e fazer as devidas anotações, conforme o code abaixo. Removi os getters/setters, para poupar espaço:

@Entity

@Table

public class Usuario {

@Id

@GeneratedValue

private int id;

@Column

private String nome;

@Column

private String email;

@Column

private String senha;

@Column

private String tipo;

 

Agora, configure o seu arquivo hibernate-cfg.xml com os dados de conexão do seu banco. Não esqueça de definir o mapping para a classe bean, veja como ficou o meu:


Agora vamos criar os metodos para persistência em nossa classe HibernateDAO, ficando assim:

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateDAO {

private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();

private static final SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

public Session getSession() {

Session session = threadLocal.get();

if (session == null) {

session = sessionFactory.openSession();

}

return session;

}

public void begin() {

getSession().beginTransaction();

}

public void commit() {

getSession().getTransaction().commit();

}

public void rollBack() {

getSession().getTransaction().rollback();

}

public void close() {

getSession().close();

}}

Agora vamos atualizar a classe UsuarioDAO que é a classe que solicita que a persistência aconteça.

public class UsuarioDAO extends HibernateDAO{

public void create(List<Usuario> listUser){

for (Usuario usuario : listUser) {

begin();

getSession().save(usuario);

try{

commit();

}catch (HibernateException e) {

e.printStackTrace();

rollBack();

}

}}}

Para quem já trabalha com Hibernate nada de especial até aqui. Lembrando que o objetivo do post não é explicar Hibernate e sim, mostrar como popular dados de um XML no banco.Então não vou entrar em detalhe sobre o code acima, qualquer dúvida basta consultar outros posts meus que explico em detalhe o Hibernate.

Vamos atualizar a classe LerDadosXML, que como nome já diz, ela será responsável

public class LerDadosXML {

private List<Usuario> listUsuario;

public List<Usuario> lerXml(Reader fonte){

XStream stream = new XStream(new DomDriver());

stream.alias(“Usuario”, Usuario.class);

List<Usuario> fromXML = (List<Usuario>) stream.fromXML(fonte);

popularData(fromXML);

return fromXML;

}

public void popularData(List<Usuario> listUsuario){

new UsuarioDAO().create(listUsuario);

}

}

Bom, a única novidade que temos ai é o uso da API XStream que será responsável por ler os dados do XML. Para ler os dados, como pode ver é bem simples, basta chamar xStream.fromXML(fonteOrigem); no nosso caso o local onde está o arquivo XML deverá ser passado para o argumento do método, mas poderiamos definir isso na mão grande algo como readerFile = new FileReader(new File(“nomedoarquivo.xml”));

Testando

Para testar e ver se de fato que planejamos vai acontecer, farei um unit test. Se não quiser usar unit test, pode criar a classe com o método main e executar.

A seguir temos o test passando e o banco populado:

public class LerDadosXMLTest {

@Test

public void testLerDadosXMLEPopulaNoBanco() throws FileNotFoundException{

FileReader fileReader = new FileReader(new File(“usuarios.xml”));

LerDadosXML lerDadosXML = new LerDadosXML();

assertFalse(lerDadosXML.lerXml(fileReader).isEmpty());}

}



 

Bom vou ficando por aqui, espero que tenham gostado do post.

Abracos, see ya!!

Resolvendo Data Truncation Hibernate


olá Pessoal,

O post de hoje vou falar de uma exceção que pode acontecer durante sua vida de programador. É o famoso data truncation. Se você nunca passou por ela as chances são grandes. Sabemos que é uma pratica muito comum de devs atuar como DBA, analisa de requisito, devesenvolvedor etc. Isso varia do projeto e política da empresa. Eu tenho uma opinião sobre essa pratica e até onde ela ajuda e atrapalhada no dia-dia. Mas daria um post, então não entrarei em detalhes.

lets go…

java.sql.dataTruncation hibernate could not insert

Essa exceção ela pode aparecer do nada, você pode chegar no dia seguinte e ter um bug aberto para ser corrigido com essa exceção. Respire e não se assuste. Mas, o que mudou de ontem para hoje? Pois, até ontem aplicação rodava tão bem, que não recusei o convite de um happy-hour.

O que aconteceu?

O que aconteceu é que o cara que cuida do Banco de dados, simplesmente mudou o tamanho de uma coluna(de 100 para 50) e quando o usuario foi inserir um novo dado maior que 50 para a coluna X, daí já era. Temos dados demais para aquela determinada coluna.

Solução

– Há varias soluções uma delas, é você já limitar o formulario para o tamanho X e validar esse tamanho antes de enviar os dados para o banco.

– se você está pegando dado de outro banco, se puder veja o data model e deixe sua coluna igual dos dados de origem.

Um detalhe importante é que esse tipo de dado não deveria mudar a fim de gerar um data truncation. Normalmente quando há alterações na maioria das vezes é para aumentar o capacidade, porém já passei pelo inverso também e foi data truncation na certa.

Então se você estiver passando por esse e-mail valide o tamanho dos dados que vai ser inserido no banco e veja com o responsável pelo banco como está o tamanho da coluna X data base.

Vou ficando por aqui, espero que tenham curtido a dica.

See ya!!! abraços,

OneToMany com Hibernate JPA

Opa! Pessoal,

O post de hoje vou apresentar como criar o relacionamento oneToMany / ManyToOne de forma simples. Quem ai nunca passou por algum tipo de problema ao criar esse tipo de relacionamento? Algo como de não criar a FK e só persistir uma das tabelas etc. Estarei apenas focando em como definir os relacionamentos à nível de código e para isso teremos code apenas para o objetivo do post. Quero evitar posts grandes sem necessidade.

lets go…

Required

– Vou assumir que se você está lendo este post é pq já está brincando com o Hibernate e agora precisa fazer um relacionamento entre as suas tabelas, então parte de configuração do framework, ou explicação dos métodos serão omitidos, qualquer dúvida consulte outros posts no blog na categoria Hibernate, e veja como ter o ambiente funcionando.

– A classe DAO nos códigos é que possui o trabalho de persistência, ela não é requirida para o post, pois vc uma vez que podemos obter o begin(), save(), commit() etc do hibernate por diversas formas.

– Hibernate 3.x

– MySql 5

OneToMany

O relacionamento OneToMany é bem usado, e são poucas vezes que de fato não precisamos te-lo, então é aquele lance se não precisou até hoje, espere mais um pouco que essa necessidade vai nascer. Vamos tirar a vantagem dos annotations e veremos @OneToMany e @ManyToOne ao invés dos .hbm, Como exemplo há vários cenários para exemplificar este tipo de relacionamento, tais como: um time de futebol tem vários jogadores, uma infra-estrutura tem vários servidores, porém um jogador só pode jogar em um time(ou não depende da regra de negócio, aqui está o pulo do gato), e um servidor está em uma infra-estrutura.

Note: Há casos que um jogador joga mais de um time, daí temos o ManyToMany.

Para criar esse tipo de relacionamento temos que identificar o ponto chave do relacionamento entre as classes, como por exemplo, para um Time de futebol, temos que saber que há uma lista com os jogadores que pertencem ao clube, uma vez que um team não tem apenas 1 jogador este pode ter de 0..X(mesmo sem jogadores ele pode ser considerado um team de futebol, mas está sem grana e demitiu todos os jogadores). Eu costumo chamar de HAS-AN List something (tem uma lista de alguma coisa).

A seguir temos a class bean que representa o Team (por boas práticas elas não deveria extends DAO, porém fiz aqui para ser mais pratico e fazer sentindo com as invocações do Hibernate que temos no code).

@Entity

public class Team extends DAO{

@Id

@GeneratedValue

private long id;

@Column

private String nameTeam;

private List<Player> players;

Usando @OneToMany

Agora vamos usar o relacionamento apropriado para a classe,a seguir temos o code atualizado:

@Entity

public class Team {

private String nameTeam;

@OneToMany(mappedBy = “team”, targetEntity = Player.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)

private List<Player> players;

mappedBy = informamos o nome da variavel de instância que vai indicar a quem aquele One pertence, ou seja, um jogador ele deve dizer a qual time este está associado.

TargetEntity = informa qual a entidade estamos associando

FetchType.Lazy = foi escolhido por performace

cascade = ALL para permitir alterações em todos os relacionamentos.

Pronto, já dizemos que um TEAM tem muitos jogadores (uma lista )

Usando @ManyToOne

Na classe que representa o MANY(do manyToOne), que nesse caso é a Player, teremos uma anotação @ManyToOne na variavel de instancia que representa o TEAM.

@Entity

public class Player {

@Id

@GeneratedValue

private long id;

private String nickName;

@ManyToOne

@JoinColumn(name=“team_id”)

private Team team;

@JoinColumn = informamos o nome que terá o FK.

Ao rodar o código main na class Team:

public static void main(String args[]) {

Team team1 = new Team();

team1.setNameTeam(“São Paulo”);

Player jogador1 = new Player();

Player jogador2 = new Player();

jogador1.setNickName(“Rogerio Ceni”);

jogador2.setNickName(“Luiz Fabiano”);

// has-an associando o jogador ao team

jogador1.setTeam(team1);

jogador2.setTeam(team1);

begin();

getSession().save(team1);

getSession().save(player1);

getSession().save(player2);

commit();

}

Talvez você tenha pensado que apenas 1 (um) save() seria necessario, mas não é, pois precisamos colocar a instancia dos players com a session, para que este se torne um objeto persistente do contrario, o Hibernate não o poder de persistir no banco. O resultado:

O team do São Paulo tem dois jogadores, observe que o ID do team aparece na table do Player(team_id) assim sabemos a qual time este pertence.

Erros comuns durante a programação:

  • esquecer de associar as instâncias envolvidas no relacionamento, se eu esquecer de dizer a qual team um jogador pertence, não teremos o resultado esperado e o resultado na sua tabela será NULL, caso seja permitido esse valor na coluna.

  • Não salvar as instâncias que serão persistidas é outro fato comum, quem está fazendo pela primeira acredita que dar um save apenas na classe que representar One (team), é o sufuciente e por alguma mágina o Hibernate vai saber quais outras instancias devem ser persistidas, ai vem a pergunta, como o Hibernate vai saber, se você não transformou o “objeto java” criando em um objeto-persistent?

Espero que tenham gostado do post, vou ficando por aqui.

Abracos see you next post!!! 🙂