스프링 부트, 입문! 08

윤현우·2022년 11월 18일
0

스프링 부트, 입문!

목록 보기
5/18
post-thumbnail

저번 강의에서는 브라우저에서 입력 받은 데이터를 컨트롤러로 받아오는 공부를 했다.
요번 강의에서는 받아와진 데이터를 JPA를 사용하여 DB에 저장하는 방법을 공부 할 것이다.


JPA

JPA란 자바 진영에서 ORM(Object-Relational Mapping)기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. JPA를 구현한 대표적인 오픈소스로는 Hibernate가 있다.

  • 관계형 데이터 베이스와 객체 지향 프로그래밍 언어는 패러다임이 서로 다르기 때문에 이를 중간에서 일치시켜 주는 기술이다.
    • 개발자는 객체지향적으로 프로그래밍을 하고
    • JPA는 이를 관계형 데이터베이스에 맞게 SQL을 대신 생성하여 실행한다.
      • SQL에 종속적인 개발을 할 필요가 없게 된다.

ORM

ORM이란 우리가 일반적으로 알고있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑한다는 뜻이며, 기술적으로는 어플리케이션의 객체를 RDB테이블에 자동으로 영속화 해주는 것이다.


DB는 SQL이라는 언어를 사용한다. 그래서 자바언어를 인식하지 못하는데, 우리가 자바라는 언어를 이용하여 SQL언어를 사용하지 않고 DB를 사용하게 해준다. 또한 데이터 관리에 편리한 여러 기능을 제공한다.(Entity, Repository)

Entity는 자바 객체를 DB가 이해할 수 있게 규격화된 데이터이다. 이 Entity는 Repository를 통해 DB에게 전달되고 처리된다.

따라서 데이터를 DTO로 저장시키고 DTO를 Entity로 변환하고, Repository를 통해서 DB에 저장시킨다.(중요)


Dto -> Entity 변환

Controller 작성

우선 지난 시간에 Controller에 Dto로 변환시킨 데이터를 Entity로 변환시켜준다.

src/main/java/com/example/springstudy/controller/articleController.java


Entity 클래스 생성

entity라는 패키지를 생성해 Entity클래스를 생성한다.

Entity 클래스에 DB가 데이터를 인식할 수 있게 해주는 변수를 생성한다.

src/main/java/com/example/springstudy/entity/Article.java

@Entity

  • DB가 해당 객체를 Entity로 인식하게 하는 어노테이션이다.

@Id

  • PK(Primary Key)를 지정해주는 어노테이션

@GeneratedValue

  • 새로운 레코드(데이터)가 생성될 때마다 자동으로 PK에 +1을 해주는 어노테이션

@Column

  • DB 테이블에 연결 시켜주는 어노테이션

Dto -> Entity 변환 메서드 추가

src/main/java/com/example/springstudy/dto/ArticleFrom.java

  • return 값을 Entity클래스의 생성자로 받아 Dto에서 Entity로 변환시켜준다.

DB에 데이터 저장하기

src/main/java/com/example/springstudy/controller/articleController.java

@Autowired

  • 스프링 부트가 미리 생성해 놓은 객체를 가져다가 연결
  • 객체를 구현할 필요가 없다.

private ArticleRepository articleRepository;

  • ArticleRepository 객체를 사용하기 위해 선언

Repository 클래스 생성하기

src/main/java/com/example/springstudy/repository/ArticleRepository.java

CrudRepository

  • 내 Repository에 상속할 미리 만들어진 Repository
  • CRUD의 기본 동작들을 미리 코드화 해놓은 인터페이스
    -> 추가 코드 없이 CRUD형식을 사용할 수 있다.

<Article, Long>

  • CrudRepository를 사용하기 위한 파라미터
  • 사용할 Entity와 기본키 타입을 파라미터로 넣어야 한다.

데이터 저장 확인

ArticleForm{title='가가가가', content='11111'}

  • Dto에 잘 저장된 것을 확인 할 수 있다.

Article(id=null, title='가가가가', content='11111'}

  • Entity로 변경이 된 것을 확인 할 수 있다.

Article(id=1, title='가가가가', content='11111'}

  • 이 Entity를 DB에 저장하라고 Repository에 시켰더니 Id가 자동으로 1이 되면서 결과가 되는 Entity가 반환이 되었다.

References(참고자료)
https://www.inflearn.com/course/%EA%B0%9C%EB%85%90%EC%8B%A4%EC%8A%B5-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-%EC%9E%85%EB%AC%B8

profile
개발자가 되는 그날까지

0개의 댓글