스프링 부트 백엔드 개발 강좌, SQL 문으로 데이터베이스 조작하는 연습하기

스프링 부트(Spring Boot)는 자바 기반의 웹 애플리케이션 개발을 위한 강력한 프레임워크입니다. 본 강좌에서는 스프링 부트를 활용한 백엔드 개발을 다루며, SQL 문을 사용하여 데이터베이스를 조작하는 방법을 익힐 것입니다.

목차

  • 1. 스프링 부트 소개
  • 2. 프로젝트 설정
  • 3. 데이터베이스 연동
  • 4. SQL 문으로 데이터 조작하기
  • 5. CRUD 구현하기
  • 6. 테스트 및 배포
  • 7. 결론

1. 스프링 부트 소개

스프링 부트는 스프링 프레임워크를 기반으로 한 경량 애플리케이션 개발 프레임워크입니다. 설정이 간편하며, 독립 실행형 애플리케이션을 쉽게 구축할 수 있도록 도와줍니다.

스프링 부트의 특징은 다음과 같습니다:

  • 자동 설정 (Auto Configuration)
  • 내장 웹 서버 (Embedded Web Server)
  • 프로덕션 준비 완료 (Production Ready)

2. 프로젝트 설정

스프링 부트 프로젝트를 생성하는 가장 좋은 방법은 Spring Initializr 웹사이트를 사용하는 것입니다. 이곳에서 프로젝트 메타데이터를 입력하고 필요한 종속성을 추가할 수 있습니다.

1. Spring Initializr 방문: https://start.spring.io/
2. Project 선택: Maven Project 또는 Gradle Project
3. Language: Java
4. Group: com.example
5. Artifact: demo
6. Dependencies: Spring Web, Spring Data JPA, H2 Database

3. 데이터베이스 연동

스프링 부트에서 데이터베이스 연동을 위해서는 application.properties 파일에 데이터베이스 정보를 설정해야 합니다.

# H2 Database 설정
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

4. SQL 문으로 데이터 조작하기

SQL 문을 활용하여 데이터베이스의 데이터를 조작하는 방법에 대해 알아보겠습니다. 기본적인 SQL 문에는 SELECT, INSERT, UPDATE, DELETE가 있습니다.

4.1 SELECT 문

SELECT 문은 데이터베이스에서 데이터를 조회하기 위해 사용됩니다. 예를 들어, 다음 쿼리를 사용하여 모든 사용자를 조회할 수 있습니다:

SELECT * FROM users;

4.2 INSERT 문

INSERT 문은 새로운 데이터를 데이터베이스에 추가하기 위해 사용됩니다. 다음의 쿼리는 새로운 사용자를 추가합니다:

INSERT INTO users (username, email) VALUES ('testuser', 'test@example.com');

4.3 UPDATE 문

UPDATE 문은 기존 데이터를 수정하기 위해 사용됩니다. 특정 사용자의 이메일을 변경하는 예시는 다음과 같습니다:

UPDATE users SET email = 'newemail@example.com' WHERE username = 'testuser';

4.4 DELETE 문

DELETE 문은 데이터베이스에서 데이터를 삭제하기 위해 사용됩니다. 사용자를 삭제하는 쿼리는 다음과 같습니다:

DELETE FROM users WHERE username = 'testuser';

5. CRUD 구현하기

CRUD(Create, Read, Update, Delete) 기능을 구현하는 것은 데이터베이스 조작의 핵심입니다. 스프링 부트에서 CRUD를 구현하기 위해 Repository, Service, Controller를 설정할 것입니다.

5.1 Repository

Repository는 데이터베이스와의 상호작용을 정의합니다. JPA를 사용하여 인터페이스를 만들고 기본적인 CRUD 메소드가 자동으로 제공됩니다:

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // 추가적인 쿼리 메서드를 정의할 수 있습니다.
}

5.2 Service

Service는 비즈니스 로직을 처리합니다. Repository를 주입받아 필요한 기능을 구현합니다:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User createUser(User user) {
        return userRepository.save(user);
    }

    // 다른 CRUD 메소드 추가
}

5.3 Controller

Controller는 HTTP 요청을 처리합니다. 적절한 엔드포인트를 설정하여 클라이언트와의 통신을 처리합니다:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.createUser(user);
    }

    // 다른 CRUD 엔드포인트 추가
}

6. 테스트 및 배포

테스트는 애플리케이션의 버그를 발견하고 보완하기 위해 필수적입니다. 스프링 부트에서는 JUnit을 활용하여 단위 테스트를 수행할 수 있습니다.

import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;

public class UserServiceTest {
    @Test
    public void testCreateUser() {
        // 유저 생성 테스트 코드
    }
}

7. 결론

본 강좌에서는 스프링 부트를 사용한 백엔드 개발과 SQL 문을 사용한 데이터베이스 조작 방법에 대해 알아보았습니다. 이 과정을 통해 여러분은 실용적인 웹 애플리케이션을 구축할 수 있는 기반을 마련할 수 있기를 바랍니다.