Skip to content

API Rest para implementação das classes generic Dao criado na mão usando EntityManager

Notifications You must be signed in to change notification settings

andresinho20049/Generic-Dao

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

**************** Generic DAO ******************

API Rest implementando CRUD (MySQL)

Intuito desse projeto é desenvolver Generic DAO com uso apenas do javax.persistence
Tecnologia utilizada: Java 8 + Spring boot + Rest

Sobre:

  • API Rest simples - implementando um CRUD

  • GenericDao criado usando javax.persistence.EntityManager

    	private final Class<T> persistentClass;
    
    	@PersistenceContext
    	private EntityManager entityManager;
    
    	public GenericDao() {
    		this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    	}
  • Mapeamento Logico/Relacional com JPA

    @Entity
    public class Pessoa implements Serializable {
    
        private static final long serialVersionUID = 1L;
        
        @Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	private Integer id;
    	
    	@Column(length = 100, nullable = false)
    	private String nome;
    	
    	@Column(length = 11, unique = true, nullable = false)
    	private String cpf;
    	
    	@Temporal(TemporalType.DATE)
    	@Column(nullable = false)
    	private Date data_nascimento;
    	
    	@Embedded
    	private Endereco endereco;
    	
    	@OneToMany(cascade=CascadeType.ALL)
    	@JoinColumn(name="pessoa_id", referencedColumnName="id")
        private List<Telefone> telefone;
  • Tabela Pessoa

    +-----------------+--------------+------+-----+---------+----------------+
    | Field           | Type         | Null | Key | Default | Extra          |
    +-----------------+--------------+------+-----+---------+----------------+
    | id              | int(11)      | NO   | PRI | NULL    | auto_increment |
    | cpf             | varchar(11)  | NO   | UNI | NULL    |                |
    | data_nascimento | date         | NO   |     | NULL    |                |
    | bairro          | varchar(50)  | NO   |     | NULL    |                |
    | cep             | int(11)      | NO   |     | NULL    |                |
    | logradouro      | varchar(50)  | NO   |     | NULL    |                |
    | municipio       | varchar(50)  | NO   |     | NULL    |                |
    | numero          | int(11)      | NO   |     | NULL    |                |
    | uf              | varchar(2)   | NO   |     | NULL    |                |
    | nome            | varchar(100) | NO   |     | NULL    |                |
    +-----------------+--------------+------+-----+---------+----------------+
  • Tabela Telefone

    +-----------+------------+------+-----+---------+----------------+
    | Field     | Type       | Null | Key | Default | Extra          |
    +-----------+------------+------+-----+---------+----------------+
    | id        | int(11)    | NO   | PRI | NULL    | auto_increment |
    | numero    | bigint(20) | NO   |     | NULL    |                |
    | pessoa_id | int(11)    | YES  | MUL | NULL    |                |
    +-----------+------------+------+-----+---------+----------------+
  • Json request POST - Example:

    {
        "nome":"Andre Carlos",
        "cpf":12332144466,
        "data_nascimento":"2020-09-24",
        "endereco":{
            "logradouro":"Av Imaginaria",
            "numero":100,
            "bairro":"Jardim example",
            "municipio":"Sao Paulo",
            "uf":"SP",
            "cep":"06000666"
        },
        "telefone":[
            {
              "numero":11911111111
            },
            {
              "numero":1142411424
            }
        ]
    }

Para realizar PUT é somente adicionar: "id":{id},

Métodos:

  • get api/pessoas
  • get /api/pessoas/{id}
  • post api/pessoas
  • put api/pessoas
  • delete api/pessoas

Foi utilizado como base para o projeto a documentação do javax.persistence

Mapeamento Objeto Relacional

Mapeamento Objeto Relacional é a representação de uma tabela de um banco de dados relacional através de classes Java.

É também conhecido como ORM ou Object Relational Mapping.

Java Persistence API (JPA) Com intuito de padronizar as implementações de ORM em Java, foi elaborada a especificação JPA.

No JPA, as classes Java que representam os dados a serem armazenados no SGBD são chamadas de Entidades (Entity). O que torna essa classe uma entidade é a presença da anotação (Annotation) @javax.persistence.Entity. Tal anotação faz com que o JPA associe a classe Java em questão a uma tabela do banco de dados.

Projeto: API Rest GenericDAO
Autor: André Carlos (andresinho20049)
Resumo: Projeto desenvolvido para fins academicos com intuito de estudar sobre ORM

About

API Rest para implementação das classes generic Dao criado na mão usando EntityManager

Resources

Stars

Watchers

Forks

Languages