Académique Documents
Professionnel Documents
Culture Documents
Engenharia da Web
- Persistncia com JPA
Prof. Cludio Martins claudiomartins2000@gmail.com
Roteiro da Aula
Aprensentar a tecnologia de persistncia em
mapeamento de entidades e seus relacionamentos (tabelas) em Objetos; Busca facilitar a persistncia de dados;
Mecanismos de Persistncia
Como vimos, podemos programar diretamente em
como mecanismos que simplicam a forma de tratar os objetos, diminuindo o uso de SQL. Persistence API (JPA); Existem vrias implementaes de JPA. Hibernate apenas uma implementao de JPA.
O JPA
O JPA oferece um modelo de persistncia
utilizando POJOs para o mapeamento objetorelacional. Desenvolvido para a EJB 3.0, como parte da especificao JSR 220, mas no limitado a EJB; Utiliza anotaes para o mapeamento de entidades; Site:
http://java.sun.com/javaee/technologies/persistence.jsp
Entidade na JPA
Entidade (entity) o objeto que pode ser
argumentos
Cada atributo deve possuir seu get e set. Toda entidade tem de ter uma chave primria
Entidade em JPA
Uma entidade JPA um POJO anotado
POJO um classe java com atributos privados, construtor vazio e mtodos de acesso gets e sets.
Mapeamento
Configurao XML (no arquivo persistence.xml) Anotaes (uso de cdigo anotado com @)
EntityManager Persistence
Unit define uma unidade de persistencia (do acesso a um banco de dados definido no persistence.xml)
10
informa ao JPA que a classe uma entidade e deve ser persistida informa o nome da tabela que ir persistir a entidade marca uma propriedade da classe como chave primria identificador como gerar o id (chave primria) (name=...) informa o nome da coluna que ir persistir o campo (tipo) Data, Hora e Data+Hora no persiste a coluna
11
@Table(name=...) @Id
@GeneratedValue @Column
@Temporal @Transient
Exemplo
12
Exemplo
13
14
Exemplo JPA
15
16
Passos no Netbeans
1)Definir a conexo com o banco de dados 2)Gerar as entidades e o arquivo de configurao (persistence.xml) 3)Gerar os controladores (DAO) de persistncia
17
Modelo do Banco
Para o exemplo apresentado neste tutorial, deve
ser criado um banco de dados com as seguintes tabelas, representando uma aplicao para uma transportadora de cargas:
18
SQL a seguir.
CREATE TABLE CIDADE ( COD_CIDADE NOME VALOR_FRETE ); CREATE TABLE DESPACHO ( NUMERO_CONTROLE NOME_CLIENTE PESO_CARGA COD_CIDADE VALOR_PAGAR DATA_DESPACHO ); INTEGER PRIMARY KEY, VARCHAR(40), NUMERIC(10,2) INTEGER PRIMARY KEY, VARCHAR(80), NUMERIC(10,2), INTEGER REFERENCES CIDADE, NUMERIC(10,2), DATE
19
20
21
22
23
24
25
26
27
28
Em nosso exemplo ser um projeto Web. O driver do banco (neste caso, o H2) dever estar configurado como biblioteca do projeto.
30
31
32
33
34
35
36
Clique em Adicionar
37
Neste passo voc define o nome do pacote (neste exemplo: modelo) onde sero geradas as classes. Desmarque as opes Gerar anotaes de consulta e Gerar anotaes JAXB. Deixe marcada a opo Criar unidade de persistncia. Em seguida, clique em Prximo.
38
39
40
Arquivo persistence.xml
41
42
43
Em seguida, escolha quais classes de entidade sero gerados as devidas classes de controle (DAO). Clique em Adicionar tudo, em seguida, clique em Prximo.
44
45
46
47
EntityManagerFactory emf = Persistence.createEntityManagerFactory("aulaJPAPU"); CidadeJpaController daoCidade = new CidadeJpaController(emf); // consultar uma cidade com cdigo=1 Cidade c = daoCidade.findCidade(1); System.out.println("Cidade - " + c.getNome() + " FRETE= " + c.getValorfrete()); // mostra a quantidade de cidades System.out.println("total de cidades = " + daoCidade.getCidadeCount());
48
EntityManagerFactory emf = Persistence.createEntityManagerFactory("aulaJPAPU"); CidadeJpaController daoCidade = new CidadeJpaController(emf); // criar um objeto Cidade Cidade cid1 = new Cidade(); cid1.setNome("Bragana"); cid1.setValorfrete(new BigDecimal(550.50)); cid1.setCodcidade(12); daoCidade.create(cid1);
49
EntityManagerFactory emf = Persistence.createEntityManagerFactory("aulaJPAPU"); CidadeJpaController daoCidade = new CidadeJpaController(emf); // primeiro deve-se consultar (localizar) o objeto Cidade c = daoCidade.findCidade(1); // depois, alterar os valores dos atributos e chama o mtodo edit. c.setValorfrete( new BigDecimal(100) ); daoCidade.edit(c); System.out.println("Cidade - " + c.getNome() + " FRETE= " + c.getValorfrete());
50
EntityManagerFactory emf = Persistence.createEntityManagerFactory("aulaJPAPU"); CidadeJpaController daoCidade = new CidadeJpaController(emf); // deleta a cidade cujo cdigo = 12 daoCidade.destroy(12);
51
52
53
Exerccios (1)
A partir do tutorial presente neste documento realize as seguintes atividade: 1) Crie um banco de dados com a tabela a seguir (estrutura):
Cliente
54
Exerccios (2)
2) Crie um projeto Java no NetBeans. 3) Adicione a biblioteca do driver JDBC do banco (pode ser o H2 Database) 4) Defina a conexo ao banco usando o servio de banco de dados do NetBeans 5) Gere a classe entidade (Cliente) 6) Gere o controlador da entidade (Cliente)
55