[java] Java Jersey에서 데이터베이스 연결 관리하는 방법은?

Java Jersey는 RESTful 웹 서비스를 개발하기 위한 프레임워크로, 데이터베이스와의 연결 관리도 중요한 부분입니다. 이 글에서는 Java Jersey에서 데이터베이스 연결을 어떻게 관리할 수 있는지 알아보겠습니다.

1. 데이터베이스 드라이버 의존성 추가

먼저, Java 프로젝트에 데이터베이스 드라이버 의존성을 추가해야 합니다. 대부분의 데이터베이스 드라이버는 Maven, Gradle 등의 의존성 관리 도구를 통해 간편하게 추가할 수 있습니다. 예를 들어, MySQL 데이터베이스를 사용한다면 다음과 같이 의존성을 추가할 수 있습니다.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>

2. 데이터베이스 연결 설정

데이터베이스에 연결하기 위해 JDBC를 사용합니다. javax.sql.DataSource 인터페이스를 구현하는 클래스를 사용하여 데이터베이스 연결 정보를 설정하고, 커넥션 풀을 관리할 수 있습니다. 예를 들어, MySQL 데이터베이스에 연결하기 위한 DataSource 설정은 다음과 같이 할 수 있습니다.

import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;

// 데이터베이스 연결 정보 설정
String url = "jdbc:mysql://localhost:3306/mydb";
String username = "root";
String password = "password";

// DataSource 생성
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);

3. 데이터베이스 연결 관리

Java Jersey에서 데이터베이스 연결을 관리하기 위해 javax.inject.Provider 인터페이스를 사용할 수 있습니다. Provider 인터페이스를 구현하여 데이터베이스 연결 (DataSource)를 제공하는 클래스를 작성합니다. 예를 들어, 다음과 같이 DatabaseProvider 클래스를 작성할 수 있습니다.

import javax.inject.Provider;

public class DatabaseProvider implements Provider<DataSource> {

    @Override
    public DataSource get() {
        // 데이터베이스 연결 객체 반환
        return dataSource;
    }
}

이제 Jersey의 리소스 클래스에서 DatabaseProvider를 주입받아 데이터베이스 연결을 사용할 수 있습니다.

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("/example")
public class ExampleResource {
    
    @Inject
    private DataSource dataSource;

    @GET
    public String getExample() {
        // 데이터베이스 연결 사용
        // ...
        return "Example";
    }   
}

위와 같이 데이터베이스 연결을 DataSource 객체로 주입받아 사용할 수 있습니다.

마무리

Java Jersey에서 데이터베이스 연결을 관리하는 방법에 대해 알아보았습니다. 데이터베이스 드라이버 의존성을 추가하고, 데이터베이스 연결 정보를 설정하여 DataSource 객체를 생성한 후 Provider 인터페이스를 통해 데이터베이스 연결을 관리할 수 있습니다. 이를 통해 안정적이고 효율적인 데이터베이스 연결 관리를 할 수 있습니다.


참고자료: