✏️ 2023-02-16 Today I Learn

@mitoconcrete · February 16, 2023 · 2 min read

JPA 는 DB를 다루기 위한 인터페이스의 모음들이다. Hibernate는 이 인터페이스를 실제로 사용할 수 있도록 JPA를 implement하여 실제로 사용가능하게 만든 구현체이다. 객체지향도메인모델을 관계형 데이터베이스로 맵핑하기 위한 프레임워크이다.

영속성은 데이터를 생성한 프로그램이 종료되어도 사라지지 않는 특성이다. 어플리케이션 데이터는 일회성이면 안되기때문에 데이터를 DB에 저장하여 영속성을 부여한다.

ORM 객체(Entity)를 DB와 연결하여 관리를 편하게 해주는것 JDBC 는 JPA - DB간의 연결해주는 것. 즉, 개발자가 JPA를 사용하면, JPA내부에 위치한 JDBC API가 DB에 트랜젝션을 보내 수행한다.

application -> (Spring Data JPA(Repository 사용))-> Raw JPA(Entity Manager 사용) -> Hibernate -> JDBC -> DB

연관관계 맵핑 방향 : 단방향, 양방향 다중성 : 일대일, 일대다, 다대일, 다대다 연관관계의 주인이 되는곳에 @JoinColumn을 표시해준다. 연관관계의 주인은 외래키를 관리하는 곳이다.

1:1 관계를 지정하기에 앞서, 이 관계를 굳이 분리시켜야하는지를 고민해봐야한다.

mappedby를 이용해 자식에서 주인을 설정해준다. @ManyToOne 은 항상 연관관계에서 주인이 되기 때문에 mappedby를 사용하지않는다.

다대일관계에서 주로발생하는 에러 다는 일에 해당되는 정보가 저장되어있는데, 일은 다에 대한 정보를 들고 있지 않음

@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.