Spring | Spring Data JPA 이용 | 데이터베이스 이용


그러면 실제로 데이터베이스를 이용하여 보기로 하자. com.devkuma.spring.db 패키지에 “App"클래스를 만들고 아래와 같이 소스 코드를 작성한다.

package com.devkuma.spring.db;
 
import java.util.List;
 
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class App {
 
    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("dbbean.xml");
 
        EntityManagerFactory factory = app.getBean(EntityManagerFactory.class);
        EntityManager manager = factory.createEntityManager();
 
        makeDummyData(manager);
 
        // get list
        Query query = manager.createQuery("from SampleEntity");
        List list = query.getResultList();
        printList(list);
 
        System.out.println("...ok.");
    }
 
    // create dummy entity data.
    public static void makeDummyData(EntityManager manager) {
        EntityTransaction transaction = manager.getTransaction();
        transaction.begin();
        manager.persist(new SampleEntity("tuyano", "syoda@tuyano.com"));
        manager.persist(new SampleEntity("hanako", "hanako@flower"));
        manager.persist(new SampleEntity("taro", "taro@yamada"));
        manager.persist(new SampleEntity("sachiko", "sachico@happy"));
        manager.flush();
        transaction.commit();
    }
 
    // print all entity.
    public static void printList(List list) {
        for (Object item : list) {
            System.out.println(item);
        }
    }
}

완성되면 실제로 App 클래스를 실행하자. 그러면 다음과 같이 텍스트가 출력되는 것을 볼 수 있다.

SampleEntity [id = 1 name = tuyano, mail=syoda@tuyano.com]
SampleEntity [id = 2 name = hanako, mail = hanako @ flower]
SampleEntity [id = 3 name = taro, mail = taro @ yamada]
SampleEntity [id = 4 name = sachiko, mail = sachico @ happy]
... ok.

이것은 더미(dummy)로 마련한 엔티티를 데이터베이스에서 검색하여 표시하고 있는 것이다. 여기에서는 더미 데이터를 생성하기 위한 makeDummyData 메소드와 취득한 목록의 내용을 출력하는 printList 메소드가 준비되어 있다. 그럼 간단히 정리해 보자.

1. ApplicationContext 생성

ApplicationContext app =
    new ClassPathXmlApplicationContext( "dbbean.xml");

우선은, 언제나 만들었던 ApplicationContext 인스턴스를 준비한다. 여기에서는 dbbean.xml 파일 지정했다..

2. EntityManagerFactory 인스턴스의 취득

EntityManagerFactory factory = app.getBean(EntityManagerFactory.class);

Bean 설정 파일에 준비해 놓은 엔티티 관리자 팩토리 Bean을 얻어 온다. 여기에서는 EntityManagerFactory 클래스의 class 값으로 인수를 지정했다.

3. EntityManager 작성

EntityManager manager = factory.createEntityManager();

준비한 EntityManagerFactory에서 EntityManager를 가져온다. 이것은 createEntityManager라는 메소드를 호출할 뿐이다.

이것으로 EntityManager가 준비되었다. 다음에는 이를 사용하여 더미 데이터를 저장하거나 혹은 전체 엔티티를 목록으로 얻어 올수 있다.

우선, 이번은 “데이터베이스 이용의 기본"이라고 할 있는 것으로, 중요한 EntityManager를 꺼낼 오는 것까지 알면 된다. 구체적인 데이터베이스 액세스는 다음에 설명 할 예정이다.