P4-1] Ch 01. 학습 전 기초 사항

uuuu.jini·2022년 1월 21일
0
post-thumbnail

목차

  1. JPA 소개
  2. 스프링 부트 프로젝트 생성
  3. Lombok 알아보기
  4. H2 dB 및 로그 설정

github 링크

1. JPA 소개

JPA는 Java Persistence Api 의 약자이다.

ORM (Object Relational Mapping)

데이터를 저장하기 위해 사용하는 것이 DataBase 이다. 우리가 객체지향 설계에서 사용하는 기본 단위는 Object이다. 객체와 데이터베이스 사이의 관계를 연결해주는 것을 ORM 이라고 한다. 우리가 정의한 객체를 사용하여 데이터베이스를 편리하게 연동시켜주는 기능을 제공한다. 즉 우리가 일일히 필드들을 객체 속성과 연결해야 할 필요가 없게 해주었다.

JPA (Java Persistence Api)

데이터에 접근하기 위한 api 규격을 정의한 것으로 ORM이 전체적이 개념의 정의라면 JAP 는 좀 더 구체적으로 그 기능을 정의한 것이다. 명칭이 Jakarta Persistence로 변경되었다.

Hibernate

JPA 에 대한 실제 구현 클래스를 모아놓은 것 즉 , implementation 이다.

Spring Data JPA

spring에서 hibernate를 조금 더 간편하게 사용하기 위하여 추상 객체를 한번더 감싸 만들어 놓은 것이다. 실제 Entity manager에 접근하지 않고 쉽게 사용할 수 있다.


2. 스프링 부트 프로젝트 생성

새 파일 생성 단축키 ALT+insert
테스트 코드 작성 단축키 Ctrl+Shift+T

이전에 배운 내용 복습하는 느낌이었다.


3. Lombok 알아보기

JPA의 필수 도구이다. 최근의 자바 코드에서 롬복은 필수이다. getter와 setter를 많이 만들어야 하는 JPA의 특성상 꼭 필요하다고 생각한다. 특히 여러개의 필드(컬럼)가 생성이 될 경우 편리하게 사용할 수 있다.

@Getter 와 @Setter

기본 구조가 필드 변수와 getter와 setter를 만들어야 한다. 만드는 방법에는 3가지가 있다.
1. 직접 코드를 작성한다.
2. code generate 를 사용한다.
3. lombok 을 이용한다.

getter 와 setter를 자동으로 생성해준다. dependencies에 의존성 추가 되어있는 경우 쉽게 사용할 수 있다. 클래스 scope에서 할 경우 모든 필드에 적용이 되며 , 필드 변수 scope에서 할 경우 해당 필드 변수에만 적용된다. 이렇게 롬복을 사용하면 게터와 세터를 자동으로 생성하여 코드를 만들어 준다. 우클릭->롬복->게터/세터를 클릭할 경우 실제 추가된 코드를 확인할 수 있다. (디롬복[Refactor->Delombok]을 통하여 삭제할 수 있다.)

@ToString

toStting 메소드를 만들어주는 어노테이션이다. toString 메서드가 꼭 필요한 이유는 toString메서드 없이 해당 객체를 출력할 경우 객체의 해쉬값이 출력되지만 메서드가 존재할 경우 해당 객체의 내용을 출력해주거나 ( 개발자가 설정한 내용을 ) 출력하여 줄 수 있게 해주는 메서드이다. 그러므로 원하는 객체의 내용을 출력하기 위해 해당 메서드가 필요하다. 메서드를 정의하는 방법에는 override로 직접 구현해주는 방법과 @ToString 어노테이션을 사용하는 방법이 있다.

생성자 관련 어노테이션

@NoArgsConstructor

아무 인자를 받지 않는 기본 생성자이다. JPA 에서 필수적으로 필요한 어노테이션이다. ( 아무 인자를 받지 않는 생성자가 필수 적이다.)

@AllArgsConstructor

모든 인자를 받는 기본 생성자이다.

@RequiredArgsConstructor

필수 변수(final / NonNull)를 인자로 받는 생성자이다. 필수 인자가 없을 경우 @NoArgsConstructor와 동일하게 동작한다. ( 만약 필수 변수가 없는 경우에 NoArgs 와 RequiredArgs를 둘다 작성할 경우 오류가 난다. 이미 생성자가 존재합니다 )

디롬복시 모든 생성자가 자동으로 생성된다.

@EqualsAndHashCode

equals와 hashcode 자동 오버라이딩 해주는 어노테이션이다.

@Data

getter와 setter, toString 메서드를 생성해주는 어노테이션이다. 가장 많이 사용하는 어노테이션이다.

@Builder

필요한 값을 빌더 형식으로 생성하기 위한 기능을 제공하는 어노테이션이다.


4. H2 DB 및 로그 설정

H2 In-Memory DB

자바 기반의 경량화된 관계형 DataBase이다. 파일로 저장하여 실제 디비 처럼 유지하고, 메모리 디비로 사용하여 실제 인스턴스가 동작하는 시점에만 유지한다. 프로젝트 초기시 테스트 디비로 사용하며, 유지보수 기간에는 juit 테스트용 디비로 많이 사용한다. JPA 집중을 위해 H2 DB를 사용하며, 이후에는 mysql을 사용할 것이다. dependencies에 h2 주입하여야한다. 최근에는 application properti 보다는 yml 파일을 주로 사용하는 추세이다. 좀더 계층적인 구조를 잘 들어낸다. (yaml파일과 동일하다.)

apllication.yml 파일에 밑의 내용을 작성한 뒤 서버를 실행시킨다.

실행시킨 경우 log에 밑의 정보가 확인된다.

localhost:포트번호/h2-console로 접속시 밑의 화면을 확인가능하며 위의 사진의 하이라이트 부분을 jdbc url 로 작성후 connect할경우 웹에서 db를 다룰 수 있게 된다.

IntelliJ 에서 db 접근

오른쪽 메뉴의 databases-> +버튼 -> data sources -> h2 추가하면, console창이 생성되고 해당 콘솔창으로 쿼리를 실행 시킬 수 있다.

profile
멋쟁이 토마토

0개의 댓글