강의를 듣다보면 API, API  그래서 나무위키 등을 검색해서 그 당시 궁금증이 해소하고 나서도

뭔가 찜찜하게 이해못한것 같아 다시 정리해 본다

 

 

API : 프로그램들이 서로 소통하는 방법. (인간이 아닌) 코드들끼리 서로 소통하게 위해 만들어진것   (feat.노마드코더)

 

 

'CS' 카테고리의 다른 글

백엔드 개발자란?  (0) 2022.06.13
[CS] 프로세스, 스레드  (0) 2022.05.15
공부할 거  (0) 2022.05.09

다형성 쿼리

TYPE : 조회 대상을 특정 자식으로 한정

TREAT : 자바의 타입 캐스팅과 유사

           상속 구조에서 부모 타입을 특정 자식 타입으로 다룰 때 사용

 

엔티티 직접 사용

JPQL에서 엔티티를 직접 사용하면 SQL에서 해당 엔티티의 기본 키 값을 사용

 

Named쿼리

@NameQuery(

                     name = "Member.findByUsername",

                     query = "select m from Member m where m.username = :username"

)

>>말 그대로 쿼리에 이름을 부여 하는것, 쿼리를 재활용 가능

미리 정의해서 이름을 부여해두고 사용하는 JPQL

정적 쿼리

어노테이션, XML에 정의

애플리케이션 로딩 시점에 초기화 후 재사용

애플리케이션 로딩 시점에 쿼리를 검증

> 스프링JPA에서 이 기능이 있다!

>>> 결론, 스프링JPA 쓰세요.

 

벌크 연산

 특징

쿼리 한 번으로 여러 테이블 로우 변경(엔티티)

executeUpdate()의 결과는 영향받은 엔티티 수 반환

UPDATE, DELETE 지원

INSERT(insert into ..select, 하이버네이트 지원)

 

 주의사항

벌크 연산은 영속성 컨텍스트를 무시하고 데이터베이스에 직접쿼리

 - 첫번째.벌크 연산을 먼저 실행

 - 두번째.벌크 연산 수행 후 영속성 컨텍스트 초기화

>>> 2가지 방법중에 하나를 선택해서 써야 한다.

>>> 스프링JPA 에서 @Modyfying 애노테이션으로 편하게 가능

 

[출처- 인프런 김영한  '자바 ORM 표준 JPA 프로그래밍- 기본편]  강의듣고 정리

'Java Web > JPA' 카테고리의 다른 글

JPQL- 페치 조인(fetch join)  (0) 2022.05.02
JPQL문법(3)  (0) 2022.05.01
JPQL문법(2)  (0) 2022.04.27
JPQL문법  (0) 2022.04.24

★ 실무에서 어마어마어마 중요하다고 함. 이거를 모르면 실무를 못한다고..

 

SQL 조인 종류 X

JPQL에서 성능 최적화를 위해 제공하는 전용 기능

연관된 엔티티나 컬렉션을 SQL 한 번에 함께 조회하는 기능

  >> 쿼리 2번 나갈것을 한 방 쿼리로 끝내는 어마어마한 기술

  >> 실무에서 엄청 많이 사용

JOIN FETCH 명령어 사용

페치조인 ::= [LEFT[OUTER] | INNER] JOIN FETCH 조인경로

 

엔티티 페치 조인

[JPQL]

select m from Member m join fetch m.team

>>[해석] Member를 조회 할껀데, (fetch:한번에 가져온다) join해서 한번에 가지고 오라

그러면서 team을 가지고 와

 

[SQL]

SELECT M.*,T.* FROM MEMBER M

INNER JOIN TEAM T ON M.TEAM_ID=T.ID

 

컬렉션 페치 조인

  일대다 관계

[JPQL]

select t

from Team t join fetch t.members

where t.name = '팀A'

 

[SQL]

SELECT T.*,M.*

FROM TEAM T

INNER JOIN MEMBER M ON T.ID=M.TEAM_ID

WHERE T.NAME ='팀A'

 

JPQL의 DISTINCT 2가지 기능

1. SQL에 DISTINCT를 추가

2. 애플리케이션에서 엔티티 중복 제거

 

 일대다 일 경우에는, 데이터가 뻥튀기가 되기 때문에 조심해야합니다.

 

페치 조인과 일반 조인의 차이

>> 일반 조인 실행시 연관된 엔티티를 함께 조회하지 않음

 

특징과 한계

 

페치 조인 대상에는 별칭을 줄 수 없다

 - 하이버네이트 가능, 가급적 사용X

>> 페치조인은 기본적으로 나랑 연관된 모든것을 다 끌거 오는거이기에,

특정 대상만 주면 오류가 발생할 수 있음

 

둘 이상의 컬렉션은 페치 조인 할수 없다.

 일대다도 데이터가 뻥튀기가 되는데, 이거는 곱하기 * 곱하기 이기에

데이터 정합성의 문제가 발생될 수 있으니 쓰지말자

 

컬렉션을 페치 조인하면 페이징 API(setFirstResult,setMaxResults)를 사용할 수 없다.

 - 일대일, 다대일 같은 단일 값 연관 필드들은 페치 조인해도 페이징 가능

 - 하이버네이트 경고 로그를 남기고 메모리에서 페징(매우 위험)

 

<실무 팁 >> 실무에서는 글로벌 세팅을 사용한다.

persistance.xml에 추가

"hibernate.default_batch_fetch_size" value ="100"

 

>>> batch_fetch_size 를 사용하면 쿼리를 N + 1이 아니라 테이블 수 만큼 

맞출수 있다.

 

1.연관된 엔티티들을 SQL 한 번으로 조회 - 성능 최적화

2. 엔티티에 직접 적용하는 글로벌 로딩 전략보다 우선함

     @OneToMany(fetch = FetchType.LAZY) //글로벌 로딩 전략

3.실무에서 글로벌 로딩 전략은 모두 지연 로딩

4.최적화가 필요한 곳은 페치 조인 적용

 

>>> JPA 70~80% 문제는 N +1 문제인데, 거의 페치 조인으로 해결할 수 있다.

 

너무 중요하기에 페치 조인은 100% 꼭 이해하자. 운영 할 때 성능상 큰 이점.

 

[출처- 인프런 김영한  '자바 ORM 표준 JPA 프로그래밍- 기본편]  강의듣고 정리

 

 

'Java Web > JPA' 카테고리의 다른 글

JPQL 문법(4)  (0) 2022.05.03
JPQL문법(3)  (0) 2022.05.01
JPQL문법(2)  (0) 2022.04.27
JPQL문법  (0) 2022.04.24

1. 거주지가 송파구 주민은 관할 지자체인 송파구청(주택임대민원실)에 '민간임대사업자' 등록을 하여야 한다.

 

거주지: 송파구

물건지: 용산구

>>> 등록은 '송파구청'   + 말소도 '송파구청'

 

2. 송파구청 주택임대 민원실은 오전 11시30부터~ 오후 4시는 항상 바쁘다.

 >>> 빠르게 업무를 보려면 오전 9시 일찍 오거나, 오후 4시 이후에 오면 빠르게 업무를 볼수 있다.

 

3. 계절별 많이 바쁜 날은 언제일까? 

 -5월 :  6월 1일 전에 , 등록하려는 사람들이 5월 말에 다 몰린다.   등록하려면 빠르게  5월 첫째 주와 둘째 주 안에 끝내자

 -12월: 종부세 고지서 받고, 말소 된 줄 모르고 와서 항의 하러 오시는 분들이 많음

 

4. 계약 신고 기준점은?

>>> 계약신고는 계약일자를 기준으로 한다.  간혹  잔금일자로 잘못 알고 있는 분들이 많다. 기억하자. 계약일자.

 

5. 계약신고 마감기한은?

>>>  계약일로부터 3개월까지

 

6. 전월세 신고는 한달인데, 무엇을 기준으로 신고 해야 하는가?

 구청에 등록 된 민간임대사업자는 계약일로 부터 3개월 이내 신고 하면 된다.  원래 하던 대로 하면 된다. 끝

 

7. 보증보험 해야 하나요?

 설명을 생략한다..

 

8. 5% 증액 하면 얼마인가요?

 렌트홈 계산기 돌려보자.

 

9. 위반건축물인데 보증보험 가입하고 싶어도 못해요. 어떡하나요?

 다세대 전세 계약건에서 터지고 있는 사례들, 주택가격 60% 이하로 떨어트리거나, 혹 선수위 대출 비율이 높다면 감액하는 방법 외에는 현재로는 전무하다. 

 

10. 매매 못하나요?

 단기(4년,5년). 장기 8년(아파트) 일 경우, 자진말소 또는 자동말소 일 경우 매매 가능

 

* 자진말소 일 경우: 임차인이 있는 경우 [임차인 말소 동의서] 필수 

 

 

P.S 보증보험은 내용이 방대하니 따로 정리할 예정

P.S 생각 날 때마다 업데이트 중

 

 

인강 따라가다 보면,  똑같은 예문에 변수만 바뀔때가 있다.

이때 일일이 변수 바꾼다고 클릭하고 있는 나를 발견하고...OTL

 

 인텔리 하게 써보도록 하자

 

ctrl + shift + r

 

 

 

+ Recent posts