1/26
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
JPA (Java Persistence API) é uma especificação Java que define um padrão para o mapeamento objeto-relacional, permitindo que objetos Java sejam persistidos em bancos de dados relacionais.
O que é JPA?
Hibernate é um framework ORM (Object-Relational Mapping) que implementa a especificação JPA e oferece funcionalidades adicionais para facilitar a persistência e o gerenciamento de dados em Java.
O que é Hibernate?
JPA é uma especificação que define as regras para persistência em Java, enquanto o Hibernate é uma implementação dessa especificação, com recursos extras que vão além do padrão.
Qual a diferença entre JPA e Hibernate?
Uma entidade é uma classe Java que representa uma tabela no banco de dados. Cada instância da entidade corresponde a uma linha nessa tabela.
O que é uma entidade em JPA/Hibernate?
A anotação @Entity indica que a classe é uma entidade e que seus objetos devem ser mapeados para uma tabela do banco de dados.
@Entity
public class Usuario { ... }
Para que serve a anotação @Entity?
Indica o campo que representa a chave primária da entidade.
@Id
private Long id;
Qual a função da anotação @Id
?
Use @GeneratedValue
com uma estratégia.
@GeneratedValue(strategy = GenerationType.IDENTITY)
Como gerar automaticamente o valor da chave primária?
Define propriedades da coluna do banco de dados, como nome e restrições.
@Column(name="nome_usuario", nullable=false)
Para que serve a anotação @Column
?
Conjunto de configurações JPA definidas no arquivo persistence.xml
que agrupa entidades e configurações de conexão.
O que é um Persistence Unit?
Utilize o EntityManager
e o método persist()
.
entityManager.persist(usuario);
Como persistir uma entidade usando JPA?
Use o método find()
do EntityManager
.
Usuario u = entityManager.find(Usuario.class, 1L);
Como recuperar uma entidade pelo ID?
É a Java Persistence Query Language, uma linguagem de consulta orientada a objetos similar ao SQL, mas voltada para entidades.
"SELECT u FROM Usuario u"
O que é JPQL?
Use EntityManager.createQuery()
e getResultList()
.
List<Usuario> usuarios = entityManager
.createQuery("SELECT u FROM Usuario u", Usuario.class)
.getResultList();
Como executar uma consulta JPQL?
Consultas pré-definidas usando a anotação @NamedQuery
na classe de entidade.
@NamedQuery(name="Usuario.findAll", query="SELECT u FROM Usuario u")
O que são Named Queries?
Utilize a anotação @OneToOne
para relacionar duas entidades.
@OneToOne
private Perfil perfil;
Como mapear uma relação um-para-um?
Utilize @OneToMany
com a propriedade mappedBy
para indicar a entidade dona da relação.
@OneToMany(mappedBy="usuario")
private List<Pedido> pedidos;
Como mapear uma relação um-para-muitos?
Define uma relação muitos-para-um entre entidades.
@ManyToOne
private Departamento departamento;
O que é a anotação @ManyToOne
?
Use a anotação @ManyToMany
para relacionar coleções em ambas as entidades.
@ManyToMany
private List<Curso> cursos;
Como mapear uma relação muitos-para-muitos?
LAZY: Carregamento sob demanda; os dados relacionados são buscados apenas quando acessados.
EAGER: Carregamento imediato; os dados relacionados são carregados junto com a entidade principal.
@OneToMany(fetch = FetchType.LAZY)
Qual a diferença entre FetchType.LAZY
e EAGER
?
Use entityManager.getTransaction().begin()
para iniciar e commit()
para finalizar.
entityManager.getTransaction().begin();
// operações
entityManager.getTransaction().commit();
Como iniciar e finalizar uma transação?
É a interface principal para interagir com a camada de persistência, responsável por operações como persistir, buscar, atualizar e remover entidades.
O que é o EntityManager
?
Utilize o método merge()
do EntityManager
.
usuario = entityManager.merge(usuario);
Como atualizar uma entidade no JPA?
Use o método remove()
do EntityManager
.
entityManager.remove(usuario);
Como remover uma entidade do banco de dados?
Uma API para construir consultas de forma programática e segura em tempo de compilação.
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Usuario> cq = cb.createQuery(Usuario.class);
O que é a Criteria API?
Consultas escritas em SQL nativo que podem ser executadas via JPA.
entityManager.createNativeQuery("SELECT * FROM usuario", Usuario.class);
O que são Native Queries?
Use a anotação @Inheritance
na classe base e defina a estratégia desejada (JOINED, SINGLE_TABLE, etc.).
@Inheritance(strategy = InheritanceType.JOINED)
Como implementar herança no JPA?
Controle de concorrência usando a anotação @Version
para evitar conflitos de atualização.
@Version
private int versao;
O que é locking otimista e como implementá-lo?