spring boot db 예제

이번 블로그 게시물에서는 Spring Boot를 사용하여 데이터베이스와의 연동 예제를 만들어보겠습니다. Spring Boot는 데이터베이스와의 연동을 쉽게 처리할 수 있는 강력한 도구입니다.

프로젝트 설정

먼저, Spring Boot 프로젝트를 설정해야합니다. Maven 또는 Gradle을 사용하여 새로운 Spring Boot 프로젝트를 생성하고, 필요한 의존성을 추가합니다. 예를 들어, MySQL 데이터베이스를 사용하려면 spring-boot-starter-data-jpamysql-connector-java를 의존성에 추가해야 합니다.

Maven 설정 예시:

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
</dependencies>

엔티티 클래스 생성

데이터베이스와 상호작용하기 위해 엔티티 클래스를 생성해야합니다. 엔티티 클래스는 데이터베이스 테이블과 매핑됩니다.

예시로, User 클래스를 만들어보겠습니다. 아래는 User 클래스의 코드입니다.

Java 코드 예시:

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "email")
    private String email;

    // getters and setters
}

위의 코드에서 @Entity 어노테이션은 해당 클래스가 데이터베이스 엔티티임을 선언하고, @Table 어노테이션은 해당 엔티티가 매핑될 테이블의 이름을 지정합니다. @Id, @GeneratedValue 어노테이션은 데이터베이스의 기본키를 나타내고, @Column 어노테이션은 엔티티 속성과 데이터베이스 열 사이의 매핑을 정의합니다.

데이터베이스 연결 설정

Spring Boot는 application.properties 또는 application.yml 파일을 이용하여 데이터베이스 연결 및 설정을 관리합니다. 연결할 데이터베이스 종류에 따라 적절한 설정 값을 지정해야합니다.

MySQL 데이터베이스에 연결하기 위해 application.properties 파일에 다음과 같이 설정할 수 있습니다.

application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

위의 설정에서는 spring.datasource.url에 데이터베이스의 URL, spring.datasource.username에 데이터베이스 사용자 이름, spring.datasource.password에 데이터베이스 비밀번호를 입력해야 합니다. 또한, Hibernate를 사용하여 자동으로 테이블을 생성하려면 spring.jpa.hibernate.ddl-autoupdate로 설정해야합니다.

Repository 인터페이스 생성

데이터베이스 연산을 수행하기 위해 Repository 인터페이스를 생성해야합니다. Spring Data JPA는 Repository 인터페이스를 구현하여 데이터베이스 조회, 추가, 수정 등의 작업을 단순화합니다.

Java 코드 예시:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // additional custom query methods if needed
}

위의 예시에서 UserRepository 인터페이스는 JpaRepository를 상속받고 있습니다. 이를 통해 CRUD 작업을 자동으로 처리할 수 있습니다.

서비스 및 컨트롤러 생성

데이터베이스 연산을 위한 서비스 및 컨트롤러를 생성합니다. 서비스는 비즈니스 로직을 담당하고, 컨트롤러는 클라이언트 요청을 처리합니다.

예를 들어, UserServiceUserController를 생성해보겠습니다. 아래는 간단한 예시 코드입니다.

Java 코드 예시:

@Service
public class UserService {
    private final UserRepository userRepository;

    @Autowired
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

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

    public User getUser(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    // additional service methods if needed
}

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

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }

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

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUser(id);
    }

    // additional controller methods if needed
}

위의 코드에서 UserServiceUserRepository를 주입받아 데이터베이스 연산을 수행하고, UserControllerUserService를 주입받아 클라이언트 요청에 응답합니다.

테스트 및 실행

이제 개발이 완료되었으므로 프로젝트를 빌드하고 실행할 수 있습니다. Spring Boot는 내장된 서버를 제공하므로 추가 구성 없이 실행하면 됩니다.

테스트를 위해 API 클라이언트를 사용하여 데이터베이스 연산을 확인할 수 있습니다. Postman과 같은 도구를 사용하거나, 웹 브라우저에서 http://localhost:8080/users와 같은 URL로 요청을 보낼 수 있습니다.

결론

이번 블로그 게시물에서는 Spring Boot를 사용하여 데이터베이스와의 연동 예제를 만드는 방법을 알아보았습니다. Spring Boot의 강력한 기능을 활용하여 빠르고 효율적인 데이터베이스 연동을 구현할 수 있습니다. 프로젝트 설정, 엔티티 클래스 생성, 데이터베이스 연결 설정, Repository 인터페이스 생성, 서비스 및 컨트롤러 생성에 대해 알아보았습니다. 이제 직접 Spring Boot를 사용하여 데이터베이스와의 연동을 구현해보세요!

#spring #SpringBoot #데이터베이스 #연동 #예제