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?