Goldilocks JDBC Driver를 이용해 Spring boot 와 maven, Hibernate 를 사용한 구축 환경에서

GOLDILOCKS DB와 연동하는 과정을 설명한다.

 

웹 서버용 Tomcat, JAVA(JDK)가 설치되어 있어야 한다.


Chapter 1. 환경

 

[테스트 환경 - DB]

OS : Ubuntu 16.04.7 LTS
GOLDILOCKS : 22c.1.2

 

[테스트 환경 - Spring Boot]

OS : CentOS Linux release 7.8.2003
GOLDILOCKS Client : 22c.1.2
Spring Boot : 2.7.12
Maven : 3.9.2
Hibernate : 5.6.15 Final
JAVA : 11.0.19
Tomcat : 9.0.75



Chapter 2. Maven 설치

 

다음은 wget으로 maven 을 설치 및 심볼릭 링크를 생성하는 예시이다. 

$ wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.9.2/binaries/apache-maven-3.9.2-bin.tar.gz

$ tar -xzf apache-maven-3.9.2-bin.tar.gz 

$ sudo cp -R apache-maven-3.9.2 /usr/local/

$ sudo ln -s /usr/local/apache-maven-3.9.2 /usr/local/maven

 

관련 환경변수를 설정한다.

#maven

export M2_HOME=/usr/local/maven

export PATH=$PATH:$M2_HOME/bin

 

다음과 같은 명령어로 maven 버전 확인을 할 수 있다.

$ mvn -v

Apache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c)

Maven home: /usr/local/maven

Java version: 17.0.7, vendor: Oracle Corporation, runtime: /home/spring/package/jdk-17.0.7

Default locale: ko_KR, platform encoding: UTF-8

OS name: "linux", version: "3.10.0-1127.18.2.el7.x86_64", arch: "amd64", family: "unix"

 

.


Chapter 3. Spring boot 예제 생성

 

Spring boot 예제는 https://start.spring.io/ 에서 다운로드 받을 수 있다. 

다운받은 demo.zip 파일을 리눅스 서버로 복사한다.

 

다음은 예제 생성 예시이다.

Project : Maven 체크

Language : Java 체크

Spring Boot : 2.7.12 체크

Packaging : Jar 체크

Java : 17 체크

우측 Dependencies :

    Spring Web - WEB

    Spring Boot DevTools - DEVELOPER TOOLS

    Spring Data JPA - SQL



Chapter 4. Hibernate jar 설치 및 설정

GOLDILOCKS 는 Hibernate ORM 버전에 따라 GoldilocksDialect.java 파일을 제공한다.

($GOLDILOCKS_HOME/app_dev/Hibernate)

 

Hibernate jar 파일 설치하기

Hibernate jar 파일은

https://repo1.maven.org/maven2/org/hibernate/hibernate-core/ 에서 다운로드 받을 수 있으며

GoldilocksDialect.java 컴파일을 위해 

https://repo1.maven.org/maven2/javax/persistence/javax.persistence-api/2.2/ 에서

컴파일용 persistence 패키지를 다운받을 수 있다.

 

본 문서는 hibernate-core-5.6.15.Final.jar, javax.persistence-api-2.2.jar 기준으로 작성한다.

 

 

Hibernate jar 파일에 이식하기

다운로드 받은 Hibernate jar 파일에 Goldilocks 관련 클래스들을 이식하는 방법은 다음과 같다.

 

1. GoldilocksDialect.java 파일을 javac로 컴파일하여 class 파일을 생성한다.

$ javac -cp hibernate-core-5.6.15.Final.jar:javax.persistence-api-2.2.jar  GoldilocksDialect.java

 

다음과 같은 클래스들이 생성된다.
  ├──GoldilocksDialect$1.class

  ├──GoldilocksDialect.class

  └──GoldilocksIdentityColumnSupport.class

 

2. Hibernate jar 파일의 압축을 해제한다.

$ jar -xvf hibernate-core-5.6.15.Final.jar

 

3. 생성된 org/hibernate/dialect 디렉토리로 Goldilocks 관련 클래스들을 복사한다.

$ cp Goldilocks*.class org/hibernate/dialect/

 

4. Hibernate jar 파일로 다시 압축한다. 예시는 구분을 위해 goldilocks 라는 이름을 부여한다.

$ jar -cvf hibernate-goldilocks-5.6.15.Final.jar META-INF/MANIFEST.MF .



Chapter 5. 연동 환경 설정

chapter 3 에서 다운받은 demo 파일을 압축 해제한다.

$ unzip demo.zip 

 

demo 디렉토리에서 lib 디렉토리를 생성해 jar 파일을 복사한다.

goldilocks8.jar 파일은 GOLDILOCKS 패키지의 $GOLDILOCKS_HOME/lib 디렉토리에 동봉되어 있으며

hibernate jar 파일은 chapter 4에서 생성한 jar 파일이다.

$ pwd

/home/spring/sample/demo

 

$ mkdir lib

$ cp goldilocks8.jar /home/spring/sample/demo/lib/

$ cp hibernate-goldilocks-5.6.15.Final.jar /home/spring/sample/demo/lib/

 

$ ls -al /home/spring/sample/demo/lib

goldilocks8.jar

hibernate-goldilocks-5.6.15.Final.jar

 

pom.xml 에 두 jar 파일 디펜던시를 등록한다.

<dependency>

   <groupId>GOLDILOCKS</groupId>

   <artifactId>GOLDILOCKS_test</artifactId>

   <version> 22.1.2</version>

   <scope>system</scope>

   <systemPath>/home/spring/sample/demo/lib/goldilocks8.jar</systemPath>

</dependency>

<dependency>

   <groupId>hibernate</groupId>

   <artifactId>hibernate-goldilocks</artifactId>

   <version>5.6.15</version>

   <scope>system</scope>

   <systemPath>/home/spring/sample/demo/lib/hibernate-goldilocks-5.6.15.Final.jar</systemPath>

</dependency>

 

DB 접속 정보 및 tomcat 포트를 설정한다.

(src/main/resources/application.properties)

 

아래는 192.168.0.113 서버의 GOLDILOCKS DB로 24681 포트를 이용해 접속하는 예시이다.

spring.datasource.driver-class-name=sunje.goldilocks.jdbc.GoldilocksDriver

spring.datasource.url=jdbc:goldilocks://192.168.0.113:24681/test

spring.datasource.username=test

spring.datasource.password=test

 

spring.jpa.database-platform=org.hibernate.dialect.GoldilocksDialect

spring.jpa.properties.hibernate.show_sql=true

spring.jpa.properties.hibernate.format_sql=true

 

spring.jpa.hibernate.ddl-auto=create

 

server.port=9300



sample 예제

간단한 C/R/U/D 용 예제 java 파일은 다음과 같다.

모두 src/main/java/com/example/demo/ 에 위치시킨다.

 

java 파일은 다음과 같다.

  ├──BoardRepository.java

  ├──Board.java

  └──TestController.java



BoardRepository.java

package com.example.demo;

 

import org.springframework.data.jpa.repository.JpaRepository;

 

public interface BoardRepository extends JpaRepository<Board, Long>{

}




Board.java

package com.example.demo;

 

import javax.persistence.Entity;

import javax.persistence.Id;

 

@Entity

public class Board {

    @Id

    private int bno;

    private String subject;

 

    public Board() {

        super();

    }

 

    public Board(int bno, String subject) {

        super();

        this.bno = bno;

        this.subject = subject;

    }

 

    public int getBno() {

        return bno;

    }

    public void setBno(int bno) {

        this.bno = bno;

    }

    public String getSubject() {

        return subject;

    }

    public void setSubject(String subject) {

        this.subject = subject;

    }

    @Override

    public String toString() {

        return "Board [bno=" + bno + ", subject=" + subject + "]";

    }

}




TestController.java

package com.example.demo;

 

import java.util.List;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

 

@RestController

public class TestController {

    

    @Autowired

    private BoardRepository boardRepository;

    

@RequestMapping("/select")

    public List<Board> SelectAll(){

        return boardRepository.findAll();

    }

    @RequestMapping("/insert")

    public Board Insert(){

        Board valueToInsert =new Board(10,"Nam");

        return boardRepository.save(valueToInsert);

    }

    @RequestMapping("/delete")

    public String DeleteAll() {

        boardRepository.deleteAll();

        return "Delete succeeded.";

    }

    @RequestMapping("/count")

    public Long Count() {

        return boardRepository.count();

    }

}

 


Chapter 6. 프로젝트 실행

실행 명령어는 다음과 같다.

$ mvn spring-boot:run

 

..

[INFO] Attaching agents: []

23:21:53.885 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@56346c86

 

  .   ____          _            __ _ _

 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \

( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )

  '  |____| .__|_| |_|_| |_\__, | / / / /

 =========|_|==============|___/=/_/_/_/

 :: Spring Boot ::               (v2.7.12)

 

..

 

Hibernate: 

    

    drop table if exists board cascade constraints

Hibernate: 

    

    create table board (

       bno number(10,0) not null,

        subject varchar(255) null ,

        primary key (bno)

    )





설정한 tomcat url 에서 다음과 같은 대시보드를 확인할 수 있다.

 

url 에 매핑한 문자를 입력하여 트랜잭션의 수행을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 


 

블로그 이미지

차트

소소한 일상 C코드 DB 항상 행복하게^-^★

,

Goldilocks JDBC Driver를 이용해서 Goldilocks와 전자정부프레임워크를 연동하고
표준 프레임워크 센터에서 제공 공통 컴포넌트(all-in-one) 개발 환경을 구축과정을 설명한다.

 

웹 서버용 Tomcat, JAVA(JDK)가 설치되어 있어야 한다.

 


Chapter 1. 환경

 

[테스트 환경 - DB]

OS : Ubuntu 16.04.7 LTS
GOLDILOCKS : 22c.1.2

 

[테스트 환경 - 전자정부프레임워크(eGov)]

OS : Windows 64 bit
GOLDILOCKS Client : 22c.1.2
eGovFrameDev : 4.1.0 Window 64 bit
egovframework-all-in-oneAllNew : 4.1.1
JAVA : 11.0.19 64 bit
Tomcat : 9.0.75 Window 64 bit




Chapter 2. 개발환경 및 공통 컴포넌트 설치

 

개발 환경 및 공통 컴포넌트는
https://www.egovframe.go.kr/home/main.do 에서 다운로드 받을 수 있다. 

상단 다운로드에서 원하는 버전을 선택하여 파일을 다운로드 받는다.
아래 화면은  홈페이지에서 개발환경 파일을 다운로드 받는 화면이다.

 

 

아래 화면은 홈페이지에서 공통 컴포넌트 파일을 다운로드 받는 화면이다.

 

 


Chapter 3. 연동 환경 설정

 

전자정부프레임워크 eclipse 실행

 

 

공통 컴포넌트 압축 해제 및 프로젝트 생성

다운로드 받은 배포파일의 압축을 푼다. 이후, 새로운 프로젝트를 생성한다.

[File] -> [Import]

[Maven] -> [Existing Maven Projects]

[Browse] -> all-in-one 압축해제 폴더(egovframework-all-in-oneAllNew)

 

eclipse 설정

이클립스 우측 상단의 퍼스펙티브를 변경한다.

[Open Perspective] -> eGovFrame

 



메이븐 환경을 초기화 한다.

프로젝트 우클릭 -> [Maven] -> [Update Project...]

[Force Update of Snapshots/Releases] 체크

프로젝트 우클릭 -> [Run As] -> [8 Maven install]

 

JRE 환경을 변경한다.

프로젝트 우클릭 -> [Properties] -> [Java Build Path] -> [Libraries]

기존 JRE 1.8 제거

[Add Library] 로 jdk-11.0.19 등록 -> [Apply and Close]

 

DB 접속 관련 환경 설정

글로벌 프로퍼티 값을 변경한다.

(src/main/resources/egovFramework/egovProps/globals.properties)

 

아래는 192.168.0.113 서버의 GOLDILOCKS DB로 24681 포트를 이용해 접속하는 예시이다.

# 운영서버 타입(WINDOWS, UNIX)

Globals.OsType = WINDOWS

 

# DB서버 타입

Globals.DbType = goldilocks

 

#GOLDILOCKS

Globals.goldilocks.DriverClassName=sunje.goldilocks.jdbc.GoldilocksDriver

Globals.goldilocks.Url=jdbc:goldilocks://192.168.0.113:24681/goldilocks

Globals.goldilocks.UserName=com

Globals.goldilocks.Password=xz4fmrSdr1vGGl6UtwPLwA%3D%3D



pom.xml 파일에서 GOLDILOCKS JDBC Driver 정보를 확인할 수 있다.

배포한 GOLDILOCKS Window Client 패키지에 동봉되어있는 goldilocks8.jar 를 사용한다.

($GOLDILOCKS_HOME/lib/goldilocks8.jar)

 

다음은 배포한 GOLDILOCKS JDBC Driver를 버전 정보를 명시하여 설정한 예시이다.

  • 파일명을 다음과 같이 변경한다.
    goldilocks8.jar 를
    goldilocks8-22.1.2.jar 로 변경

 

  • 디렉토리명을 다음과 같이 변경한다.
    src/main/webapp/WEB-INF/lib/project/goldilocks8/8.0.0/ 을
    src/main/webapp/WEB-INF/lib/project/goldilocks8/22.1.2/ 로 변경

pom.xml

        <!-- goldilocks driver -->

        <dependency>

            <groupId>project</groupId>

            <artifactId>goldilocks8</artifactId>

            <version>22.1.2</version>

        </dependency>



GOLDILOCKS 사전작업

테스트를 위해 com DB계정 생성 및 권한을 부여한다.

다음은 테스트를 위해 모든 권한을 com 계정에게 부여하는 예시이다.

create user com identified by com01;

grant all privileges on database to com with grant option;

commit;

 

이후 다음 sql 들을 com 유저로 수행해야 한다.

egovframework-all-in-one/script/ddl/goldilocks/com_DDL_goldilocks.sql

egovframework-all-in-one/script/comment/goldilocks/egov_goldilocks_comment.sql

egovframework-all-in-one/script/dml/goldilocks/com_DML_goldilocks.sql





Chapter 4. 프로젝트 실행

 

프로젝트를 실행한다.

프로젝트 우클릭 -> [Run As] -> [Run On Server]

 

[Apache] -> [Tomcat v9.0 Server] -> [Next >] -> [Browse]

tomcat 디렉토리 설정 -> [Finish]



 

설정한 tomcat url 에서 다음과 같은 대시보드를 확인할 수 있다.

 

 

테스트용 사용자 정보는 다음과 같다. (대소문자 유의)

 

구분 ID PW 비고
일반 사용자 USER rhdxhd12 영문으로 공통12
기업 사용자 ENTERPRISE rhdxhd12 영문으로 공통12
업무 사용자 TEST1 rhdxhd12 영문으로 공통12
  webmaster rhdxhd12 영문으로 공통12

 


 

블로그 이미지

차트

소소한 일상 C코드 DB 항상 행복하게^-^★

,