내일배움캠프 47일차 TIL - SpringDataJPA

2024. 6. 24. 15:55·⛺스파르타코딩클럽

240624

오늘의 학습

    ●  SpringDataJPA

 


 

Application 스프링 프레임워크, 스프링부트로 만든 기본적인 어플리케이션 레이어를 의미한다.

 

1. SpringDataJPA

JPA를 Spring환경에서 편리하게 이용하기 위해 확장된 JPA이다.

ex) findById , repository 등

2. JPA

Java Persistence API의 약자로 자바 ORM 표준 명세이며, 표준 인터페이스라고 생각하면 된다.

자바에서 데이터베이스에 데이터를 영구히 저장을 도와주는 환경을 제공을 해주는 인터페이스이다.

JPA는 하나의 표준으로써 명세이다. 이걸 구현한 Hibernate나 다른 구현체로 언제든지 갈아끼워서 이용할 수 있다.

3. Hibernate

JPA의 구현체 중 하나이며, Hibernate가 JPA보다 먼저 나왔으며, JPA는 Hibernate를 기반으로 만들어진 명세이다.

하지만 Hibernate만이 JPA를 구현하지는 않고 다른 구현체들도 존재하며, 앞으로도 나올 가능성이 존재한다.

4. JDBC

데이터베이스의 직접적인 연결을 도와주며, JDBC만을 이용해 직접적으로 DB에 쿼리를 날려 DB와 상호작용을 할 수 있다. DB접근과 DB저장의 가장 원시적인 방법이다. 이 JDBC의 기반으로 만들어진게 JPA와 Hibernate이다.

 

ORM(Object Relational Mapping)

Object => 자바 객체

Relational => 관계형 데이터베이스(RDB)

Mapping => 매핑하다

# 자바 객체와 관계형 데이터베이스를 매핑을 해주는 기술

 

JPA 영속성 컨텍스트를 사용하는 이유

객체의 매 변경 사항마다 쿼리문을 날리는건 매우 비효율적이다.

그래서 JPA는 영속성 컨텍스트라는 공간을 만들어서 컨텍스트 내부에 엔티티 객체의 상태를 저장해두고

DB의 Transaction개념을 가져와 작업단위의 커밋 시점에 현재 상태를 DB에 반영하는 로직이 내부적으로 들어가있다.

즉, 인메모리 방식으로 엔티티의 수정 사항을 계속 저장을 해두었다가 DB에 최종적으로 반영하는 느낌이다.

결국은 엔티티 객체를 DB에 효율적으로 저장하기 위해 존재하는 컨텍스트이며, EntityManager가 컨텍스트에 해당 엔티티의 상태를 변경시켜주면서 넣었다 빼주고 DB에 반영해주는 역할을 해준다.

 

EntityManager

영속성 컨텍스트를 관리를 해주는 객체이다.

기본적으로 엔티티 객체를 영속성 컨텍스트에 넣어 영속성 상태로 만들어주기도 하며, 엔티티의 상태를 변경시켜주는 역할을 한다. 결국, EntityManager는 영속성 컨텍스트를 이용하여 엔티티의 상태를 변경시켜주는 것이다.

 

 

# 오늘의 회고

오늘은 프로젝트 마지막 날이며 발표를 맡게되었다. 개인적으로 발표준비를 하면서 노션을 이용하여 발표를 준비하게 되었다. 핵심내용만 가져와 준비를 다 마쳤고, 내일 발표를 하면 된다. 직접 Postman을 이용하여 시연도 해야되서 시간을 좀 잡아먹을것 같아 내용을 최대한 줄이게 되었다.

발표준비를 마치고 개인적으로 SpringDataJPA에 대해 궁금했던 부분을 공부하면서 정리를 좀 하였다.

시간이 좀 부족해 얼마 정리를 못한점이 좀 아쉽다.

 

 

'⛺스파르타코딩클럽' 카테고리의 다른 글

내일배움캠프 49일차 TIL - Spring Security 필터 순서에 따른 인가 문제  (1) 2024.06.26
내일배움캠프 48일차 TIL - 아웃소싱 프로젝트[KPT회고]  (1) 2024.06.25
내일배움캠프 46일차 TIL -  (0) 2024.06.21
내일배움캠프 44일차 TIL - 아웃소싱 프로젝트 설계  (0) 2024.06.19
내일배움캠프 42일차 TIL - 톰캣, 서블릿  (0) 2024.06.17
'⛺스파르타코딩클럽' 카테고리의 다른 글
  • 내일배움캠프 49일차 TIL - Spring Security 필터 순서에 따른 인가 문제
  • 내일배움캠프 48일차 TIL - 아웃소싱 프로젝트[KPT회고]
  • 내일배움캠프 46일차 TIL -
  • 내일배움캠프 44일차 TIL - 아웃소싱 프로젝트 설계
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (152)
      • 🎓방송통신대학교 (26)
        • 🖥️컴퓨터과학과 (1)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • ⚙️컴퓨터의 이해 (11)
        • 🏛️세계의정치와경제 (3)
      • 📚Computer Science (0)
      • 🛠️Backend (3)
      • ☕Java (20)
        • 📝Java Programming (19)
        • 🧩Java Design Pattern (1)
      • 🌳Spring (9)
        • 🌱Spring Framework (6)
        • 🌱Spring Security (1)
      • ⚡Python (13)
      • 🛢️Database (0)
      • 🌿GitHub (1)
      • 🌐 Network (7)
        • 📜HTTP (7)
      • 🚀DevOps (1)
      • Algorithm Problem Solving (2)
      • Data Structure (1)
      • JavaScript (1)
      • ⛺스파르타코딩클럽 (65)
      • 잡담 (1)
      • 정리가 필요한 글 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    컴퓨터의 이해
    클라우드
    유비쿼터스 컴퓨팅
    spring
    방통대
    자바
    파이썬
    입출력
    세계화
    유비쿼터스
    방송통신대학교
    다형성
    Java
    방송대
    유비쿼터스 컴퓨팅개론
    스프링
    컴파일러
    클래스
    Spring Framework
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
내일배움캠프 47일차 TIL - SpringDataJPA
상단으로

티스토리툴바