본문 바로가기

DB&Hibernate

JAVA, Hibernate5 hbm없이 설정없이(annotation으로만) 사용하는법

반응형

Java Hibernate5에서 hbm.xml 파일 없이 사용하는법에 대해 알아보자.

작업 환경은 다음과 같다.

* 운영체제 : Window10

* DB 버전 :  Mariadb10.2.5

* Java 버전 : Java 1.8


작업 순서는 다음과 같다. 

1. 프로젝트 설정

2. Maven 설정 

3. Eclipse, JBoss 설치

4. *.cfg.xml 생성 및 설정

5. Console Configuration 설정

6. reveng.xml 생성 및 설정

7. Code Generator

8. 프로그램 작성


1. 프로젝트 설정 

1.1 Project 명 : Hibernate5

1.2 Jre 설정 : JreSE-1.8


2. Maven 설정

2.1 'Hibernate5' 프로젝트 선택 후 우클릭 -> 'Configure' -> 'Convert To maven Project' 선택한다.

2.2 'Create new POM' 화면에서 그냥 Finish 버튼을 클릭한다.

2.3 pom.xml 파일이 생기는데 여기서 아래의 소스  <dependencies> .....  </dependencies>여기 내용을 복사하여 붙여 넣는다.

<version>....</version>

 <dependencies>  

<dependency>

   <groupId>mysql</groupId><!--mysql 접속을 위한 lib(jar) -->

   <artifactId>mysql-connector-java</artifactId>

   <version>5.1.6</version>

</dependency>

  

 <dependency>

   <groupId>org.hibernate</groupId> <!--hibernate5 lib(jar) -->

   <artifactId>hibernate-core</artifactId>

   <version>5.2.8.Final</version>

 </dependency>

  </dependencies>

<build>......</build>


2.4 'Hibernate5' 프로젝트명을 클릭 후 우클릭 -> [Run as] -> [Maven Build] 클릭한다.

2.5 프로젝트에 [Maven Dependencies] 가 생성되어 관련 lib(jar)가 프로젝트에 자동으로 추가된다.


3. Eclipse, JBoss 설치

3.1 [Eclipse] -> [Help] -> [Eclipse Marketplace] 클릭

3.2 검색란에 JBoss 검색 후 설치 한다.


3.3 제대로 설치가 되었다면 [Eclipse - Window - Perspective - Open Perspective - Others ...]에 Hibernate 가 있을것이다.


4. *.cfg.xml 생성 및 설정

4.1 Hibernate 창을 오픈한 뒤 Hibernate Configurations 이 있는걸 확인해보자.


4.2 프로젝트를 우클릭하여 New - Hibernate Configuration File(cfg.xml) 을 클릭한다.

4.3 생성될 위치를 선택한 후(난 프로젝트/src로 했다) Next  클릭. 후 Finish 버튼을 누른다.(밑에 내용 붙여넣기 위해 패스)

4.4 그럼 생성된 cfg.xml 파일을 열어 Source 탭으로 이동한다.

4.5 Source 탭에서 아래의 내용을 복사 붙여 넣기 한다. 

 <session-factory >

  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

  <property name="hibernate.connection.url">jdbc:mysql://DB주:3306/DB명</property>

  <property name="hibernate.connection.username">root</property>

  <property name="hibernate.connection.password">비밀번호</property>

  <property name="hibernate.connection.pool_size">10</property>

  <property name="show_sql">true</property>

  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

  <property name="hibernate.current_session_context_class">thread</property>

 </session-factory>

4.6 DB주소, 포트,DB명,아이디,비밀번호를 수정하자.



5. Hibernate Console Configuration 설정

5.1 Name : 적당히 .... 맘에드는걸로..

5.2 Main 탭의 TypeCore로, Hibernate Version5.2(17.4.11 - 최신버전)

5.3 Project에는 Hibernate 적용하고자 하는 프로젝트 

5.4 Database connection[Hibernate configured connection] 선택

5.5 Property file 은 패스~

5.6 Configuration file 은  4번에서 만든 *.cfg.xml 선택

5.7 Finish 버튼 클릭~!


6. reveng.xml 생성 및 설정

6.1 Open Perspective 창에서 Hibernate 클릭 한 뒤 -> 프로젝트 우클릭 -> New -> Hibernate Reverse Engine File(reveng.xml) 클릭 한다.

6.2 reveng.xml 이 생성될 위치를 선택한 후 Next.

6.3 Console configuration 에서 5번에서 만든 Console 파일 선택

6.4 왼쪽 Database schema 밑Refresh 버튼 누르면 Db의 Table 목록이 나온다.

6.5 Hibernate로 적용하여 클래스 생성할 table Database schema 에서 선택 후 Include 버튼을 누른다.

6.6 끝나면 Finish 버튼

 

7. Code Generator

7.1 메뉴에 존재하는 Code Generator 를 클릭하자


7.2 Hibernate Code Generation Configurations ... 을 클릭!

7.3 Hibernate Code Generation 을 더블 클릭하면 Run Program의 속성 정보가 뜬다.

7.4 아래의 사진과 같이 설정하자

7.5 Run 버튼 클릭


8. 프로그램 작성

아래 소스 코드를 복사 붙여넣기 하여 활용하자.

*.cfg.xml 파일 위치를 잘 알고 입력하자. (src 밑에 두면 아래 소스처럼 입력하면 된다.)

import org.hibernate.SessionFactory;

import org.hibernate.boot.Metadata;

import org.hibernate.boot.MetadataSources;

import org.hibernate.boot.registry.StandardServiceRegistry;

import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

import org.hibernate.service.ServiceRegistry;


public class HibernateUtil {

private static final SessionFactory sessionFactory;

private static ServiceRegistry serviceRegistry;

static {

try {

StandardServiceRegistry standardRegistry = 

new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();

Metadata metaData = new MetadataSources(standardRegistry).getMetadataBuilder().build();

sessionFactory = metaData.getSessionFactoryBuilder().build();

} catch (Throwable th) {

System.err.println("Enitial SessionFactory creation failed" + th);

throw new ExceptionInInitializerError(th);

}

}

public static SessionFactory getSessionFactory() {

return sessionFactory;

}

}


public static void main(String[] args){ 

try{  

SessionFactory sessFact = HibernateUtil.getSessionFactory();

Session session = sessFact.getCurrentSession();

org.hibernate.Transaction tr = session.beginTransaction();

MyTable a = new MyTable (88); // 자동으로 만들어진 Table을 이와 같이 선언하여 

a.setData("999a");  

session.save(a); //session에 저장하고 

tr.commit(); // commit 하면 끝

System.out.println("Successfully inserted");

sessFact.close();


}catch(Exception e){

System.out.println(e.getMessage());

}finally{


}

}