Hello JPA 애플리케이션 개발
Last updated
Last updated
JPA는 영속성(Persistence)에서 시작한다! persistence.xml에서 설정 정보 조회하고, EntityManagerFactory와 EntityManager 생성한다.
실습 객체와 테이블을 생성하고 매핑해보기!
회원 등록
회원 조회
회원 수정
회원 삭제
1. 회원 등록
2. 회원 조회
3. 회원 수정⭐️⭐️⭐️⭐️⭐️ 자바 컬렉션에 데이터를 수정하듯이 setter인 setName()로 바꿀 값을 넣어주면 em.persist(..)할 필요없이 DB에도 수정되있다! 왜냐하면 JPA를 통해서 엔티티를 가져오면 JPA에서 관리하기 때문에 변경이 감지된 엔티티는 업데이터해서 트랜잭션에 커밋하기 때문이다!!
4. 회원 조회 후 삭제
EntityManagerFactory는 DB당 하나만 생성된다. 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에 서 공유!
EntityManager는 쓰레드간에 공유X (사용하고 버려야 한다)
JPA의 모든 데이터 변경은 트랜잭션 안에서 실행⭐️❤️
JPQL 등장
결국 현업에서는 RDB에서 쿼리를 최적화해서 원하는 데이터 빠르게 조회할 수 있어야 한다! 때에 따라서는 통계성 쿼리를 작성할 수도 있다.
가장 단순한 조회 방법 EntityManager.find(타입, id) 객체 그래프 탐색(a.getB().getC())
복잡한 쿼리 ex)나이가 18살 이상인 회원을 모두 검색하고 싶다면?
실습 - JPQL 소개
JPQL로 전체 회원 검색
JPQL로 ID가 2 이상인 회원만 검색
JPQL로 이름이 같은 회원만 검색
JPQL에 대해 자세한 내용은 객체지향 쿼리에서 학습 예정
JPQL
엔티티 객체를 중심으로 개발
검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색
모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능
애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검 색 조건이 포함된 SQL이 필요
=>문제는 검색 쿼리!!
JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공⭐️ =>테이블이 아닌 객체를 대상으로 검색하기 때문에 객체 지향 쿼리(객체 지향 SQL)이다!
SQL과 문법 유사! SELECT, FROM, WHERE, GROUP BY,HAVING, JOIN 지원
SQL을 추상화해서 특정 데이터베이스 SQL에 의존❌
JPQL은 엔티티 객체를 대상으로 쿼리 SQL은 데이터베이스 테이블을 대상으로 쿼리