강의를 듣다보면 API, API 그래서 나무위키 등을 검색해서 그 당시 궁금증이 해소하고 나서도
뭔가 찜찜하게 이해못한것 같아 다시 정리해 본다
API : 프로그램들이 서로 소통하는 방법. (인간이 아닌) 코드들끼리 서로 소통하게 위해 만들어진것 (feat.노마드코더)
'CS' 카테고리의 다른 글
| 백엔드 개발자란? (0) | 2022.06.13 |
|---|---|
| [CS] 프로세스, 스레드 (0) | 2022.05.15 |
| 공부할 거 (0) | 2022.05.09 |
강의를 듣다보면 API, API 그래서 나무위키 등을 검색해서 그 당시 궁금증이 해소하고 나서도
뭔가 찜찜하게 이해못한것 같아 다시 정리해 본다
API : 프로그램들이 서로 소통하는 방법. (인간이 아닌) 코드들끼리 서로 소통하게 위해 만들어진것 (feat.노마드코더)
| 백엔드 개발자란? (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 프로그래밍- 기본편] 강의듣고 정리
★ 실무에서 어마어마어마 중요하다고 함. 이거를 모르면 실무를 못한다고..
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 프로그래밍- 기본편] 강의듣고 정리
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 생각 날 때마다 업데이트 중
| 민간주택임대사업자 5월에 등록 할까? 말까? (0) | 2022.05.25 |
|---|
인강 따라가다 보면, 똑같은 예문에 변수만 바뀔때가 있다.
이때 일일이 변수 바꾼다고 클릭하고 있는 나를 발견하고...OTL
인텔리 하게 써보도록 하자

| 한 줄 복사 : Ctrl + D (0) | 2022.04.21 |
|---|---|
| [IntelliJ] 인텔리J 쓰기전에 하는 세팅과 편리한 단축키(윈도우) (0) | 2022.04.13 |