본문 바로가기

Study/JPA11

객체지향 쿼리 언어 소개 📌 소개 가장 단순한 조회 방법EntityManager.find()객체 그래프 탐색(a.getB().getC())나이가 18살 이상인 회원을 모두 검색하고 싶다면?JPQLJPA를 사용하면 엔티티 객체를 중심으로 개발문제는 검색 쿼리검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공SQL과 문법 유사,SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원JPQL은 엔티티 객체를 대상으로 쿼리SQL은 데이터베이스 테이블을 대상으로 쿼리JPQL을 짜면 SQL로 번역되어.. 2024. 7. 27.
값 타입 2 📌 값 타입 컬렉션 ⭐값 타입을 컬렉션에 담아 사용하는 것 (엔티티를 컬렉션으로 쓰는 게 아니라?)  DB 테이블에 컬렉션을 담을 구조가 없음 (value로 값만 넣을 수 있음) - 기본적으로별도의 테이블로 뽑아 관리.@ElementCollection @CollectionTable(name = "FAVORITE_FOODS", joinColumns = @JoinColumn(name = "MEMBER_ID"))@Column(name = "FOOD_NAME")private Set favoriteFoods = new HashSet();@ElementCollection@CollectionTable(name = "ADDRESS", joinColumns = @JoinColumn(name = "MEMBER.. 2024. 7. 27.
값 타입 1 📌 기본값 타입  엔티티 타입@Entity로 정의하는 객체데이터가 변해도 식별자로 지속해서 추적 가능예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능값 타입int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체식별자가 없고 값만 있으므로 변경시 추적 불가예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체값 타입 분류기본값 타입자바 기본 타입(int, double)래퍼 클래스(Integer, Long)String임베디드 타입(embedded type, 복합 값 타입)ex) x, y좌표를 묶어서 값으로 사용하고 싶을 때?컬렉션 값 타입(collection value type)기본값 타입 (ex- String name, int age)생명주기를 엔.. 2024. 7. 27.
프록시 ) 영속성 전이(CASCADE)와 고아 객체 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때EX) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장.=⇒ 즉시로딩, 지연로딩과는 완전 무관try { Child child1 = new Child(); Child child2 = new Child(); Parent parent = new Parent(); parent.addChild(child1); parent.addChild(child2); em.persist(parent); //위에랑 다르게 parent만 persist함// em.persist(child1);// em.persist(child2); tx.commit();@Entitypub.. 2024. 7. 26.
프록시 프록시란?실제 엔티티 객체 대신 데이터베이스 조회를 지연할 수 있는 가짜 객체를 의미 em.find()데이터베이스를 통해서 실제 Entity 객체 조회 (쿼리 날라감)em.getReference()데이터베이스 조회를 미루는 가짜(프록시) Entitty 조회(DB에 쿼리가 안 나가는데 객체가 조회가 됨.) //Member findMember = em.find(Member.class, member.getId());Member findMember = em.getReference(Member.class, member.getId());//System.out.println("findMember.id = " + findMember.getId());//System.out.println("findMember.userna.. 2024. 7. 25.
반응형