스프링 부트 입문#4(toEntity, CrudRepository, Autowired

최동민·2022년 6월 26일
0

Spring 기초부터

목록 보기
4/6

이번 시간에는 받아온 데이터를 데이터베이스에 저장해보겠다.

데이터베이스란 데이터를 관리하는 창고이다. 간단히 줄여 DB라 하는데 쉽게 엑셀 파일 정도라 생각해 볼 수 있다. DB에 데이터를 기록하기 위해서는 어떻게 할까?
우리가 사용하는 스프링부트는 자바를 사용한다. DB는 SQL을 사용하기에 자바를 이해하지 못한다. 그럼 어떻게 자바로 DB에 명령을 할 수 있을까? 이를 위한 도구가 바로 JPA 이다. 프로젝트 만들 때 추가했던 JPA가 자바언어를 DB가 이해할 수 있게 해줄 뿐 아니라 데이터 관리에 편리한 여러 기능까지 제공한다.
이러한 JPA의 핵심도구로는 Entity와 repository가 있다. Entity는 자바 객체를 DB가 이해할 수 있게 잘 규격화 된 데이터인데, 이렇게 잘 규격화 된 Entity는 repository 라는 일꾼을 통해 DB에 전달되고 처리된다. DB 속 테이블에 의해 관리되는 것. DTO를 Entity로 변환하고 repository를 통해서 DB까지 저장시키는 과정을 해보자.

form으로 toEntity를 호출하여 Article이라는 타입의 Entity를 반환해오는 형식으로 작성해보자.

ArticleController 클래스 createArticle 메서드에서 아래 코드 작성

Article article = form.toEntity();

Article과 toEntity가 아직 존재하지 않기에 에러가 난다.
Entity 패키지 생성 후 Article 클래스를 만든다.
Dto와 흡사하게 만든다. DB가 해당 객체를 인식가능토록 @Entity 어노테이션을 붙인다. DB가 알 수 있는 규격화된 Entity가 만들어진 것.
그리고 DB에서 이해할 수 있게 @Column이라는 어노테이션을 추가한다.
기본적으로 Entity에는 대표값을 넣어주는데, 사람으로 따지면 마치 주민등록번호와 같다.

제목도 같고 내용도 같은게 있을 수 있지만, 그것들을 정확하게 구분짓기 위한 대푯값을 id로 지어주고, @Id라는 어노테이션을 붙이며 자동 생성하게 해주는 @GeneratedValue 어노테이션도 추가한다.
생성자와 toString 메서드까지 작성.

이제 컨트롤러에 Article이라는 타입이 인식이 된다. 이제 toEntity라는 메서드를 해결할건데, Dto인 form에서 Entity 객체로 변환하는 메서드를 추가해주겠다.

Article타입을 반환하는 toEntity 메서드를 만든다.
Article은 Entity클래스이기에 그 생성자들을 호출한다.
id 값은 기본 null 값으로.

컨트롤러에 아래 코드를 추가할 것이고, 존재하지 않는 객체이기에 마찬가지로 오류가 뜬다.

Article saved = articleRepository.save(article);

articleRepository가 save라는 메서드를 호출하게 할 것인데, 위에서 만든 Article을 save할 것이고, Article Entity 타입으로 반환할 것.

repository라는 패키지 생성 후 ArticleRepository 인터페이스를 만든다.
우리가 repository를 직접 구현할 수도 있지만 JPA에서 제공하는 repository 인터페이스를 활용하여 쉽게 만들어주도록 하겠다.
CrudRepository 가 제공하는 기능을 그대로 사용하기 위해 CrudRepository를 상속할 것이고, 2개의 파라미터를 넣는다
< 관리대상 Entity , 관리대상 Entity에서 대푯값의 타입 >

이제 Article을 CRUD 하는 기본 동작을 사용할 수 있게 된다.

하지만 우린 아직 ArticleRepository 객체를 만든 적이 없다.
자바를 배운 사람이라면 이렇게 객체를 생성해주어야 한다는 것을 알고 있다.

ArticleRepository articleRepository = new ArticleRepository();

하지만 우린 객체를 직접 생성할 필요가 없다.
스프링 부트가 미리 생성해놓은 객체를 가져다가 자동 연결할 것이다.
@Autowired 어노테이션 사용.
핸들을 오른쪽으로 꺾으면 오른쪽으로 가는 것만 알아도 운전할 수 있듯이 , 핸들축이 어떻게 뒤틀리고 톱니가 맞물려 어쩌구 저쩌구 복잡한 내용까지 알 필요는 없다. 복잡한 건 스프링이 다 알아서 해준다는 것.

이제 DB에 저장이 되는지 확인해보기 위해 출력해보자.


처음에는 dto로 담겨졌고, 이게 Entity로 변환이 되었다. 이 Article을 repository에 저장하도록 일을 시켰더니 결과가 되는 Entity가 saved라는 변수에 반환이 되었다. 이 saved를 출력했더니 id 값이 자동생성되어 id가 1을 가지는 결과를 확인하게 되었다.

profile
코드를 두드리면 문이 열린다

0개의 댓글

관련 채용 정보