저고데

[Spring Boot]3. 데이터베이스를 연결해보자 본문

Spring Boot

[Spring Boot]3. 데이터베이스를 연결해보자

진철 2023. 12. 24. 16:11
728x90
반응형
굳이 데이터베이스를 사용하는 이유는?

백엔드에서 할 일은 사용자가 입력한 내용을 바탕으로 데이터를 정리하거나 다른 곳으로 전달하는 것이다.

따라서 데이터베이스는 백엔드 개발자가 다뤄야할 줄 아는 필수 요소이다.

계속 언급하듯이, 데이터베이스에 연결하고 연결을 종료하는 내용은 반복적인 행위이기 때문에 스프링 부트는 이를 자동화시켜서 개발의 생산성과 효율성을 높혀준다.

그렇다면 java에서의 ArrayList로도 데이터를 잘 저장할 수 있는데, 왜 굳이 데이터베이스를 사용하는 것일까?

ArrayList로 어플리케이션을 배포했다고 하자, 실행 중인 어플리케이션에 장애가 발생한다면 기존에 ArrayList에 저장된 내용들이 모두 사라질 것이다.

따라서 회복탄력성이 매우 떨어진다는 단점이 있다.

뿐만 아니라, 어플리케이션의 규모를 증가하거나 운영하는 데 있어서 매우 불편한 점이 많기 때문에 데이터베이스를 따로 사용하는 것이다.

 

JPA. 스프링에서의 약방의 감초.

JPA, Java Persistance API의 줄임말이며, 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세이다.

java에서 DB를 접근할 때, 사용하는 방법이라고 보면 된다.

데이터베이스를 접근할 사용되는 SQL 문법은 자바의 문법과 다르기 떄문에 호환되지 않고 자바 언어와 SQL 번갈아서 사용하는 것은 불편하다.

따라서 JPA는 이를 보완하기 위해 탄생한 것으로 기본적인 SQL 코드를 실행해준다.

객체를 메모리에 넣듯이 JPA 객체를 사용하면, JPA 중간에서 데이터베이스에 SQL 전송하고 값을 가져온다.

 따라서 JPA 사용하면, SQL 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환할 있고 개발 생산성을 높일 있다는 장점이 있다.

데이터베이스는 여러 종류가 있지만 특히 관계형 데이터베이스를 많이 사용해본 것 같다. (설계가 어렵지만, 깔끔한 게 큰 장점이랄까.)

MySQL, PostgreSQL 등 다양한 DB가 있지만, java로 작성된 H2는 실행 속도가 빠르다는 장점이 있다.

 

@Entity, @Id

대부분의 DB는 JPA가 호환되기 때문에 JPA 어노테이션을 사용하여 접근한다.

대표적으로 @Entity인데, 객체가 테이블이 되도록 매핑시켜야 하기 때문에 Entity 매핑할 때, 사용한다.

그리고 기존 primary key에 해당하는 고유값을 DB의 ID 필드로 표시하기 위해서 @Id 어노테이션과 같이 사용한다.

하지만 @Entity, @Id만으로 클래스를 생성했을 때에는 기본 생성자가 필요하기 때문에, 모든 멤버 변수를 변경 가능하게 수정 후, 기본 생성자를 생성한다.

 

DB 연결하기. by Respository

앞서 @Entity를 통해 저장하고 조회할 수 있는 JPA 엔터티를 정의했다면, 이제는 본격적으로 DB에 연결해야한다.

스프링을 사용하지 않던 기존에는 DB를 연결하고 조회하고 열기 위해서는 PersistenceUnit, EntityManagerFactory, EntityManager API 등 여러 과정을 반복적으로 수행했어야 했다.

하지만 스프링 부트에서는 Respository를 통해 이러한 여러 반복 과정을 간단하게 만들어준다.

Respository는 CrudRepository, JpaRepository 등이 있는데, JpaRepository가 좀 더 넓은 개념이다.

둘 다 Repository 인터페이스로부터 상속받아서 사용할 수 있다.

 

이후의 자세한 과정은 코드가 많으므로 깃허브를 참고하자 !

728x90
반응형