현제의 현재이야기

[JAVA SPRING] 0314 TIL 본문

JAVA

[JAVA SPRING] 0314 TIL

현재의 현제 2023. 3. 14. 17:37

  • 새로운 인스턴스이기 때문에 다르다.
  • 그러나 자바 컬렉션에서는 같다. 값을 반환하기 때문
  • 결론: 객체 답게 모델링 할수록 매핑 작업만 늘어난다. -> 그래서 JPA가 나옴

About JPA

  • ORM: Object Relational Mapping{객체 관계 매핑}
  • 객체는 객체대로 설계, 관계형 데이터베이스와 매핑을 해준다.
  • JPA는 JDBC API와 애플리케이션 사이에서 존재
  • 🚨JPA 부분이 중요한게 패러다임 불일치를 해결해준다는 것
    1. 상속된 것도 알아서 매핑해줘서 CRUD해준다.
    2. 연관 관계와 객체 그래프 탐색(멤버 꺼내고 멤버에서 team꺼내고)
    3. 신뢰할 수 있는 엔티티, 계층
    4. 동일한 트랜잭션에서 조회한 엔티티는 같음을 보장
    5. 성능 최적화 기능
      1. 1차 캐시와 동일성 보장(4번과 동일): jpa.find를 하면, jpa가 셀렉을 하고, 그 메모리에서 찾게됨. 그래서 같음(트랜잭션 안에서)
      2. 트랜잭션을 지원하는 쓰기 지연: 트랜잭션이 시작하고 커리를 모아두었다가 한번에 commit을 한다. (버퍼writing)
      3. 지연 로딩과 즉시 로딩: 멤버를 조회할 때 팀을 조회 많이하는가?(상화마다 이걸 고려, 성능 굿)
        • 지연 로딩: 객체가 직접 사용될 때(팀을 자주 불러오지 않을 때. 마지막에 팀을 셀렉)
        • 즉시 로딩: 멤버랑 팀이랑 같이 조회를 하네? -> 멤버를 조회하면 팀도 즉시 셀렉
        • 근데 보통 지연 로딩으로 해두고 즉시로딩으로 부분부분 바꿔준다.
  • 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