JPA - (1) 프로젝트 생성
JPA
JPA란 Java Persistence API의 약자로, Java 객체와 관계형 DB를 맵핑해주는 ORM 프레임워크입니다.
개발환경
앞으로의 포스팅을 통해 JPA를 사용해볼 것인데, 이에 사용할 환경은 다음과 같습니다.
- IDE: IntelliJ Community
- 빌드툴: Gradle
- 언어: Java
- Database: H2
- 프레임워크: Spring Boot
Spring Boot를 왜 사용하는지 의아해 하실 수 있지만, H2를 별도로 설치하지 않아도 되어서 사용하는 것입니다.
프로젝트 설정
Spring Initializr
먼저 아래 링크를 통해 스프링 부트 어플리케이션을 생성해 다운받겠습니다.
프로젝트는 아래와 같이 설정해 주었습니다.
- Gradle Project를 선택합니다.
- 언어는 java를 선택합니다.
- Spring Boot 버전은 2.1.6을 사용합니다.
- Group id 는 com.jyoon.study를 사용합니다.
- Artifact id는 hello-jpa라고 이름 지었습니다.
Dependencies
사이트에서 설정해 줄 수 있는 기본적인 Dependencies는 다음과 같이 설정해 주었습니다.
- Lombok은 Getter와 Setter메소드를 Annotation으로 간결하게 생성해 주기 위해 포함했습니다.
- Web Starter는 JPA가 DB를 생성하고 바로 종료하지 않도록 포함했습니다.
properties파일
IntelliJ를 사용해 프로젝트를 열고, application.properties파일을 열어 다음과 같이 입력해줍니다.
spring.datasource.url=jdbc:h2:file:~/h2/hellojpa
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
위의 설정에서 눈여겨봐야하는 설정은 첫번째 줄 입니다.
h2를 파일 모드로 사용하고, 홈디렉토리의 h2/hellojpa폴더에 db를 생성합니다.
어플리케이션 실행
src > main > java > 패키지명 > HelloJpaApplication.java파일에 가서 재생 버튼을 눌러줍니다.
저의 경우 패키지명은 com.jyoon.study.hello-jpa입니다.
H2 Web Console
이제 아래 url로 접속합니다.
http://localhost:8080/h2-console
위와 같은 화면이 나오면, 그림에 보이는 것 처럼, jdbc:h2:~/h2/hellojpa로 URL을 수정해주고,
application.properties파일에 설정해준 Username과 Password를 입력해줍니다.
테이블 생성
새로운 화면이 나오면 가장 큰 입력창에 테이블을 생성하는 쿼리를 입력해줍니다.
CREATE TABLE MEMBER (
ID VARCHAR(255) NOT NULL,
NAME VARCHAR(255),
AGE INTEGER,
PRIMARY KEY (ID)
);
위는 멤버라는 테이블이고, 아이디, 이름, 나이로 구성되어있습니다.
테스트 데이터 입력
이제 테스트 데이터를 한개 주입시켜 보겠습니다.
아래 Insert쿼리를 사용해 하나의 레코드를 집어 넣겠습니다.
INSERT INTO MEMBER VALUES ('0', 'Johnny', 27);
테스트 데이터 확인
마지막으로 주입시킨 데이터를 확인해보겠습니다.
아래의 Select쿼리를 사용해 데이터를 확인해봅니다.
SELECT * FROM MEMBERS;
아래와 같은 화면이 나오면 성공한 것입니다.
여기까지 프로젝트 설정을 마쳤습니다.
전체소스
이 포스팅의 전체 소스코드는 아래 깃허브 리포의 master 브랜치에서 확인하실 수 있습니다.
https://github.com/ydy1128/hello-jpa
참고자료
- 자바 ORM 표준 JPA 프로그래밍, 에이콘 출판사
- https://www.baeldung.com/spring-boot-h2-database