JPA 프로그래밍 책 읽기 - 시작

Jin·2022년 2월 13일
0

자바 ORM 표준 JPA 프로그래밍 으로 공부를 시작하였습니다. 어떻게 하면 작은 단위로 책의 내용을 공부할 수 있을지를 고민하다가 한가지 전략을 세웠습니다. 잘될지 모르겠지만, 용기를 가지고 해보고, 피드백을 통해 나아지는게 좋을것 같습니다.

일단, 지식은 활용할때 배워야 효율이 가장 좋다는 전제를 잡았습니다. 그래서 책을 읽는 동안에는 내용을 흡수하기 보다, 밑그림과 스토리를 통한 인덱싱에 우선순위를 두었습니다. 세부적인 건 필요할때 찾아보자는 생각으로 말이죠. 물론, 논리적 관계가 복잡하여 선행적인 학습이 필요할 경우, 유효한 전략은 아닌 것 같습니다.

밑그림과 스토리를 파악하려면 어떻게 해야할까요? 일단은 세부적인 내용보다 목차에 중점을 두어야 할 것 같습니다. 각 장의 결론 및 요약 부분을 먼저 읽는 것도 좋겠군요. 해당 챕터에서 꼭 필요한 문장만이 들어 있을 것 같습니다. JPA 나 ORM 에 대한 간략한 영상도 스토리에 도움을 줄 것 같습니다.

여기서 주의할점이 있는데, 확신하지 말기 입니다. 디테일이 부족한 상황에서는 잘못된 가정을 사실로 착각하는 일이 많이 일어나서, 오히려 모르던 상태보다 더 안좋아지는 경우가 생길 수 있습니다. 밑그림이나 가정은 언제든 뒤집어 질 수 있습니다.

일단은 각 장의 간략한 아이디어들을 캐치해서 요약해보도록 하겠습니다. 이것도 전부다 하면 힘드니, 6장까지 먼저 하도록 하죠.

  1. 패러다임의 차이
    • 객체와 객체간의 관계가 테이블로는 어떻게 표현되는지
    • 객체지향 vs 관계형 데이터 베이스
    • 실질적으로 책에서 다루는 내용은 이러한 불일치를 해결하는 방법들
    • 목차를 보면, 객체 매핑, 연관관계 매핑, 상속 매핑 등이 나오고 위의 문제를 어떻게 해결하는지가 서술됨
  2. 객체 - 테이블 대응 연습
    • 간단한 실습
  3. 영속성 관리
    • 영속성 컨텍스트 -> Stream API 가 떠오름, 연산을 확립한후에 실제 데이터 베이스에 flush
    • '지연'이라는 아이디어는 함수형 프로그래밍에서는 선언부와 연산부를 나눌때도 쓰임.
    • 결은 다른것 같지만, proxy 가 떠오르기도 한다.
  4. 엔티티 매핑
    • 객체와 테이블 매핑
    • 기본 키 매핑 -> 직접 지정, DB 에서 지원하는 것 지정
    • 스키마 자동 생성 -> 객체를 통해 DB 스키마 생성
  5. 연관관계 매핑 기초
    • 단방향 매핑과 양방향 매핑
    • 연관관계의 주인
    • 양방향은 반대방향으로 그래프 탐색 기능 추가 된 것
    • 단방향, 양방향 매핑을 이해하면 일대다, 다대일, 일대일, 다대다 모든 관계를 어렵지 않게 사용 가능.
  6. 다양한 연관관계 매핑
    • 일대다, 다대일, 일대일, 다대다

회고

밑그림은 언제나 즐거운것 같습니다. 자유롭게 뇌피셜을 생성하는 재미가
있기 때문이죠. 오늘의 핵심은 1 장에서의 문제상황 제시였다고 생각합니다. 객체와 관계형 데이터베이스간의 패러다임 불일치를 구체적인 예시를 들면서 이야기하고 있고, 이 예시들이 그대로 뒷장들의 목차가 되기 때문입니다.

구체적인 학습에서 노력이 필요할 것 같은 부분은 5장의 연관관계 매핑이군요. 저자도 양방향 관계와 단방향 관계를 잘 이해하는 것이 다른 관계들의 이해에도 도움을 준다고 이야기 하고 있습니다. 이 부분을 읽으면서, 새삼스레 객체지향 어플리케이션 설계에서 요구되는 것들에 대해서 생각하게 되기도 했습니다. 여기서 다루는 것은 연관관계를 다루는 기술이고, 연관관계를 어떻게 설계하는가는 다른 영역이니 말이죠.

가장 흥미로운 부분은 3 장의 영속성 관리 부분이었습니다. Java 의 Stream API 라던지, 테스트 주도 개발의 연산 메타포 등의 아이디어가 떠올랐기 때문이었습니다. 물론 지연 실행 뿐만아니라, 캐싱등의 다른 기능을 처리하기도 해서 프록시가 떠오르기도 했습니다.

다음에 수행할 작은 단계로는 어떤 것이 좋을까요? 흥미있는 것은 3장이지만, 2장의 실습 부터 진행해야 학습의 구체성을 빠르게 가져갈 수 있을 것 같습니다.

0개의 댓글