본문 바로가기
스프링 부트3

스프링 부트 3와 PostgreSQL 연결하기

by 굿센스굿 2024. 12. 5.
반응형

 

스프링 부트 3는 최신 Java 기술을 활용하여 효율적이고 확장 가능한 애플리케이션을 개발하는 데 최적화된 프레임워크입니다. PostgreSQL은 안정성과 성능이 뛰어난 오픈 소스 관계형 데이터베이스로, 스프링 부트와 함께 사용하면 웹 애플리케이션 개발에 강력한 조합을 제공합니다. 이번 글에서는 스프링 부트 3와 PostgreSQL을 연결하는 방법을 상세히 다룹니다. 실습 코드와 함께 설정 및 활용 방법을 단계별로 설명하며, 다양한 예제를 통해 이해를 돕겠습니다.


1. 프로젝트 환경 설정

먼저, 스프링 부트 프로젝트를 생성합니다. 다음은 프로젝트를 생성하는 단계입니다.

(1) Spring Initializr로 프로젝트 생성하기

  1. Spring Initializr에 접속합니다.
  2. 아래와 같이 프로젝트 옵션을 설정합니다.
    • Project: Maven 또는 Gradle
    • Language: Java
    • Spring Boot: 3.x.x
    • Dependencies: Spring Web, Spring Data JPA, PostgreSQL Driver
  3. "Generate" 버튼을 눌러 프로젝트를 다운로드합니다.

(2) 의존성 추가 확인

pom.xml 파일에 아래와 같은 의존성이 포함되어 있는지 확인합니다.

<dependencies>
    <!-- Spring Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring Data JPA -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- PostgreSQL Driver -->
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. PostgreSQL 설정

(1) PostgreSQL 설치 및 실행

  • PostgreSQL이 설치되어 있지 않다면 PostgreSQL 공식 사이트에서 설치합니다.
  • 설치 후 PostgreSQL 서버를 실행하고, 데이터베이스를 생성합니다.
CREATE DATABASE springboot_postgres;
CREATE USER springboot_user WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE springboot_postgres TO springboot_user;

(2) application.properties 설정

src/main/resources/application.properties 파일에 데이터베이스 연결 설정을 추가합니다.

spring.datasource.url=jdbc:postgresql://localhost:5432/springboot_postgres
spring.datasource.username=springboot_user
spring.datasource.password=password
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update

Tip: spring.jpa.hibernate.ddl-auto 속성은 개발 중 update로 설정하고, 운영 환경에서는 반드시 none으로 설정하는 것을 권장합니다.


3. 예제 코드 작성

이제 PostgreSQL과 스프링 부트를 연결해 간단한 애플리케이션을 만들어 봅시다.

(1) 엔티티(Entity) 생성

PostgreSQL의 테이블과 매핑되는 JPA 엔티티를 생성합니다.

package com.example.demo.entity;

import jakarta.persistence.*;

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

    @Column(nullable = false)
    private String name;

    @Column(unique = true, nullable = false)
    private String email;

    // Getters and Setters
}

(2) Repository 생성

JPA를 활용하여 데이터베이스 작업을 처리하는 Repository 인터페이스를 생성합니다.

package com.example.demo.repository;

import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

(3) Service와 Controller 작성

데이터를 저장하고 가져오는 비즈니스 로직과 REST API를 구현합니다.

Service 클래스

package com.example.demo.service;

import com.example.demo.entity.User;
import com.example.demo.repository.UserRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    private final UserRepository userRepository;

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

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

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}

Controller 클래스

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.web.bind.annotation.*;

import java.util.List;

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

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

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

    @GetMapping
    public List<User> getUsers() {
        return userService.getAllUsers();
    }
}

4. 애플리케이션 실행 및 테스트

스프링 부트 애플리케이션을 실행한 후, 아래와 같은 방법으로 API를 테스트할 수 있습니다.

(1) 애플리케이션 실행

./mvnw spring-boot:run

(2) Postman 또는 cURL로 테스트

  • POST 요청으로 사용자 생성
    curl -X POST http://localhost:8080/users \
    -H "Content-Type: application/json" \
    -d '{"name": "John Doe", "email": "john.doe@example.com"}'
    
  • GET 요청으로 사용자 목록 조회
    curl http://localhost:8080/users
    

5. 추가적인 팁

  1. 트랜잭션 관리: JPA에서 트랜잭션 관리는 중요한 부분입니다. 비즈니스 로직에 @Transactional을 적절히 사용하여 데이터의 무결성을 유지하세요.
  2. 프로파일 관리: application.properties 대신 application-{profile}.properties를 사용하여 개발, 테스트, 운영 환경별 설정을 분리하세요.

마치며

스프링 부트 3와 PostgreSQL을 연결하여 간단한 애플리케이션을 구현하는 과정을 살펴보았습니다. 이 글에서 다룬 내용을 기반으로 다양한 기능을 확장하며 데이터 중심의 애플리케이션을 효율적으로 개발해 보세요! 😊

반응형