01 Jpa

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 8

CENTRO UNIVERSITÁRIO DE PATOS DE MINAS – UNIPAM

BACHARELADO EM SISTEMAS DE INFORMAÇÃO


TURMA: 5º PERÍODO – 01/2024
DISCIPLINA: DESENVOLVIMENTO PARA WEB II
PROFESSOR RAFAEL MARINHO E SILVA

Java EE e Persistência em Java com 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.

○ “= 1L;”: O valor 1L é o valor padrão para serialVersionUID. É recomendado que seja


especificado um valor explícito para serialVersionUID para evitar problemas de
compatibilidade se a classe for modificada posteriormente. Atribuição do valor 1 à variável
serialVersionUID. O L após o número 1 indica que este é um valor do tipo long.

● 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.

○ strategy=GenerationType.IDENTITY: Esta opção indica que o banco de dados usará a


estratégia de geração de chaves IDENTITY. Essa estratégia é específica para bancos de dados
como MySQL, PostgreSQL e Oracle, que possuem mecanismos de geração de chaves
auto-incrementáveis.

○ Ao persistir um novo objeto da classe no banco de dados, o JPA-Hibernate irá verificar se o


objeto possui um valor para a propriedade id. Se o valor for null, o JPA-Hibernate solicitará
ao banco de dados que gere um novo valor para a chave primária. O banco de dados gerará um
novo valor usando a estratégia IDENTITY. O JPA-Hibernate definirá o valor da propriedade
id com o novo valor gerado pelo banco de dados. O objeto será persistido na tabela com o
novo valor da chave primária.
● Linhas 21 - 25: O código dessas linhas definem os mapeamentos entre as propriedades nome e email
da classe Professor e as colunas nomes e emails da tabela no banco de dados.
○ @Column: Esta anotação indica que a propriedade nome e email estão mapeadas para as
colunas nomes e emails da tabela, respectivamente.
○ name: Este atributo especifica o nome da coluna na tabela.

C. Mapeamento de relacionamentos: O JPA oferece suporte ao mapeamento de relacionamentos entre


entidades, como relacionamentos um-para-um, um-para-muitos e muitos-para-muitos. Isso é feito
usando anotações como @OneToOne, @OneToMany, @ManyToOne e @ManyToMany.

■ @OneToOne: Essa anotação é usada para


definir um relacionamento onde uma instância de uma
entidade está associada a exatamente uma instância de
outra entidade. Por exemplo, imagine um relacionamento
entre as entidades Pessoa e Passaporte, onde uma pessoa
possui apenas um passaporte.

■ @OneToMany: Essa anotação é usada para


definir um relacionamento onde uma instância de uma
entidade está associada a uma coleção (ou lista) de
instâncias de outra entidade. Por exemplo, imagine um
relacionamento entre as entidades Departamento e
Funcionario, onde um departamento possui muitos
funcionários.
■ @ManyToOne: Essa anotação é usada para
definir um relacionamento onde muitas instâncias de uma
entidade estão associadas a uma única instância de outra
entidade. Continuando o exemplo anterior, aqui está a
definição da entidade Funcionario com a anotação
@ManyToOne.

■ @ManyToMany: Essa anotação é usada para


definir um relacionamento onde muitas instâncias de
uma entidade estão associadas a muitas instâncias de
outra entidade. Por exemplo, imagine um relacionamento
entre as entidades Aluno e Curso, onde um estudante
pode estar matriculado em vários cursos e um curso pode
ter vários estudantes matriculados.

D. Unidade de persistência: Uma unidade de persistência define um conjunto de entidades gerenciadas


pelo JPA. É representada pela classe EntityManagerFactory e é configurada em um arquivo
persistence.xml. A unidade de persistência é responsável por criar e gerenciar os objetos
EntityManager.
E. Contexto de persistência: O contexto de persistência é o ambiente em que as entidades são
gerenciadas pelo JPA. O JPA mantém o estado das entidades e gerencia suas transações dentro do
contexto de persistência. O contexto de persistência é representado pelo objeto EntityManager.
F. JPQL (Java Persistence Query Language): É uma linguagem de consulta orientada a objetos usada
para consultar entidades persistentes. JPQL é semelhante ao SQL, mas opera em objetos Java em vez
de tabelas de banco de dados. Ele permite que os desenvolvedores escrevam consultas independentes
do banco de dados, tornando o código mais acessível entre diferentes sistemas de banco de dados.
Segue abaixo, alguns exemplos dos comandos mais comuns do JPQL no JPA. Essa linguagem oferece
uma ampla gama de recursos para consultas flexíveis e eficientes em bancos de dados relacionais
usando objetos Java.
■ SELECT básico: Este é o comando mais básico para recuperar entidades do banco de dados. Como
no exemplo abaixo, o código retorna todos os objetos da classe Produto do banco de dados.
■ Filtragem com WHERE: Permite filtrar os resultados com base em condições específicas. Como
no exemplo abaixo, o código retorna todos os produtos com preço superior a 100.
■ Ordenação com ORDER BY: Ordena os resultados com base em uma ou mais colunas. Como no
exemplo abaixo, o código retorna todos os produtos ordenados pelo nome em ordem crescente.
■ Funções de Agregação: Funções como COUNT, SUM, AVG, MIN, MAX podem ser usadas para
calcular valores agregados. Como no exemplo abaixo, o código retorna o número total de produtos
no banco de dados.
■ Join entre Entidades: Permite realizar junções entre diferentes entidades. Como no exemplo
abaixo, o código retorna todos os produtos que pertencem à categoria "Eletrônicos".
■ Funções de String: Funções como CONCAT, UPPER, LOWER, TRIM podem ser usadas para
manipular strings. Como no exemplo abaixo, o código retorna os nomes dos produtos em letras
maiúsculas.
G. Arquivo pom.xml: É um arquivo de configuração usado pelo Maven, uma ferramenta de
gerenciamento de projetos Java. Ele define as informações básicas do projeto, as dependências de
bibliotecas e as configurações de compilação. Segue análise de cada seção do código:
■ Declaração do XML e schemaLocation: Esta parte declara o namespace do XML e define o
schema (coleções de objetos dentro de um determinado banco de dados) usado para validação do
arquivo. a

■ 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.

■ persistence-unit: Define uma unidade de persistência.


○ name: Nome da unidade de persistência (aula-jpa neste caso).
○ transaction-type: Define o tipo de transação usada pela unidade de persistência
(RESOURCE_LOCAL neste caso).
■ Propriedades: Define as propriedades de configuração para a unidade de persistência.
○ javax.persistence.jdbc.url: URL de conexão com o banco de dados.
○ javax.persistence.jdbc.driver: Driver JDBC para se conectar ao banco de dados.
○ javax.persistence.jdbc.user: Usuário do banco de dados.
○ javax.persistence.jdbc.password: Senha do banco de dados (vazio neste exemplo).
○ hibernate.hbm2ddl.auto: Define a estratégia de criação de tabelas no banco de dados (update
neste caso, que atualiza o schema se houver alterações nas classes de entidade).
○ hibernate.dialect: Define o dialeto específico do banco de dados para mapeamento correto
(org.hibernate.dialect.MySQL8Dialect para MySQL 8).

Você também pode gostar