01 Jpa
01 Jpa
01 Jpa
1. Java EE
Java Enterprise Edition (Java EE) é uma plataforma de desenvolvimento de software baseada na
linguagem de programação Java. Criada pela Oracle Corporation, anteriormente pela Sun Microsystems, o
Java EE fornece um conjunto de especificações, APIs (Application Programming Interfaces) e serviços para
desenvolvimento e execução de aplicativos corporativos escaláveis e robustos.
A plataforma Java EE é projetada para atender aos requisitos de aplicativos corporativos complexos,
como sistemas de gerenciamento de transações, segurança, persistência de dados e comunicação distribuída.
Ela inclui uma série de tecnologias e componentes que podem ser utilizados para desenvolver aplicativos
web, serviços web, aplicativos de negócios e muito mais.
Alguns dos principais componentes e tecnologias do Java EE incluem:
● JPA (Java Persistence API): API de persistência de dados para mapeamento objeto-relacional
(ORM), facilitando o acesso e manipulação de dados em bancos de dados relacionais.
● EJB (Enterprise JavaBeans): Componentes para construção de aplicativos corporativos distribuídos,
que lidam com tarefas como persistência de dados, segurança e gerenciamento de transações.
● JSF (JavaServer Faces): Framework para desenvolvimento de interfaces de usuário baseadas em
componentes para aplicativos web.
● JTA (Java Transaction API): API para gerenciamento de transações distribuídas em aplicativos Java
EE.
● JMS (Java Message Service): API para troca de mensagens assíncronas entre aplicativos.
● JAX-RS (Java API for RESTful Web Services) e JAX-WS (Java API for XML Web Services):
APIs para desenvolvimento de serviços web RESTful e baseados em SOAP, respectivamente.
● CDI (Contexts and Dependency Injection): Framework para injeção de dependência e gerenciamento
de ciclo de vida de componentes em aplicativos Java EE.
● Servlets e JSP (JavaServer Pages): Tecnologias para desenvolvimento de aplicativos web dinâmicos.
Link 1: https://www.oracle.com/br/java/technologies/java-ee-glance.html
Link 2: https://docs.oracle.com/javaee/7/index.html
Link 3: https://docs.oracle.com/javaee/7/tutorial/index.html
2. Persistência em Java com JPA
2.1. Mapeamento Objeto-Relacional
O Mapeamento Objeto-Relacional (ORM) em Java EE, usando a Java Persistence API (JPA), é uma
técnica que permite aos desenvolvedores mapear objetos Java para tabelas em um banco de dados relacional.
Isso facilita a interação entre a camada de aplicação Java e a camada de persistência de dados,
abstraindo as complexidades do acesso ao banco de dados e permitindo que os desenvolvedores trabalhem
com objetos Java em vez de lidar diretamente com SQL.
No geral, o mapeamento objeto-relacional com JPA simplifica o desenvolvimento de aplicativos Java
EE, fornecendo uma camada de abstração entre o código Java e o banco de dados subjacente, o que aumenta
a produtividade do desenvolvedor e facilita a manutenção do código.
No contexto do JPA, o mapeamento objeto-relacional envolve várias etapas:
A. Entidades: As classes Java que são mapeadas para tabelas no banco de dados são chamadas de
entidades, como ilustrado na figura abaixo. Cada entidade representa uma linha em uma tabela e é
anotada com a anotação @Entity.
B. Atributos: Os campos nas entidades Java são mapeados para colunas nas tabelas do banco de dados.
Os tipos de dados dos atributos Java são mapeados para os tipos de dados correspondentes no banco de
dados, como ilustrado na figura abaixo.
● Linha 15: A classe Professor declara que implementa a interface Serializable. Isso permite que
objetos da classe sejam serializados e deserializados, o que é necessário para o JPA-Hibernate
persistir e recuperar objetos do banco de dados. Este código é comumente encontrado em classes que
são serializáveis, especialmente quando se trata de classes que serão usadas em um contexto de
persistência de dados com o JPA (Java Persistence API) e Hibernate, onde a serialização pode ser
necessária.
○ private static final long serialVersionUID: Esta linha declara uma variável que armazena um
identificador de versão serial para a classe. Ela é marcada como private para garantir que só
possa ser acessada internamente na classe, static para indicar que é uma variável de classe
(associada à classe em vez de a uma instância específica) e final para indicar que seu valor
não pode ser alterado após a inicialização. O tipo é long, o que significa que é um número
inteiro longo. O nome da variável é serialVersionUID, um padrão que indica a versão serial
de uma classe. Este identificador é usado para verificar se a classe que está sendo
deserializada é compatível com a classe que foi serializada. Se o identificador de versão serial
não corresponder, uma InvalidClassException será lançada.
● Linhas 17, 18 e 19: Os códigos dessas linhas definem a propriedade id da classe Professor, com a
chave primária da entidade mapeada para uma tabela no banco de dados.
○ @Id: Esta anotação indica que a propriedade id é a chave primária da entidade. Uma chave
primária é um atributo que identifica unicamente cada registro na tabela.
○ @GeneratedValue: Esta anotação indica que o valor da chave primária será gerado
automaticamente pelo banco de dados.
■ modelVersion: Especifica a versão do schema do Maven usada para este projeto (4.0.0).
Informação do projeto:
○ groupId: Define o identificador único do grupo para o projeto (com.portal neste caso).
○ artifactId: Define o identificador único para o artefato do projeto (aulajpa).
○ version: Define a versão do projeto (0.0.1-SNAPSHOT). A versão SNAPSHOT indica que é
uma versão de desenvolvimento.
■ Dependências: Esta seção define as bibliotecas externas que o projeto precisa para funcionar. Cada
dependency define:
○ groupId: O identificador do grupo da biblioteca.
○ artifactId: O identificador único da biblioteca.
○ version: A versão específica da biblioteca que deseja usar.
○ type: (opcional) O tipo da dependência (pom indica que esta dependência agrega outras).
○ hibernate-core: Biblioteca principal do Hibernate para mapeamento objeto-relacional.
○ hibernate-entitymanager: Biblioteca que fornece a API JPA (Java Persistence API) para
interagir com o banco de dados.
○ mysql-connector-java: Driver JDBC para conectar ao banco de dados MySQL.
H. Arquivo persistence.xml: É um arquivo de configuração usado no JPA (Java Persistence API) para
definir as unidades de persistência. Uma unidade de persistência representa um conjunto de classes de
entidade que serão mapeadas para tabelas em um banco de dados.:
■ Declaração do XML e schemaLocation: Esta parte declara a versão do XML (1.0), o encoding
(UTF-8), o namespace para JPA (http://xmlns.jcp.org/xml/ns/persistence) e o schema
(http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd) usado para validação do arquivo.