본문 바로가기

전체 글131

JPQL 📌 JPQL 타입 표현과 기타식 JPQL 타입 표현문자: ‘HELLO’, ‘She’’s’숫자: 10L(Long), 10D(Double), 10F(Float)Boolean: TRUE, FALSEENUM: jpabook.MemberType.Admin (패키지명 포함🌟)public enum MemberType { ADMIN, USER}member.setType(MemberType.ADMIN)...String query = "select m.username, 'HELLO', true From Member m" + "where m.type = jpql.MemberType.ADMIN"; //패키지명 포함엔티티 타입: TYPE(m) = Member (상속 관계에서 사용) JPQL 기타SQL과 문법이 .. 2024. 7. 27.
조인과 서브쿼리 📌 조인 내부 조인SELECT m FROM Member m [INNER] JOIN m.team tinner는 생략 가능외부 조인SELECT m FROM Member m LEFT [OUTER] JOIN m.team tnull값도 나옴 → 만약 team의 null값도 명시적으로 표현해줘야할 때 사용outer는 생략 가능세타 조인select count(m) from Member m, Team t where m.username = t.name막 조인연관관계 테이블도 조인. 카테시안 곱으로 모두 불러와 조회📌 조인 - ON 절ON절을 활용한 조인(JPA 2.1부터 지원)1. 조인 대상 필터링회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인//JPQLSELECT m, t FROM Member m LEFT JO.. 2024. 7. 27.
프로젝션과 페이징 📌 프로젝션 (SELECT)  SELECT 절에 조회할 대상을 지정하는 것프로젝션 대상: 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자등 기본 데이터 타입)                                                      **관계형 DB는 스칼라 타입만 넣을 수 있음 SELECT m FROM Member m ->엔티티 프로젝션SELECT m.team FROM Member m ->엔티티프로젝션(멤버에 연관된 팀)SELECT m.address FROM Member m -> 임베디드 타입 프로젝션임베디드는 모두 어디 소속돼있기에 어디 소속인지를 명시해줘야함                                                                   .. 2024. 7. 27.
객체지향 쿼리 언어 소개 📌 소개 가장 단순한 조회 방법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.
반응형