Guice-Persist는 Java 애플리케이션에서 의존성 주입(Dependency Injection)을 지원하기 위한 Guice 확장 라이브러리입니다. 이를 사용하면 데이터베이스와의 연결과 트랜잭션 관리를 손쉽게 할 수 있습니다. 이 글에서는 Guice-Persist를 사용하여 Java 애플리케이션을 개발하는 방법에 대해 알아보겠습니다.
1. Guice-Persist 추가하기
먼저 프로젝트의 의존성 관리 도구를 사용하여 Guice-Persist를 추가해야 합니다. Maven을 사용하는 경우 pom.xml
파일에 다음 의존성을 추가합니다:
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-persist</artifactId>
<version>4.2.2</version>
</dependency>
Gradle을 사용하는 경우 build.gradle
파일에 다음과 같이 의존성을 추가합니다:
compile 'com.google.inject.extensions:guice-persist:4.2.2'
2. 모듈 설정하기
Guice-Persist를 사용하려면 Guice의 모듈을 설정해야 합니다. 이 모듈에서는 데이터베이스 연결과 트랜잭션 관리를 설정합니다.
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bindConstant().annotatedWith(JpaUnit.class).to("my-persistence-unit");
bind(TransactionManager.class).to(JpaTransactionManager.class);
bind(MyService.class).to(MyServiceImpl.class);
}
@Provides
@Singleton
EntityManagerFactory provideEntityManagerFactory() {
return Persistence.createEntityManagerFactory("my-persistence-unit");
}
@Provides
@Singleton
EntityManager provideEntityManager(EntityManagerFactory entityManagerFactory) {
return entityManagerFactory.createEntityManager();
}
}
위의 예시에서는 MyModule
클래스를 생성하고 AbstractModule
을 상속받아 구현합니다. configure
메서드에서는 다음과 같은 설정 작업을 수행합니다:
bindConstant().annotatedWith(JpaUnit.class).to("my-persistence-unit")
: JPA 유닛 이름을 설정합니다."my-persistence-unit"
은 본인의 프로젝트에 맞게 수정하세요.bind(TransactionManager.class).to(JpaTransactionManager.class)
: Guice-Persist에서 제공하는JpaTransactionManager
를 사용하여 트랜잭션 관리를 설정합니다.bind(MyService.class).to(MyServiceImpl.class)
: 프로젝트에 맞게 서비스 인터페이스와 구현체를 바인딩합니다.
또한 @Provides
어노테이션을 사용하여 EntityManagerFactory
와 EntityManager
를 제공하는 메서드를 작성합니다. 이를 통해 Guice-Persist는 알아서 필요한 인스턴스를 제공합니다.
3. 애플리케이션 실행하기
애플리케이션을 실행하기 위해서는 Injector
를 생성해야 합니다. 이를 위해 MyModule
을 사용하여 Injector
를 생성합니다.
public class MyApp {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new MyModule());
MyService service = injector.getInstance(MyService.class);
// 애플리케이션 로직 수행
}
}
위의 예시에서는 main
메서드에서 Guice.createInjector(new MyModule())
을 호출하여 Injector
를 생성합니다. 이후 injector.getInstance(MyService.class)
를 호출하여 MyService
의 인스턴스를 얻어와 사용할 수 있습니다.
이제 MyService
의 메서드를 호출하면 Guice-Persist를 통해 자동으로 데이터베이스 연결과 트랜잭션 관리가 처리됩니다.
마무리
위의 단계를 따라가면 Guice-Persist를 사용하여 Java 애플리케이션에 대한 데이터베이스 연결과 트랜잭션 관리를 간단하게 설정할 수 있습니다. Guice-Persist는 Guice와 함께 사용할 때 의존성 주입을 더욱 편리하게 만들어줍니다.
참고 자료: