전체 글

개발에 관련된 학습 내용들을 기록하는 공간입니다.
JPA/Base

JPA - 중급 #3 (다형성 쿼리, 엔티티 직접 사용, Named 쿼리, 벌크연산)

💠 다형성 쿼리 - 조회 대상을 특정 자식으로 한정 EX) Item 중에 하위 클래스인 Book, Movie를 조회하라 ㆍ[JPQL] - SELECT i FROM Item i WHERE type(i) IN (Book, Movie) ㆍ[SQL] - SELECT i FROM i where i.DTYPE in ('B', 'M') 💠 엔티티 직접 사용 - JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용한다. ㆍ[JPQL] SELECT count(m.id) FROM Member m // 엔티티의 아이디를 사용 SELECT count(m) FROM Member m // 엔티티를 직접 사용 - 함수에서 아이디를 사용하던, 엔티티를 직접 사용하던 SQL에서는 Id를 이용하여 데이터를 가..

JPA/Base

JPA - 중급 #2 페치 조인(Fetch Join)

✍페치 조인(Fetch Join) - 실무에서 매우매우매우매우 중요함. - 페치 조인은 SQL 조인 종류가 아님. JPQL에서 성능 최적화를 위해 제공 연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능 join fetch 명령어 사용 💠 엔티티 페치 조인 ex) 회원을 조회하면서 연관된 팀도 함께 조회하고 싶을 때 (SQL 한 번에) / 다대일 관계, 일대일 관계 SQL을 보면 회원 뿐만 아니라 팀(T.*)도 함께 SELECT ㆍ[JPQL] - SELECT m FROM Member m join fetch m.team ㆍ[SQL] - SELECT M.*, T.* FROM Member m INNER JOIN TEAM T ON M.TEAM_ID = T.ID - "SELECT m FROM Member..

JPA/Base

JPA - JPQL 중급 #1 (경로 표현식)

✍경로 표현식? - 점을 찍어 객체 그래프를 탐색하는 것. SELECT m.username -> 상태 필드 () FROM Member m JOIN m.team t -> 단일 값 연관 필드 JOIN m.orders o -> 컬렉션 값 연관 필드 WHERE t.name = '팀A' 상태 필드 : 단순히 값을 저장하기 위한 필드 / 경로 탐색의 끝, 탐색 X 연관 필드 : 연관 관계를 위한 필드 ㆍ 단일 값 연관 필드 : @ManyToOne, @OneToOne, 대상이 엔티티 / 묵시적 내부 조인 발생, 탐색 O ㆍ 컬렉션 값 연관 필드 : @OneToMany, @ManyToMany, 대상이 컬렉션 / 묵시적 내부 조인 발생, 탐색 X 상태 필드 : m.username -> 에서 더 탐색할 수 없음. 단일 값..

Database

[Oracle] 오라클 데이터베이스 접근 오류 (ORA-12560), SQL developer 연동

ORA-12560: TNS: 프로토콜 어댑터 오류 ORA-12560은 데이터베이스에 접속할 수 없음을 알려주는 에러이다. ORACLE DB 관련 서비스가 메모리를 많이 잡아먹기 때문에 시작 유형을 수동으로 설정해주는 경우가 많다. 따라서, 이 서비스들을 실행시켜주면 된다. 💡 해결 방법 1. 파일 탐색기 -> 내 PC 우클릭 -> 관리 -> 서비스를 눌러 서비스 탭을 띄운다. window키를 누르고 '서비스'를 검색해도 된다. 2. 스크롤을 내려, OracleOra ~, OracleServices"DB명" 에 해당하는 서비스를 실행시켜준다. 보통은 이 과정으로 오류는 해결된다. 3. cmd를 열어 리스너를 재시작한다. lsnrctl services = 리스너 정보 확인 lsnrctl start = 리스너..

JPA/Base

JPA - JPQL 기본 # 2 (조인, 서브 쿼리, 타입 표현)

✍JPA는 다양한 쿼리 방법을 지원. 예제 모델 💦 JPQL 문법 - JOIN 내부 조인 : SELECT m FROM Member m [INNER] JOIN m.team t Member에 Team이 없으면 해당 데이터 전체가 출력되지 않음. 외부 조인 : SELECT m FROM Member m LEFT [OUTER] JOIN m.team t Member에 Team이 없어도 데이터가 출력됨. 세타 조인 : SELECT count(m) form Member m, Team t where m.username = t.name 연관관계가 없는 테이블을 가져올 때. 🔰 조인 - ON 절 - ON절을 활용한 조인 => 조인 대상 필터링 / 연관 관계 없는 엔티티 외부 조인 🔰 서브 쿼리 - 기존 쿼리문에서 추가적으로..

JPA/Base

JPA - JPQL 기본 #1 (파라미터 바인딩, 프로젝션 / 조회, 페이징)

✍JPA는 다양한 쿼리 방법을 지원. JPQL 은 객체지향 쿼리 언어, 따라서 엔티티 객체를 대상으로 쿼리한다. JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않는다. JPQL은 결국 SQL로 반환된다. 💦 JPQL 문법 - 기본적인 문법은 SQL과 같음. - update 같은 경우에서 한방에 쿼리를 날리는 것을 '벌크 연산'이라고 함. - select m from Member as m where m.age > 18 - 엔티티와 속성은 대소문자 구분O (Member, age) - JPQL 키워드는 대소문자 구문 X (SELECT, FROM, where) - 엔티티 이름을 사용, 테이블 이름 X - 별칭 필수 (as는 생략 가능) TypedQuery = 반환 타입이 명확할 때, Quer..

KAispread
기억의 정류장