🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

[인프런 워밍업 클럽 1기 BE] 두번째 발자국

[인프런 워밍업 클럽 1기 BE] 두번째 발자국

이번 주는 학교 과제를 완료하고, 포트폴리오를 작성한다고 강의를 많이 듣지 못했습니다. 23-25강 내용을 요약하고, 추가로 공부하며 느낀 점을 말씀드리겠습니다.

 

학습 내용 요약:

Section 4: 생애 최초 JPA 사용하기

  1. ORM, 스프링 JPA, Spring Data JPA가 무엇인지 이해

  • ORM이 Object Relational Mapping이라는 것은 알고 있었는데, 그래서 구체적으로 어떻게 객체와 테이블을 매핑하는지는 생각해보지 못했습니다.

    • 강의에서 객체와 관계형 DB는 패러다임이 다르다고 하셨고, 대표적으로 연관관계나, 상속을 표현하지 못한다고 하셨습니다.

      • 예를 들어, 테이블 1이 테이블 2과 단방향으로 참조하는 경우는 많으나, 양방향 참조를 하는 경우는 많지 않습니다. 하지만 객체의 경우에는 양방향 참조가 자유롭습니다.

      • 그리고 Join을 이용하면 상속과 비슷한 효과를 낼 수 있겠지만, 객체를 상속하는 것과 완전히 동일하지는 않을 것입니다.

    • 이러한 이유로 객체와 관계형 DB를 짝지어주는(매핑하는) ORM이 등장하게 되었습니다.

      • 추가적으로, 연관관계라는 내용이 JPA에만 해당하는 내용일까 검색을 해 보았는데, 다른 ORM들에서도 연관관계(Association)을 지원하고 있습니다.

      • 다만, 자바의 경우 객체 개념이 매우 중요하기 때문에, ORM의 중요도가 더 크겠다는 생각이 들었습니다.

      • 추가적으로, Persistent 하다는 것도 좀 더 조사해보았습니다.

        • 자바는 객체들을 메모리(RAM)에 저장하는데, RAM은 전원이 꺼지면 저장된 데이터가 사라집니다. 그래서 영구적으로 데이터를 저장하려면 보조기억장치(SSD, HDD)에 저장해야 합니다.

        • JPA에서 Persistent 하다는 것은 영구적으로 저장된다 즉, DB(가 관리하는 보조기억장치)에 저장된다는 것을 의미합니다. 그리고 이때,

          JPA는 어노테이션이나 XML을 활용해 ORM 표준을 정의하므로, DB 종류에 영향을 받지 않습니다.

           

        • JPA는 EntityManager API를 활용해 저장(persist), 업데이트(update), 조회(retrieve), 제거(remove)를 수행합니다.

        • EntityManager는 현재 애플리케이션이 사용 중인 엔티티 객체를 관리하며, DB와 상호작용, ORM 메타 데이터도 관리합니다. EntityManagerFactory에 의해 생성됩니다.

        • 엔티티 객체란, 데이터베이스 테이블의 한 행을 나타내는 자바 클래스입니다. 자신의 필드를 통해 상태를 유지합니다.

        • Reference: https://www.ibm.com/docs/en/was-liberty/nd?topic=liberty-java-persistence-api-jpa

    • 그리고 Spring Data JPA와 JPA가 다르다는 것도 처음 알았습니다 ;)

      • JPA도 물론 객체와 관계형 DB의 매핑을 단순화한 것이지만, Spring Data JPA를 활용하면 더 쉽게 사용할 수 있습니다.

         

  1. Spring Data JPA, JPA, Hibernate, JDBC

  • 강의에서 "Spring Data JPA는 JPA를 사용하고, JPA를 구현한 Hibernate(구현체)는 JDBC를 사용해 DB와 통신한다." 라고 말씀하신 부분이 전체 흐름을 보여주는 것 같습니다.

     

     

스터디에 임하는 자세:

스프링을 공부한지 이제 2주차가 됩니다. 이번 주에는 JPA를 이해하기 위해 ibm 독스를 읽고 생각하는 과정이 너무 즐거웠습니다. 인프런 스터디를 마치더라도 이렇게 깊게 공부하고 글로 정리하는 습관을 유지해야겠습니다. 아직 람다 함수, 메서드 레퍼런스 내용이 생소한데, 다음주에 이 주제에 대해서도 깊게 공부해서 정리하겠습니다.

또, 이번 주에 TDD 책을 공부해보고 싶어서 1장을 공부해보았는데, 완전히 이해는 하지 못한 것 같습니다. 그래도 "테스트를 작성한다 -> 컴파일이 되게 만든다 -> 어떻게든 돌아가게 만든다 -> 리팩토링한다"의 반복이라는 점은 기억하고 있습니다. 그리고 단위 테스트 코드가 통과해서 초록막대를 보는 것도 즐거웠습니다 🙂 지금은 태현님 강의를 완강하고, 이후 미니 프로젝트에 TDD를 적용해봐야겠습니다.


댓글을 작성해보세요.

채널톡 아이콘