반응형

ORM 5

Java ORM JPA과 객체지향 쿼리 사용(JPQL, Criteria, QueryDSL)

개요 예전부터 객체지향 언어인 자바와 관계형 데이터베이스간 패러다임의 불일치로 개발자들이 많은 불편함을 겪여왔다. 객체지향 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성 줄여주는 장치들을 제공 관계형 데이터베이스는 데이터 중심으로 구조화, 집합적인 사고가 필요하고 추상화, 상속, 다형성 같은 개념이 없음 연관관계를 표현할 때 객체는 타 객체 참조 (reference) 로, 관계형 DB 는 외래키로 표현하는 등 연관관계를 표현 객체를 테이블에 맞춰 모델링 class Member { String id; // MEMBER_ID 컬럼 사용 Long teamId; // TEAM_ID FK 컬럼 사용 String userName; } class Team { Long id; // TEAM_ID PK ..

Back-End/JPA 2019.11.04

JPA 객체 연관관계 설정

@ManyToOne다대일(N:1) 관계 매핑 정보다.주요속성 optional : false로 설정 시 연관된 엔티티가 항상 있어야한다 (기본값 : true) fetch : 글로벌 Fetch 전략을 설정한다. cascade : 영속성 전이 기능을 사용한다. targetEntity : 연관된 엔티티의 타입 정보를 설정한다. (거의 사용안함)@JoinColumn외래 키를 매핑할 때 사용한다.주요속성 name : 매핑할 외래키 이름 (기본값 : 필드명 + _ + 참조하는 테이블의 기본 키 컬럼명) referencedColumnName : 외래 키가 참조하는 대상 테이블의 컬럼명 (기본값 : 참조하는 테이블의 기본 키 컬럼명) foreignKey : 테이블을 생성할 때만 사용하는 속성으로 외래 키 제..

Back-End/JPA 2018.12.02

객체 연관관계 VS 테이블 연관관계

ORM에서 가장 어려운 부분으로 손꼽히는 것은 객체의 연관관계를 표현하는 것이다.즉 테이블의 연관관계를 엔티티에 매핑하여 표현하는 것을 의미한다. 연관관계 핵심 키워드방향단방향, 양방향이 있다. 예를들어 회원과 팀이라는 관계가 있을때 회원 -> 팀 또는 팀 -> 회원이런 식으로 한 쪽으로만 참조하는 것을 단방향 관계라 하고 회원 -> 팀 -> 회원 상호 참조하는 것을 양방향이라 한다.방향은 객체에만 존재하며 테이블간 관계는 항상 양방향이다. 다중성[일대다(1:N), 다대일(N:1), 일대일(1:1), 다대다(N:M)]이 있다. 예를들어 팀과 회원의 관계에서한 팀에 여러 회원이 있을수있으니 팀과 회원은 일대다 관계로 볼 수 있다. 반대로 여려 명의 회원이 한 팀에 속하니 회원과 팀은 다대일이다.즉 [팀 1..

Back-End/JPA 2018.12.01

JPA / ORM 이란

JPA란JPA란 Java Persistence API의 약자로 자바 진영의 표준 ORM 기술이다. ORM이란 Object Relational Mapping의 약자로 객체와 관계형 데이터베이스를 매핑하는 기술을 의미한다. 즉 JPA는 자바의 객체와 관계형 데이터베이스를 매핑하는 표준 기술이다. ORM 프레임워크는 객체 / 관계형 데이터베이스 패러다임의 불일치를 개발자 대신 해결해준다. ORM 프레임워크 상에서는 개발자가 어떤 객체를 저장할 때 직접 INSERT문을 작성할 필요가 없다.객체를 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 프레임워크가 대신 적절한 INSERT문을 생성하여 데이터베이스에 저장해준다. 단순히 SQL만 생성해주는 수준에서부터 패러다임 불일치 문제를 전부 해결해주는 수준까지 ..

Back-End/JPA 2018.10.03