본문 바로가기
  • GDG on campus Ewha Tech Blog
4-1기 스터디/Spring boot와 JPA 기초

2주차_2팀_정규회의록

by 유일리 2022. 10. 4.

<정규 회의록>

일시 : 2022.10.03

범위 : 자바 ORM 표준 JPA 프로그래밍 - 기본편 00~03

강의 : 김영한의 스프링 부트와 JPA 실무 완전 정복

활동 : 각 멤버가 github에 올린 내용 정리본 읽고 공부한 내용에 대해 발표 및 질의응답

정리 : https://github.com/GDSC-Ewha-4th

 

GDSC-Ewha-4th

GDSC-Ewha-4th has 5 repositories available. Follow their code on GitHub.

github.com

사진 :


<스터디 내용>

1. JPA 소개

from. 유리)

  1. SQL 중심적인 개발의 문제점
  • 현재 데이커베이스 세계는 관계형 db->sql 중심적 개발
  • 문제점 : 무한 반복과 지루한 코드 -> 객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수 없을까?

   2. JPA 소개

  • orm : 객체 관계 매핑
  • jpa : 자바 진영의 orm 기술 표준
  • jpa를 사용해야 하는 이유 : 생산성, 유지보수, 패러다임의 불일치 해결 

2. JPA 시작하기

from. 지은)

[프로젝트 생성]

  1. H2 데이터 베이스 세팅
  • 실습용으로 적당한 데이터 베이스
  1. Maven으로 프로젝트 생성
  • 자바용 프로젝트 관리 도구
  • pom.xml에서 필요한 라이브러리를 추가해서 프로젝트 설정
  • JPA 구현체인 하이버네이트, H2 데이터베이스, JPA xml bind, 등에 대한 dependency 추가
  1. JPA 관련 설정은 persistence.xml에서
  • resources/META-INF/persistence.xml에 위치
  • 데이터 베이스와 관련된 설정도 여기에서..
  1. 데이터베이스의 방언이란?
  • jpa는 DB에 의존하면 안됨 (종속 X)
  • SQL표준과 각각의 DB마다 다른 부분 (->데이터 베이스의 사투리)

[애플리케이션 개발]

  1. 데이터베이스에 필요한 테이블 생성
  2. 엔티티 클래스 생성
  • @Entity, @Id 등의 애노테이션으로 관리

   3. JPA 구동 방식

  • persistence.xml의 설정 정보를 읽어서 persistence 클래스 생성
  • persistence를 통해 EntityManagerFactory 클래스를 생성
  • 데이터 처리가 필요할 때마다 EntityManagerFactory에서 EntityManager을 생성해서 사용
  • 모든 데이터 처리는 트랜잭션 안에서 이루어져야만 함

   4. JPQL

  • 복잡한 데이터 조회는 JPQL을 사용

3. 영속성 관리 - 내부 동작 방식

from. 현정)

영속성 컨텍스트

   1. JPA에서 가장 중요한 2가지

  1. 객체와 관계형 데이터베이스 매핑하기
  2. 영속성 컨테이너

   2. 영속성 컨테이너란 ?

  • JPA 이해하는데 가장 중요한 용어
  • 엔티티 영구 저장하는 환경
  • EntityManager.persist(entity);

   3. 엔티티의 생명주기

  • 비영속 : 영속성 컨테이너와 관계 없는 새로운 상태
  • 영속 : 영속성 컨텍스트에 관리되는 상태
  • 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태
  • 삭제

   4. 플러시 특징

  • 영속성 컨텍스트의 변경내용을 데이터베이스에 반영
  • 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
  • 트랜잭션이라는 작업 단위가 중요 (커밋 직전에만 동기화하면 됨)

   5. 영속성 컨텍스트를 플러시하는 방법

  • em.flush() - 직접 호출
  • 트랜잭션 커밋 - 플러시 자동 호출
  • JPQL 쿼리 실행 - 플러시 자동 호출

'4-1기 스터디 > Spring boot와 JPA 기초' 카테고리의 다른 글

3주차_2팀_정규회의록  (0) 2022.10.27
[Spring boot와 JPA 기초 스터디] 2주차_1팀_정규회의록  (0) 2022.10.26
2주차_3팀_정규회의록  (0) 2022.10.06
1주차_OT  (0) 2022.10.04
1주차 (예시)  (0) 2022.09.28

댓글