전체 글 (16) 썸네일형 리스트형 [JPA] 상속관계 매핑, mappedSuperclass 상속관계 매핑이란 ? 관계형 데이터베이스는 상속 관계가 존재하지 않는다. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사하다. 상속관계 매핑 : 객체의 상속, 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 JPA에서 기본전략으로 하나의 테이블(Rollup)이 생성된다. 슈퍼타입 서브타입 관계 주요 어노테이션 @Inheritance(strategy = InheritanceType.XXXX JOINED : 조인 전략 SINGLE_TABLE : 단일 테이블 전략 TABLE_PER_CLASS: 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name = "DTYPE") 어떤 엔티티 객체와 연결되는지 확인하기 위해 사용한다. 조인전략에서 필수는 아니지만(테이블을 조인하여 확인할 수 있다.. [JPA] 엔티티 매핑 3 엔티티를 매핑하는 어노테이션은 4가지의 종류가 존재한다. @ManyToOne @OneToMany @OneToOne @ManyToMany 1. @ManyToOne, @OneToMany 테이블의 연관관계를 살펴보면 MEMBER, TEAM 테이블이 존재하고, MEMBER 테이블은 TEAM의 TEAM_ID를 FK를 가지고 있다. 위의 관계를 Entity로 설계하면 Member 객체는 Team을 참조한다. 연관관계의 주인은 Member 객체이다. @Entity 이 클래스를 JPA의 Entity로 설정한다. @SequenceGenerator 시퀀스 설정 설정된 시퀀스는 @GenerationType을 통해 ID를 설정한다. name : @GenerationType의 generator 속성을 통해 지정할 이름 sequ.. [JPA] 엔티티 매핑 2 객체와 관계형 데이터베이스의 패러다임 차이 객체는 참조를 통해 연관관계를 같는다 class Member { private Long id; private String name; private String age; private Team team; // 참조를 통한 연관관계 } class Team { private Long id; private String name; } 데이터베이스는 PK와 FK를 통해 연관관계를 같는다. 예시 - 객체형 데이터베이스를 기준으로 설계 객체를 테이블에 맞추어 데이터 중심으로 모델링하면 협력 관계를 만들 수 없다. class 생성 // * Member class @Entity @SequenceGenerator( name = "MEMBER_SEQ_GENERATOR", sequen.. [JPA] 엔티티 매핑 1 객체와 테이블 매핑 @Entity @Entity가 붙은 클래스는 JPA가 관리하고, 엔티티라 한다. JPA를 사용해서 테이블과 매핑할 클래스는 @Entity가 필수이다. @Entity class Member { // ... code } 주의 기본 생성자 필수(파라미터가 없는 public 또는 protected 생성자) final 클래스, enum, interface, inner 클래스 사용 x 저장할 필드에 final 사용 x 속성 정리 속성 : name JPA에서 사용할 텐티티 이름을 지정한다. 기본값 : 클래스 이름을 그대로 사용한다(예 : Member) 동일한 클래스의 이름이 있는 경우 사용하지만, 권장하지 않는다. @Table @Table은 엔티티와 매핑할 테이블을 지정한다. 속성 속성 : nam.. [JPA] 기본 사용 방법 pom.xml 설정 추가 org.hibernate hibernate-entitymanager 5.3.10.Final com.h2database h2 2.1.214 javax.xml.bind jaxb-api 2.3.0 hibernate-entitymanager를 추가하면 JPA에 필수적인 라이브러리를 가져올 수 있다. 또한 버전의 경우 프로젝트를 만들 때 사용한 spring버전에서 지원하는 hibernate버전을 가져오면 된다. 지원하는 hibernate의 버전의 경우 spring 사이트에서 확인할 수 있다. javax.xml.bind의 경우 JDK 11 이후에서 JAXB 라이브러리를 내장하고 있지 않기 때문에 발생한 에러를 해결하기 위해 의존성을 추가한다. 출처 : https://roadrunner.ti.. [JPA] JPA 사용 이유 및 개념 정리 JPA란? Java Persistence API 자바 진영의 ORM 기술 표준 JPA는 애플리케이션과 JDBC 사이에서 동작한다. 표준 명세이다 인터페이스의 모음 JPA 표준 명세를 구현한 3가지 구현체 하이버네이트, EclipseLink, DataNucleus ORM이란? Object relational mapping - 객체 관계 매핑 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑 대중적인 언어에는 대부분 ORM 기술이 존재한다. JPA를 사용하는 이유 SQL 중심적인 개발에서 객체 중심으로 개발 : https://my-dev-record.tistory.com/12 생산성 : 객체 중심으로 개발하게 되므로 매핑에 투자해야할 시간이 줄어든다. .. [JPA] JPA 사용 전 객체지향 프로그래밍의 불편함 java는 관계형 언어이고, 데이터베이스도 관계형 데이터베이스인데 sql에 종속적인 시스템이 옳은가? JPA를 사용하는 이유 1. 상속관계 위의 ERD에서 Item과 Album 데이터를 입력 할 때 mybatis를 사용한다면 2개의 쿼리가 필요하다. INSERT INTO ITEM(ID, NAME, PRICE) VALUES(...); INSERT INTO ITEM(ITEM_ID, ID, ARTIST) VALUES(...); 조회 할 때는 최소 세개 이상의 select 쿼리가 필요하다. -- Item, Album 조회 SELECT A.*, B.* FROM ITEM AS A LEFT JOIN ALBUM AS B ON A.ID = B.ID; -- Item, Movie 조회 SELECT A.*, B.* FROM .. session, jwt, cookie cookie 사용자가 사이트를 방문할 때 서버에서 브라우저에 데이터를 넣을 수 있다. 사용자가 사이트를 방문했다고 가정하면, 사용자의 브라우저에서 서버에 요청(Request)을 보내고(브라우저 -> 서버), 서버는 브라우저에게 응답(Response)을 보낸다.(서버 -> 브라우저) 서버에서 응답할 때 요청한 데이터 또는 페이지가 존재하는데, 이 응답 안에 쿠키가 존재할 수 있다. 쿠키의 특징으로는 아래와 같다. 저장되어진 쿠키는 사용자 브라우저에서 존재한다. 사용자가 요청(Request)할 때 쿠키 또한 같이 전달된다. (자동) 쿠키는 도메인이 같은 경우만 전달된다(네이버에서 만든 쿠키는 네이버 서버에 요청할 때만) 유효기간이 존재한다. 인증 정보, 언어 정보 등 다양한 데이터를 저장할 수 있다. 데이터.. 이전 1 2 다음