동작화면
✅ 엔티티의 생명주기 ✅ em.persist() ✅ em.detach() ✅ em.clear() ✅ em.close() ✅ em.remove()
✅ @ Entity ✅ @ Table ✅ @Column ✅ @Enumerated ✅ @Temporal ✅ @Lob ✅ @Transient
✅ 단방향 연관관계 ✅ 양방향 연관관계 ✅ 연관관계의 주인
✅ @ManyToOne ✅ @OneToMany ✅ @OneToOne ✅ @ManyToMany
✅ @DiscriminatorColumn ✅ @DiscriminatorValue("")
✅ @MappedSuperclass
✅ em.getReference()
✅ fetch = FetchType.LAZY ✅ fetch = FetchType.EAGER
✅ cascade = CascadeType.ALL ✅ orphanRemoval = true
✅ @Embeddable ✅ @Embedded ✅ @AttributeOverride ✅ a.equals(b)
✅ @ElementCollection ✅ @CollectionTable ✅ 실무에서는 값 타입 컬렉션 대신에 일대다 관계를 고려한다. (대신 영속성 전이(Cascade) + 고아 객체 제거 사용)
✅ TypeQuery vs Query ✅ query.getResultList() vs query.getSingleResult()
✅ setFirstResult() ✅ setMaxResults()
✅ case식 ✅ COALESCE ✅ NULLIF
✅ 상태 필드 ✅ 연관 필드 ✅ 명시적 조인 ✅ 묵시적 조인
✅ 엔티티 페치 조인 ✅ 컬렉션 페치 조인 ✅ DISTINCT
✅ 제네릭(generic)
✅ 메소드 이름으로 쿼리 생성 ✅ @NamedQuery ✅ @Query
위치 기반은 순서가 바뀌어 유지보수가 어려워질 수 있으므로 대부분 이름 기반을 사용함Collection 타입으로 in절을 지원한다.
✅ Optional
✅ @Modifying
✅ @EntityGraph ✅ @NamedEntityGraph
✅ @EnableJpaAuditing ✅ @MappedSuperclass ✅ @CreatedDate ✅ @LastModifiedDate ✅ @CreatedBy ✅ @LastModifiedBy
✅ Persistable ✅ @CreatedDate
✅ JPA Criteria ✅ jpql ✅ Querydsl