- 데이터 베이스와 JPA
- 데이터 베이스란 쉽게 말하면 데이터를 관리하는 창고로써 모든 데이터를 행과 열로 구성된 테이블에 저장
- DB 프로그램은 mySQL ,오라클, 마리아DB ,몽고DB ,H2 등 다양한 종류가 있음
- JPA 를 사용하면 DB에 자바로 명령을 할수 있음
- JPA 의 핵심 도구로써 엔티티와 리파지터리가 있다
- 엔티티(entity): 자바 객체를 DB가 이해할 수 있게 만든것 이를 기반으로 테이블 생성
- 리파지터리(repository): 엔티티가 DB 속 테이블에 저장 및 관리될 수 있게 하는 인터페이스
- JPA 의 핵심 도구로써 엔티티와 리파지터리가 있다
- 간단히 하자면 DTO를 엔티티로 변환 후 리파지터리를 이용하여 엔티티를 DB에 저장
- DTO를 엔티티로 변환하기
- DTO 를 엔티티로 변환하기 위해 form 객체의 toEntity()라는 메서드를 호출해서 그 반환값을 Article타입의 article 엔티티에 저장
- Article 클래스 만들기
- main/java아래에있는 기본 패키지안에 entity 패키지를 생성후 그 안에 Article 클래스 생성
- Article 클래스에 코드작성
- 이 클래스가 엔티티 임을 선언하기위해 @Entity를 작성
- @Entity 는 JPA 에서 제공하는 어노테이션으로 이 어노테이션이 붙은 클래스를 기반으로 DB에 클래스 이름과 동일한 테이블 이름을 생성
- DTO 코드를 작성 할때와 같이 title, content 필드를 선언 이 두 필들도 DB에서 인식할수 있도록 @Column 어노테이션을 작성하면 두 필드가 DB 테이블의 각 열과 연결
- 마지막으로 엔티티의 대푯값을 넣어야함 대푯값은 @Id 어노테이션은 붙임 이어서 @GeneratedValue 어노테이션을 붙여 대푯값을 자동으로 생성하게함
- @GeneratedValue으로 대표값을 자동으로 생성하게 되면 1,2,3,이런식으로 자동으로 증가
- 제목과 내용이 같은 것이 있더라고 대푯값 id로 다른글임을 구분가능
- Article 객체의 생성 및 초기화를 위해 생성자 와 toString()메서드 추가
- 이 클래스가 엔티티 임을 선언하기위해 @Entity를 작성
- toEntity() 메서드 추가하기
- ArticleForm(DTO 클래스) 에 toEntity() 메서드 추가
- toEntity() 메서드에서는 폼 데이터를 담은 DTO 객체를 엔터티로 반환 전달값은 Article 클래스의 생성자 형식에 맞게 작성
- 리파지터리로 엔티티를 DB에 저장하기
- articleRepository.save() 메서드를 호출해 article 엔티티를 저장. save() 메서드는 저장된 엔티티를 반환하므로 Article타입의 saved 라는 객체에 받아옴
- 필드 선언부에 ArticleRepository 타입의 articleRepository 객체를 선언
- 리파지터리 만들기
- controller 패키지와 동일 레벨에 repository 패키지 생성
- repository 패키지안에 class파일을 생성하지만 이번에는 Interface를 선택한후 ArticleRepository 생성
- JPA 에서 제공하는 리파지터리 인터페이스를 활용해서 만들기 위해 ArticleRepository 다음에 extends Crud를 입력하면 여러 목록이 나타나는데 그중에 CrudRepository<T,ID>를 선택
- 이거는 JPA 에서 제공하는 인터페이스로 이를 상속받아 엔티티를 관리할 수 있다
- 홀화살괄호(<>)을 붙이고 그 안에 2개의 제네릭 요소를 받음
- Article: 관리 대상 엔티티의 클래스 타입
- Long 관리 대상의 엔티티의 대표
- 홀화살괄호(<>)을 붙이고 그 안에 2개의 제네릭 요소를 받음
- ArticleController 파일에 import com.example.firstproject.repository.ArticleRepository;을 임포트하면 오류 표시가 사라짐
- 객체 주입하기
- 스프링 부트에서는 객체를 만들지 안아도 @Autowired 어노테이션을 붙이면 스프링부트가 미리 생성해 놓은 객체를 가져다가 연결함 이를 의존성 주입(DI ,Depandency Injection)이라함
- 데이터 저장 확인하
- DB 데이터 조회하기
- DB에 저장된 데이터는 테이블이라는 틀에 맞춰 관리됨
- 테이블은 행과 열로 이루어져있음
- CRUD 조작은 SQL이라는 언어로 수행 대표적인 SQL문법으로는 INSERT, SELECT,UPDATE,DELETE문이 있음
- H2 DB 접속하기
- resources에 있는 application.properties 파일 열기
- spring.h2.console.enabled=true 작성 이는 H2 DB에 웹 콘솔로 접근할 수 있도록 허용하는 설정
- 스프링 부트를 재시작하고 Ctrl + f 를 눌러 jdbc를 검색한후 그 전체를 복사해서 h2콘솔 JDBC URL 에 붙혀넣기
- 데이터 조회하기
- Article 테이블 클릭하면 SELECT * FROM ARTICLE ARTICLE 이 자동 작성됨
- SELECT 문의 형식은 SELECT 속성명 FROM 테이블명;
- *는 모든 이라는뜻
- 여기서 ARTICLE테이블의 모든 속성을 조회 하라는뜻
- http://localhost:8080/articles/new 에 페이지에 제목과 내용을 작성하고 버튼을 누리면 H2 에 저장이 잘됨
- 직접 데이터를 삽입할 때는 INSERT 문을 사용
- INSERT 문의 형식은 INSERT INTO 테이블명(속성명1 , 속석명2, ...) VALUES (값1 , 값2, ...);
- Article 테이블 클릭하면 SELECT * FROM ARTICLE ARTICLE 이 자동 작성됨
'BE > 스프링 부트 3' 카테고리의 다른 글
5장 게시글 읽기: Read (0) | 2023.11.23 |
---|---|
롬복과 리팩터링 (0) | 2023.11.21 |
게시판 만들고 새 글 작성하기:Create (1) | 2023.11.19 |
뷰 템플릿 페이지에 레이아웃 적용하기 (0) | 2023.11.15 |
MVC 패턴을 활용해 뷰 템플릿 페이지 만들기 (1) | 2023.11.15 |