2014년 3월 21일 금요일

이클립스에서 JPA 엔터티 클래스 자동 생성하기

JPA 엔터티(Entity)를 자동으로 생성한다는 의미는, 이클립스가 데이터베이스에 직접 접속하여 스키마에 해당하는 테이블과 테이블간의 관계를 분석한 후에 엔터티에 해당하는 Java 클래스를 만드는 것을 뜻한다.
그 과정은 아래와 같다.


  1. 데이터베이스 디자인 도구를 사용하거나 혹은 직접 SQL을 작성하여 테이블을 생성한다.
  2. 이클립스에서 데이터베이스 커넥션을 생성한다.
  3. 이클립스에서 JPA 프로젝트를 생성한다. (이클립스 EE 버전이 필요함)
  4. JPA 프로젝트에서 "JPA Entities from tables..." 메뉴를 선택한다.

1. 데이터베이스 테이블을 생성한다.



2. 이클립스에서 데이터베이스 커넥션을 생성한다.

  • Java EE Perspective에서 아래 쪽의 "Data Source Explorer" 탭을 선택한다.
  • "Database Connections"에서 오른쪽 마우스를 클릭한다.
  • 사용하려는 데이터베이스를 선택하고, 이름을 입력한다.

  • Drivers에서 사용하려는 데이터베이스에 맞는 JDBC 드라이버를 등록한다.
  • Properties/General 탭에서 데이터베이스 접속 정보를 입력하고, "Test Connection"을 한다.
  • "Finish" 버튼을 클릭한다.



  • 데이터베이스 요약 정보가 표시된다.



  • Data Source Explorer탭에 등록한 데이터베이스가 표시된다.



3. 이클립스에서 JPA 프로젝트를 생성한다.

  • File -> New -> JPA Project

  • Next 버튼을 클릭한다.
  • Next 버튼을 클릭한다.
  • JPA 프로젝트를 생성하기 위해서는 1개 이상의 User Library를 등록해야 한다. User Library는 JPA Provider 라이브러리, JDBC 드라이버 등을 등록하면 된다.
  • User Library를 등록하기 위해 오른쪽에 있는 "Manage libraries..." 버튼을 클릭한다.



  • "New..." 버튼을 클릭한다.



  • 라이브러리 이름을 입력한다.



  • 라이브러리 이름을 선택하고, "Add Jars...", 또는 "Add External Jars..." 를 클릭하여 해당 라이브러리의 jar 파일을 등록한다. 이런식으로 필요한 라이브러리를 더 추가한다.
  • "OK" 버튼을 누르면 User Library 등록이 끝난다.
  • "Finish" 버튼을 누르면 JPA 프로젝트가 생성된다.
  • 생성된 JPA 프로젝트에서 오른쪽 마우스를 클릭하고 "JPA Entities from Tables..." 메뉴를 선택한다. 
  • 위에서 생성한 데이터베이스 커넥션을 선택한다.
  • 오라클 데이터베이스의 경우 계정이 곧 Schema이기 때문에, 자동으로 Schema가 생성된다. 다른 데이터베이스의 경우는 Schema를 선택한다.
  • Entity를 만들기 위한 테이블들을 선택한다.
  • "Next"


  • 테블간의 관계가 표시된다.
  • "Next"



  •  테이블에서 사용하는 primary key에서 generator가 있다면, 각 테이블마다 사용하는 generator를 입력한다. 오라클의 경우는 sequence를 사용하므로 sequence의 이름을 입력하면 된다.
  • "Next"



  • Entity access는 칼럼 매핑을 field로 할 것인지, property를 할 것인지를 결정하는 것이다
  • Association fetch는 @OneToMany와 같은 관계가 있을 때, 테이블 조인을 바로 할 것인지(eager), 객체에 접근할 때 (즉 필요할 때) 할 것인지 (lazy)를 정한다.
  • Collection properties type은 Association을 통해 가져온 데이터를 Set으로 저장할 지, List로 할지를 결정한다.
  • Entity 클래스가 저장될 패키지 이름을 입력한다.
  • "Finish" 버튼을 누르면, Entity 클래스가 생성되고, 위에서 정한 패키지에서 확인할 수 있다




댓글 없음:

댓글 쓰기