일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- while
- Random
- 형변환
- 가변인자
- IBatis procedure
- 25가지 효율적인 sql작성법
- 자바
- 자바 야구게임
- 이클립스
- 다형성
- Login with OAuth Authentication
- Validations
- 다운캐스팅
- 상속
- angular2
- Full text
- 로또
- 상속예제
- 스프링
- 전체
- 업캐스팅
- 추상클래스
- full text indexing
- 전자정부
- 단축키
- 페이징
- jquery
- 야구게임
- 전체텍스트
- Today
- Total
목록JPA (12)
nalaolla
JPA(Java Persistence API)란? JPA는 여러 ORM 전문가가 참여한 EJB 3.0 스펙 작업에서 기존 EJB ORM이던 Entity Bean을 JPA라고 바꾸고 Java SE, Java EE를 위한 영속성(Persistence) 관리와 ORM을 위한 표준 기술이다. 그렇다면 ORM은 무엇일까? ORM(Object Relational Mapping)이란 RDB 테이블을 객체지향적으로 사용하기 위한 기술이다. RDB테이블은 객체지향적 특징(상속, 다형성, 레퍼런스, 오브젝트 등)이 없고 자바와 같은 언어로 접근하기 쉽지 않다. 때문에 ORM을 사용해 오브젝트와 RDB사이에 존재하는 개념과 접근을 객체 지향적으로 다루기 위한 기술이다. JPA를 쓰는 이유? 먼저 JPA를 제외하고 자바를 통..
JPA에 대한 개념은 이해가 갔지만 처음 코드를 접했을 땐 이해 안가는 부분이 많았다. 그래서 잘 정리된 블로그를 참고해 다시 한번 사용법을 알기 쉽게 정리해보고자 한다. Entity 먼저 데이터베이스에 저장하기 위해 유저가 정의한 클래스가 필요한데 그런 클래스를 Entity라고 한다. Domain이라고 생각하면 된다. 일반적으로 RDBMS에서 Table을 객체화 시킨 것으로 보면 된다. 그래서 Table의 이름이나 컬럼들에 대한 정보를 가진다. /** * Created by Itner on 2017. 7. 20.. */ @Entity public class Member { @Id @GeneratedValue(strategy= GenerationType.AUTO) private long id; @Colu..
JPA를 쓰는건 참 편리하고 좋은데, 페이징도 자동으로 해주면 참 좋겠죠? 간단하게 페이징을 할 수 있는 방법을 알아봅니다. 1. JPA Pagination 이번 포스팅은 아래의 포스트들을 기반으로 작성되었습니다. o Spring Boot with STS(Spring Tool Suite) o SpringBoot JPA 예제 미리 읽고 오시면 더욱 좋습니다. :D 2. Create Project 페이징 데모를 위해서 프로젝트를 생성합니다. Name : pagination Type : Gradle Project Packaging : Jar Java Version : 1.7 Language : Java Boot Version : 1.2.4 Group : kr.jdm Artifact : pagination Ve..
양방향 1:N JPA 관계를 맺어봅시다. 준비 이 포스트는 다음과 같은 포스트에서 파생 되었습니다. SpringBoot JPA 예제(@OneToMany, 단방향) SpringBoot JPA 예제(@ManyToOne, 단방향) 2. 양방향(bidirectional) 1:N 관계 1:N 양방향 관계는 이전에 봤던 @OneToMany, @ManyToOne 어노테이션을 사용합니다. 이번에는 살짝 코드를 분리시켰기 때문에 코드량이 많아졌습니다. 2.1. 양방향 1:N 예제 양방향 1:N 예제를 진행합니다. 2.1.1. Table 테이블은 아래처럼 구성 되어있습니다. MariaDB입니다. CREATE TABLE member ( seq INT(10) NOT NULL AUTO_INCREMENT, name VARCHAR..
@ManyToOne 어노테이션을 이용한 단방향 JPA 관계 예제입니다. 준비 이 포스트는 SpringBoot JPA 예제(@OneToMany, 단방향)에서 파생 되었습니다. 예제 코드도 링크를 클릭해서 확인 해보시면 됩니다. @ManyToOne @ManyToOne 어노테이션은 @OneToMany와 크게 다르지 않습니다. 다만 @OneToMany가 1:N이라고 한다면 @ManyToOne은 N:1 관계라고 보면 됩니다. 예를 들머 회원과 핸드폰의 관계에서 핸드폰을 보면 됩니다. 핸드폰은 자신을 소유한 회원이 있습니다. 하지만 이 회원은 핸드폰을 여러개 소지할 수도 있고 하나만 소지할 수도 있겠죠. 회원쪽에서 핸드폰을 바라본다면 @OneToMany 관계지만 핸드폰이 회원을 바라본다면 @ManyToOne이 되는..
@OneToMany 어노테이션을 이용해서 Entity간의 관계를 맺어봅시다. 이 포스팅에서는 단방향 관계(unidirectional relationships)만 다루겠습니다. 단방향 or 양방향 포스트 처음에 언급했지만 Entity간의 관계를 맺을 때에는 방향이 있습니다. 예를 들면 아래와 같은 두 테이블이 있다고 가정합니다. CREATE TABLE member ( seq INT(10) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NULL DEFAULT NULL, PRIMARY KEY (seq) ) COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=1; CREATE TABLE phone ( seq INT(10) ..
SpringBoot에서는 JPA로 데이터를 접근하게끔 유도하고 있습니다. JPA가 무엇인지 알아보고 SpringBoot에서 어떻게 사용하는지도 알아봅시다! JPA가 뭔가요?(What is JPA?) Java Persistence API을 줄여서 JPA라고 합니다. 정확한것은 역시 위키피디아에서 찾아봅시다. The Java Persistence API (JPA) is a Java programming language application programming interface specification that describes the management of relational data in applications using Java Platform, Standard Edition and Java Plat..
을 JPA Repository로 구성하는 법을 알아봅니다. 1. 준비 JPA에 대해 기본적인 사용 방법을 설명해 놓았습니다. 또한 이번 포스팅에서 사용하는 DB는 MariaDB입니다. 2. 예제 실제 소스 코드를 하나씩 구성해 보면서 알아가 봅시다. 2.1. DB Table CREATE TABLE `member` ( `id` INT(10) NULL, `name` VARCHAR(50) NULL, `age` INT NULL, PRIMARY KEY (`id`, `name`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB; MariaDB에 위와 같은 member 테이블을 구축합니다. 이 테이블은 id, name, age를 컬럼으로 가지고 있으며 id와 name을 묶어서 결합 인덱스(..
Overview spring, jpa 기반으로 개발할때 도움이 될 수 있는 java bean mapper 라이브러리를 소개합니다. 아래와 같은 간단한 JPA Entity 객체를 가지고 설명합니다. Http 기반의 api 를 개발할때 필요에 따라 JPA Entity 를 바로 api 의 응답으로 내보내는 경우가 있습니다. 아래는 샘플 코드입니다. 그러면 다음 그림과 비슷한 결과를 응답하게 됩니다. 이럴 경우에 발생하는 순환 참조 문제같은 몇가지는 jackson json 라이브러리가 해결해주기도하지만 일반적으로 아주 작은 프로젝트가 아니라면 추천할만한 방식이 아닙니다. JPA Entity 도메인 데이터와 api 응답 데이터간에 생명주기가 틀리기 때문입니다. 데이터 생명주기 프로젝트의 초기에는 요구사항에 잘 맞..
3단계 - 네임드 쿼리 @Query, @NamedQuery 어노테이션 다른 테이블과의 조인이 필요하거나 where 절이 꽤 복잡한 쿼리라면 method 이름만 가지고 모두 표현하기에는 무리가 있다. 3단계는 복잡한 쿼리를 만드는 가장 쉬운 방법으로 저장소 인터페이스에 method를 생성하고 선언부에 @Query 어노테이션을 사용하는 방법이다. @Query 어노테이션을 사용하는 method의 이름은 2단계 쿼리 메서드규칙의 영향을 받지 않으므로 원하는데로 지으면 된다. 여기서 작성되는 쿼리는 JPQL 로 JPA의 쿼리 문법이다. 옵션을 통해 native SQL로 작성도 가능하다. 이 단계도 쿼리가 잘못 작성되었을 경우에 spring로딩에 실패하면서 프로그램이 실행되지 않는다. 그러나 편집기 상에서의 유효성..