현제의 현재이야기
[JAVA SPRING] 0314 TIL 본문
- 새로운 인스턴스이기 때문에 다르다.
- 그러나 자바 컬렉션에서는 같다. 값을 반환하기 때문
- 결론: 객체 답게 모델링 할수록 매핑 작업만 늘어난다. -> 그래서 JPA가 나옴
About JPA
- ORM: Object Relational Mapping{객체 관계 매핑}
- 객체는 객체대로 설계, 관계형 데이터베이스와 매핑을 해준다.
- JPA는 JDBC API와 애플리케이션 사이에서 존재
- 🚨JPA 부분이 중요한게 패러다임 불일치를 해결해준다는 것
- 상속된 것도 알아서 매핑해줘서 CRUD해준다.
- 연관 관계와 객체 그래프 탐색(멤버 꺼내고 멤버에서 team꺼내고)
- 신뢰할 수 있는 엔티티, 계층
- 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
- 성능 최적화 기능
- 1차 캐시와 동일성 보장(4번과 동일): jpa.find를 하면, jpa가 셀렉을 하고, 그 메모리에서 찾게됨. 그래서 같음(트랜잭션 안에서)
- 트랜잭션을 지원하는 쓰기 지연: 트랜잭션이 시작하고 커리를 모아두었다가 한번에 commit을 한다. (버퍼writing)
- 지연 로딩과 즉시 로딩: 멤버를 조회할 때 팀을 조회 많이하는가?(상화마다 이걸 고려, 성능 굿)
- 지연 로딩: 객체가 직접 사용될 때(팀을 자주 불러오지 않을 때. 마지막에 팀을 셀렉)
- 즉시 로딩: 멤버랑 팀이랑 같이 조회를 하네? -> 멤버를 조회하면 팀도 즉시 셀렉
- 근데 보통 지연 로딩으로 해두고 즉시로딩으로 부분부분 바꿔준다.
- JPA 표준 인터페이스에 하이버네이트를 쓴다.
- 트랜잭션이 끝나면 알아서 이름을 바꾸면 저장이 된다.(오..)
'JAVA' 카테고리의 다른 글
[spring] FetchType에 대하여 (0) | 2023.04.13 |
---|---|
[Spring] null 값 처리와 HTTP response (0) | 2023.04.07 |
[JAVA] JAVA Static과 Python global과의 차이점 (0) | 2023.03.10 |
기초문법 1일차 (0) | 2023.03.08 |
JAVA 기본 문법 저장용 (0) | 2022.07.22 |
Comments