JPA / Hibernate

0.0(0)
studied byStudied by 0 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/26

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

27 Terms

1
New cards

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?

2
New cards

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?

3
New cards

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?

4
New cards

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?

5
New cards

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?

6
New cards

Indica o campo que representa a chave primária da entidade.

@Id
private Long id;

Qual a função da anotação @Id?

7
New cards

Use @GeneratedValue com uma estratégia.

@GeneratedValue(strategy = GenerationType.IDENTITY)

Como gerar automaticamente o valor da chave primária?

8
New cards

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?

9
New cards

Conjunto de configurações JPA definidas no arquivo persistence.xml que agrupa entidades e configurações de conexão.

O que é um Persistence Unit?

10
New cards

Utilize o EntityManager e o método persist().

entityManager.persist(usuario);

Como persistir uma entidade usando JPA?

11
New cards

Use o método find() do EntityManager.

Usuario u = entityManager.find(Usuario.class, 1L);

Como recuperar uma entidade pelo ID?

12
New cards

É 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?

13
New cards

Use EntityManager.createQuery() e getResultList().

List<Usuario> usuarios = entityManager
    .createQuery("SELECT u FROM Usuario u", Usuario.class)
    .getResultList();

Como executar uma consulta JPQL?

14
New cards

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?

15
New cards

Utilize a anotação @OneToOne para relacionar duas entidades.

@OneToOne
private Perfil perfil;

Como mapear uma relação um-para-um?

16
New cards

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?

17
New cards

Define uma relação muitos-para-um entre entidades.

@ManyToOne
private Departamento departamento;

O que é a anotação @ManyToOne?

18
New cards

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?

19
New cards
  • 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?

20
New cards

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?

21
New cards

É 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?

22
New cards

Utilize o método merge() do EntityManager.

usuario = entityManager.merge(usuario);

Como atualizar uma entidade no JPA?

23
New cards

Use o método remove() do EntityManager.

entityManager.remove(usuario);

Como remover uma entidade do banco de dados?

24
New cards

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?

25
New cards

Consultas escritas em SQL nativo que podem ser executadas via JPA.

entityManager.createNativeQuery("SELECT * FROM usuario", Usuario.class);

O que são Native Queries?

26
New cards

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?

27
New cards

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?