• Nenhum resultado encontrado

Mapeando Entidades. Abaixo iremos mapear nossas classes. Fornecedor.java package entidades;

N/A
N/A
Protected

Academic year: 2021

Share "Mapeando Entidades. Abaixo iremos mapear nossas classes. Fornecedor.java package entidades;"

Copied!
8
0
0

Texto

(1)

1

Mapeando Entidades

Uma entidade nada mais é do que uma classe pertencente ao domínio de nossa aplicação,

como vimos no nosso diagrama de classes; nossas classes: Produto, Fornecedor e

Fabricante, serão nossas entidades. Na maioria dos casos, cada entidade existente em

nosso projeto dará origem a uma tabela no nosso banco de dados relacional e, de forma

similar, cada instância dessa entidade será representada como uma linha na tabela

equivalente. Então, persistir um objeto, nada mais é do que inserir uma linha no banco de

dados que representa o estado do objeto persistido.

Nossas Entidades serão Java Beans acrescidas das anotações responsáveis, por informar

ao gerenciador de persistência como se dará o mapeamento do modelo orientado a objetos

para um esquema relacional. Sendo assim, nossas entidades são simples POJOs (Plain Old

Java Objects).

@Entity

Toda entidade deve ser anotada com @Entity, que indica que a classe é uma entidade.

Outra anotação importante é a anotação @Table através da qual é possível informar o nome

da tabela no banco de dados; caso essa anotação não seja utilizada, o gerenciador de

persistência irá considerar que o nome da tabela é o mesmo nome da classe.

Abaixo iremos mapear nossas classes.

Fornecedor.java

package entidades;

import javax.persistence.Entity;

import javax.persistence.Table;

@Entity

@Table(name="Fornecedor")

public class Fornecedor {

}

Produto.java

package entidades;

import javax.persistence.Entity;

import javax.persistence.Table;

@Entity

public class Produto {

}

Fabricante.java

package entidades;

import javax.persistence.Entity;

import javax.persistence.Table;

@Entity

(2)

2

public class Fabricante{

}

Além de anotar nossa classe, é preciso registrar no arquivo persistence.xml a existência de

nossa entidade. Devem ser inseridas as seguintes informações:

...

<persistence-unit name="estacio"> <class>entidades.Fornecedor</class> <class>entidades.Fabricante</class> <class>entidades.Produto</class> ...

Mapeando Atributos

@Id

Toda entidade deve ter um atributo mapeado com a anotação @id, esta anotação, indica

que o atributo será mapeado como chave-primária.

@GeneratedValue

Caso o valor da nossa chave primária tenha que ser gerada automaticamente, como um

auto incremento, devemos usar esta anotação. A anotação @GeneratedValue possui um

elemento strategy que indica qual a estratégia de geração dos identificadores.

Abaixo, continuaremos o desenvolvimento das nossas entidades; dessa vez inserindo seus

atributos identificadores:

package entidades; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="Produto") public class Produto {

@Id

@GeneratedValue(strategy=GenerationType.AUTO) private Integer codigo;

public Integer getCodigo() { return codigo;

}

public void setCodigo(Integer codigo) { this.codigo = codigo;

(3)

3 } package entidades; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="Fabricante") public class Fabricante {

@Id

private String cnpj; public String getCnpj() {

return cnpj; }

public void setCnpj(String cnpj) { this.cnpj = cnpj; } } package entidades; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="Fornecedor") public class Fornecedor {

@Id

private String cnpj; public String getCnpj() {

return cnpj; }

public void setCnpj(String cnpj) { this.cnpj = cnpj;

}

}

@Column

Essa anotação trás uma série de elementos que informam como o atributo da entidade deve

mapeado na tabela equivalente. Nos nossos exemplos, usaremos length, name e nullable,

respectivamente informam o tamanho, nome e se é obrigatório.

(4)

4

Produto.java

package entidades; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="Produto") public class Produto {

@Id

@GeneratedValue(strategy=GenerationType.AUTO) private Integer codigo;

@Column(length=20, name="descricao_produto", nullable=false) private String descricao;

@Column(scale=8, precision=2) private double valor;

public Integer getCodigo() { return codigo;

}

public void setCodigo(Integer codigo) { this.codigo = codigo;

}

public String getDescricao() { return descricao;

}

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

}

public double getValor() { return valor;

}

public void setValor(double valor) { this.valor = valor; } } Fabricante.java package entidades; import javax.persistence.Column; import javax.persistence.Entity;

(5)

5 import javax.persistence.Id;

import javax.persistence.Table; @Entity

@Table(name="Fabricante") public class Fabricante {

@Id

private String cnpj;

@Column(length=30, name="nome", nullable=false) private String nomeFactasia;

@Column(length=40, name="endereco", nullable=false) private String endereco;

@Column(length=10, name="descricao_produto", nullable=false) private String telefone;

public String getCnpj() { return cnpj;

}

public void setCnpj(String cnpj) { this.cnpj = cnpj;

}

public String getNomeFactasia() { return nomeFactasia;

}

public void setNomeFactasia(String nomeFactasia) { this.nomeFactasia = nomeFactasia;

}

public String getEndereco() { return endereco;

}

public void setEndereco(String endereco) { this.endereco = endereco;

}

public String getTelefone() { return telefone;

}

public void setTelefone(String telefone) { this.telefone = telefone;

}

}

(6)

6 package entidades; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="Fornecedor") public class Fornecedor {

@Id

private String cnpj;

private String nomeFactasia; private String endereco; private String telefone;

public String getNomeFactasia() { return nomeFactasia;

}

public void setNomeFactasia(String nomeFactasia) { this.nomeFactasia = nomeFactasia;

}

public String getEndereco() { return endereco;

}

public void setEndereco(String endereco) { this.endereco = endereco;

}

public String getTelefone() { return telefone;

}

public void setTelefone(String telefone) { this.telefone = telefone;

}

public String getCnpj() { return cnpj;

}

public void setCnpj(String cnpj) { this.cnpj = cnpj;

}

}

Note que em Fornecedor.java não utilizamos a anotação @Column; neste caso, serão

utilizados os valores padrão.

(7)

7

Para atributos de data, hora e data-hora é necessária a utilização da anotação @Temporal

para indicar como devem ser mapeados esses atributos. Veremos sua utilização na nossa

entidade Produto, exibida abaixo:

package entidades; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @Entity @Table(name="Produto") public class Produto {

@Id

@GeneratedValue(strategy=GenerationType.AUTO) private Integer codigo;

@Column(length=20, name="descricao_produto", nullable=false) private String descricao;

@Column(scale=8, precision=2) private double valor;

@Temporal(TemporalType.DATE) private Date dataCadastro; public Integer getCodigo() {

return codigo; }

public void setCodigo(Integer codigo) { this.codigo = codigo;

}

public String getDescricao() { return descricao;

}

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

}

public double getValor() { return valor;

}

public void setValor(double valor) { this.valor = valor;

(8)

8 public Date getDataCadastro() {

return dataCadastro; }

public void setDataCadastro(Date dataCadastro) { this.dataCadastro = dataCadastro;

} }

Referências

Documentos relacionados

No prazo de até trinta e seis meses, a contar da data da publicação deste Decreto, os serviços de transporte coletivo aéreo e os equipamentos de acesso às

A fim de evitar ou, quando tal não for praticável, reduzir as emissões para o solo e para a água provenientes do armazenamento de estrume sólido, a MTD consiste em utilizar

Aqui na Principled Technologies, comparamos a experiência de conectar um sistema Dell Latitude Ultrabook com o novo processador Intel Core da 5ª geração a um monitor HD de

A Corte de Apelação de Colmar julgou com base na lei doméstica francesa, não na CISG, afirmando que ainda que o contrato de compra e venda apresente

O Artigo 79 da Convenção de Viena prevê a liberação de uma obrigação que se tornou impossível devido a um impedimento superveniente não imputável a uma parte, de

falar e tardios para irar-se, pois a ira do homem não produz a justiça de Deus. • Duas maneira de Deus exercer

É termo utilizado para descrever um método de ataque, onde alguém faz uso da persuasão, muitas vezes abusando da ingenuidade ou confiança do usuário, para obter informações que

Em pacientes que foram submetidos à cirurgia de revascularização (por exemplo: colocação de ponte de safena para substituir segmentos de artérias do coração entupidas) do