JPASQLQuery네이티브 SQL 쿼리를 생성하고 실행하기 위한 QueryDSL 클래스SQL 힌트나 기타 데이터베이스에 종속적인 설정(예: 인덱스 힌트)을 적용반면, JPAQuery는 JPQL을 생성하는 데 사용됩니다.JPQL은 데이터베이스 독립적인 추상화 계층을 제공하기 때문에,힌트나 플래그 같은 SQL 종속적인 요소를 직접 추가하는 기능을 지원하지 않습니다.addFlag()addFlag(QueryFlag.Position, String) 메서드는 쿼리에 특정 플래그를 추가하여 QueryDSL이 생성하는 SQL에 원하는 텍스트(예: SQL 힌트)를 삽입할 수 있도록 해줍니다.첫 번째 인자: 플래그를 삽입할 위치 (QueryFlag.Position)두 번째 인자: 삽입할 텍스트 (예: SQL 힌트)htt..
EntityManagerFactoryJPA를 동작시키기 위한 기반 객체를 만들고 DB 커넥션 풀 생성META-INF/persistence.xml 에 있는 정보를 바탕으로 생성생성 비용이 크기 때문에 한번만 생성하고 공유해서 사용여러 스레드가 동시에 접근해도 안전. 공유 가능EntityManager엔티티를 저장, 수정, 삭제, 조회 등 모든 일을 처리. 가상의 데이터베이스엔티티 매니저 팩토리에서 엔티티 매니저를 생성. 비용은 거의 들지 않음여러 스레드가 동시에 접근하면 문제 발생. 공유 금지DB 연결이 꼭 필요한 시점까지 커넥션을 얻지 않음. 트랜잭션을 시작할 때 커넥션을 획득영속성 컨텍스트 (Persistence Context)엔티티를 영구 저장하는 환경엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고..
SQL을 직접 다룰 때 발생하는 문제점 진정한 의미의 계층 분할이 어렵다 엔티티르르 신뢰할 수 없다 SQL에 의존적인 개발을 피하기 어렵다 JPA Java ORM(Object-Relation Mapping) 기술 표준 API 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결 정교한 객체 모델링을 할 수 있고 객체지향 개발에 집중할 수 있다 생산성 : SQL을 작성하고, JDBC API를 사용하는 반복적인 일을 JPA가 대신 처리 유지보수 : JPA가 대신 처리해주므로 수정해야할 코드가 줄어듦 패러다임의 불일치 해결 : 상속, 연관관계, 객체 그래프 탐색, 비교하기 해결 성능 : 애플리케이션과 DB 사이에서 다양한 성능 최적화 기회 제공 데이터 접근 추상화와 벤더 독립성 : 특정 DB 기..