본문 바로가기
728x90

Back-end/java spring34

[JPA] 연관관계 매핑 기초 객체가 지향하는 패러다임과 관계형 데이터베이스의 패러다임 간의 차이에서 오는 어려움을 해결하는 첫 번째 단계이다. 차근차근하게 정리해 보자. 이번 단계의 목표 객체와 테이블 연관관계의 차이를 이해하자 객체의 참조와 테이블의 외래 키를 매핑 용어 이해 방향(Direction): 단방향, 양방향 다중성(Multiply): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요(???, 처음 보면 c언어의 포인터와 같은 느낌이라고 한다..) 연관관계가 필요한 이유 예제 시나리오 회원과 팀이 있다. 회원은 하나의 팀에만 소속 가능 회원과 팀은 다대일 관계이다. (한 팀에는 여러 명이 속하기 때문) 하지만, 위의 스키마에 .. 2023. 1. 30.
[JPA] 엔티티 매핑 객체와 테이블 매핑 객체와 DB의 테이블을 어떻게 매핑하는지부터 정리해 보자. 매핑을 하는 방법 자체는 매우 간단하다. 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑: @Column 기본 키 매핑: @Id 연관관계 매핑: @ManyToOne, @JoinColumn 먼저 객체와 테이블을 매핑하는 방법부터 알아보자. @Entity @Entity가 붙은 클래스는 JPA가 관리하며, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수로 붙어야 한다. 주의 기본 생성자 필수(파라미터가 없는 public 또는 protected type의 생성자) final 클래스, enum, interface, inner 클래스에는 사용할 수 없다. 저장할 필드에 final key.. 2023. 1. 27.
[JPA] 영속성 컨텍스트에 대한 정리 JPA가 내부에서 어떻게 돌아가는지에 대한 이론적 배경을 공부하기 위해 영속성 컨텍스트라는 개념을 공부해 보자. JPA에서 가장 중요한 2가지 객체와 관계형 데이터베이스를 매핑하기 (Object Relational Mapping) 영속성 컨텍스트 (JPA의 내부 동작과 연관된 개념) 이번에는 영속성 컨텍스트에 대한 개념을 정리해 보자. 영속성 컨텍스트 JPA를 이해하는데 가장 중요한 용어로 "엔티티를 영구 저장하는 환경"이라는 뜻이다. EntityManager.persist(entity object); 영속성 컨텍스트를 이용해 entity를 영속화함을 의미한다. EntityManger와 영속성 컨텍스트를 정리하자면, 영속성 컨텍스트는 논리적인 개념으로 눈에 보이지 않는다. EntityManger를 통해 .. 2023. 1. 21.
JPA 구동 방식과 애플리케이션 만들어보기 JPA 공부를 위한 프로젝트 생성 정보 DB: h2 database build tool: Maven Java: version 11 pom.xml을 이용해 라이브러리를 추가하고, persistence.xml는 JPA 설정 파일에 해당한다. /META-INF/persistence.xml 위치에 설정 파일을 저장한다. persistence-unit name으로 이름을 지정 javax-persistence: JPA 표준 속성을 의미 hibernate: 하이버네이트 전용 속성을 의미(하이버네이트는 JPA 구현체중 하나) property 태그를 이용해 속성 정보를 하나하나 지정하는 것 같다. user: sa password: 없음 url: jdbc:h2:tcp://localhost/~/test dialect는 방언.. 2023. 1. 20.
[JPA] Java 표준 ORM인 JPA란? SQL 중심적인 개발의 문제점 무한 반복, 지루한 코드.. 기획 단계에서 잘못되어 새로운 필드를 테이블에 추가하려 하는 경우, 관련된 모든 쿼리를 전부 변경해야 한다. 하지만, 관계형 데이터베이스를 대부분의 케이스에서 사용하기 때문에, SQL에 의존한 개발을 할 수밖에 없다..!! 개발을 하면서 객체라는 개념을 다양한 저장소에 저장하게 되는데, 이 중 현실적인 대안은 관계형 데이터베이스이다. 개발자는 사실상 객체를 관계형 데이터베이스에 저장하기 위한 mapping 과정을 도맡아 한다고 볼 수 있음 객체와 관계형 데이터베이스의 차이 상속 연관관계 데이터 타입 데이터 식별 방법 상속 부모 테이블을 만들고, 자식 테이블을 만들어 관리하는 방식으로 흉내 낼 수 있고, 이를 슈퍼타입 서브타입으로 만들어 관리한다고.. 2023. 1. 19.
[Spring] 빈 스코프 알아보기 빈 스코프란? 지금까지 살펴본 빈은 스프링 컨테이너와 함께 생성되어, 스프링 컨테이너가 종료될 때까지 유지된다고 배웠다. 그러나, 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 여기서 빈 스코프라는 말은 말 그대로 빈이 존재할 수 있는 범위를 의미한다. 스프링은 다양한 스코프를 지원한다. 싱글톤: 기본 스코프, 스프링 컨테이너의 시작부터 종료까지 유지되는 가장 넓은 범위의 빈 스코프 프로토타입: 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고, 이후에는 더 관리하지 않음. 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request: 웹 요청이 들어오고 나갈 때까지 유지되는 스코프 session: 웹 세션이 생성되고 종료될 때까지 유지되는 스코프 applicati.. 2023. 1. 7.
728x90