Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

seaking110 님의 블로그

JPA 꿀팁 본문

Today I Learned

JPA 꿀팁

seaking110 2025. 2. 10. 11:52

개발 순서

JDBC API - > Mybatis, JDBC -> JPA, Hibernate

 

 

JPA에서 간결한 코드와 동일한 기능을 구현할 수 있는 이유는 JPA의 자동 쿼리 생성 기능 덕분

  • findByActiveTrue() - > SELECT * FROM WHERE active = true라는 쿼리가 자동 생성
  • JPA 엔티티 매핑 기능 덕분에 User 엔티티와 users 테이블의 컬럼이 자동 매핑
  • 파라미터 바인딩도 자동으로 처리
  • 자동 트랙잭션 관리, JPA는 @Transactional이 기본적으로 적용 별도로 관리 필요 x
  • JPA는 내부적으로 EntityManager가 자동으로 커넥션을 관리하므로 개발자가 관리 x

 따라서 생산성이 뛰어난 JPA를 사용하자!

 

만약 복잡한 코드가 필요할 때는 JPQL로 JPA를 매핑해서 사용하면 됨

 

영속성

데이터가 프로그램이 종료되더라도 사라지지 않고 지속되는 것을 의미!

즉 DB에 데이터를 저장하여 프로그램이 종료되어도 유지되므로 영속성이다.

 

저장위치

RAM : 휘발성

DB : 비휘발

 

JPA에서 객체를 저장하고 관리하는 공간이 영속성 컨텍스트

  • Entity를 영구 저장하는 환경이라는 뜻
  • 데이터를 영속성 컨테긋트에 저장
  • DB에 저장x
  • 즉 JPA가 DB에 있는 데이터를 RAM에서 관리할 수 있도록 해주는 공간
  • DB에 접근하면 성능이 떨어지므로!
  • EntityManager를 통해 영속성 컨텍스트에 접근하고 관리
    • 생성 시 그안에 영속성 컨텍스트
  • JPA에서의 영속성 : Entity 객체를 영속성 컨텍스트에 저장하여 지속적으로 관리하는 것
  • JPA가 객체를 보관하는 공간으로 DB와 메모리 사이에서 관리
  • 따라서 성능이 최적화 되고 데이터 일관성을 유지해준다.

 

Hibernate

  • 하이버네이트는 자바에서 데이터베이스와 객체를 쉽게 연결해주는 ORM 프레임워크
  • JPA를 구현한 대표적인 프레임워크
  • JPA의 구현체 중 하나로 실제로 동작하는 ORM 프레임 워크
  • 즉 JPA는 개념, 하이버네이트는 실제 코드를 실행하는 도구

 

ORM

  • SQL에 의존하면 객체를 저장하는 것에 상당한 문제가 생김
  • 그래서 객체 간의 관계 만으로도 설계가 가능해지는 즉 객체 지향적으로 설계가 가능하게 만들어주는 프레임 워크 

엔티티 생명 주기

  • 비영속 -> 영속 - > 준영속 - > 삭제
  • 비영속 
    • 객체 생성
    • 엔티티가 연속성 컨텍스트에 없는 상태
  • 영속
    • em.persist(member)
    • 여기서부터 영속성 컨텍스트가 엔티티 관리
    • db에 저장된 것은 아님 commit되어야 저장
  • 준 영속
    • em.datch(member);
    • 엔티티가 연속 상태일때 영속성 컨텍스트에 저장되었다가 분리되는 상태
    • 영속성 컨택스트가 엔티티 관리 X
    • detach(하나만 삭제) , clear (전부 삭제), close (종료)
    • 준 영속에서 영속으로 가는 방법 merge()
  • 삭제
    • 영속성 컨텍스트에 있는 엔티티 삭제
    • 중요!! DB에서도 해당 데이터가 삭제된다!!

 

총정리

객체 지향 설계 시 가장 중요한 4가지

더보기

추상화, 캡슐화(정보 은닉), 상속, 다형성

JPA

더보기

자바에서 ORM을 쉽게 할 수 있도록 제공하는 표준 인터페이스!

 

Hibernate

더보기

JPA의 구현체 중 하나로 실제로 동작하는 ORM 프레임워크로 데이터베이스와 객체를 쉽게 연결

 

ORM 프레임 워크

더보기

객체 간의 관계 만으로도 설계가 가능해지는 즉 객체 지향적으로 설계가 가능하게 만들어주는 프레임 워크 

 

영속성 컨텍스트

더보기

"JPA가 DB에 있는 데이터를 RAM(메모리)에서 관리할 수 있도록 해주는 공간"

성능 최적화 및 데이터 일관성을 유지하게 도와줌

 

엔티티 생명 주기

더보기

비영속 -> 영속 - > 준영속 - > 삭제

비영속 : 객체 생성 new Member();

영속 : em.persist(member)

준영속 : em.datch(member)

 

'Today I Learned' 카테고리의 다른 글

JPA를 이용한 일정관리 프로그램 트러블 슈팅  (0) 2025.02.13
JPA  (0) 2025.02.10
일정 관리 피드백  (0) 2025.02.07
인증/ 인가  (0) 2025.02.05
트랜잭션과 인덱스  (0) 2025.02.05