JPA
- @PersistenceContext EntityManager
- save(), find(), remove() : EntityManager 의 기본 쿼리
- createQuery() : 쿼리문 작성 가능
- Dirty Checking : 쿼리에서 조회한 객체의 데이터를 로직에서 수정하면 별도의 update 문 없이도 Transaction commit 시에 수정사항이 DB 에도 함께 반영됨
- 메소드 이름으로 쿼리 생성 : 미리 지정된 규칙으로 메서드를 생성하여 바로 호출 (간단한 쿼리에만 쓰임)
- @NamedQuery : Entity 에 어노테이션으로 쿼리 생성 후 Repository 에서 Alias 로 호출하는 방식 (잘 안쓰임)
- @Query(=익명 네임드쿼리) : Repository 메서드 위에 바로 쿼리 정의 (많이 쓰임)
- Entity 가 아닌 DTO(=VO) 로 조회 : new (패키지경로.클래스명)(생성자)로 가능
- 파라미터 바인딩 : 규칙에 의해 여러 값으로 바인딩 받을 수 있음. 위치기반, 이름 기반 가능. in 쿼리의 경우 List 로 받아서 깔끔하게 처리 가능
- 반환 타입 : T, Optional, Stream, List 등 반환타입을 다양하게 받을 수 있음
참고
- https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84