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 항상 행복하게^-^★

,


CentOS 7Oracle DB 12c R2를 설치하는 데
꽤나 애먹은 관계로, (거의 1주일 날렸..ㅠ) 저처럼 고통을 겪으시는 일
없도록 깔끔하게 정리하여 포스트 합니다.

정말 잔 오류가 많이 났었지만, 이제는 10분 도 채 안걸리고
완벽하게 설치 가능해졌답니다 !

혹시 도중 막히는 부분이나 에러가 나거나 궁금한 점이 있으시다면,
댓글 남겨주세요!
최대한 빠른 시일 내에 답변을 올려드리겠습니다. ^^

낮에는 덥지만 아침 저녁으론 쌀쌀한 이 때
감기 다들 더욱 조심하시고, 행복한 하루 되세요!

그럼 Oracle DB 설치 시작합니다!




ORACLE 설치 가이드


They are all belong to CentOS 7.



Oracle Database Software Downloads


  1. Go to http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
  1. Download file which written Oracle Database 12c Release 2 - Linux x86-64


PRE-INSTALLATION TASKS (설치 사전 작업)


  1. To begin, make sure that all the packages currently installed on your RHEL/CentOS 7 system are updated to their latest versions.
    $> yum update -y
    
  2. Next, installed all the required dependencies for the RDBMS, along with the zip and unzip packages.
    $> yum install -y binutils.x86_64 compat-libcap1.x86_64 gcc.x86_64 gcc-c++.x86_64 glibc.i686 glibc.x86_64 glibc-devel.i686 glibc-devel.x86_64 ksh compat-libstdc++-33 libaio.i686 libaio.x86_64 libaio-devel.i686 libaio-devel.x86_64 libgcc.i686 libgcc.x86_64 libstdc++.i686 libstdc++.x86_64 libstdc++-devel.i686 libstdc++-devel.x86_64 libXi.i686 libXi.x86_64 libXtst.i686 libXtst.x86_64 make.x86_64 sysstat.x86_64 zip unzip
    
  3. Create the user account and groups for Oracle.
    $> groupadd oinstall
    $> groupadd dba
    $> useradd -g oinstall -G dba oracle
    
    Finally, set a password for the newly created oracle account.
    $> passwd oracle
    
  4. Add the following kernel parameters to /etc/sysctl.conf file.
    #######################################
    # ORACLE
    #######################################
    
    fs.aio-max-nr = 1048576
    fs.file-max = 6815744
    kernel.shmall = 3263597
    kernel.shmmax = 16709617664
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 9000 65500
    net.core.rmem_default = 262144
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 1048586
    
    and apply them:
    $> sysctl -p
    $> sysctl -a
    
  5. Set the limits for oracle in /etc/security/limits.conf file.

    ####################################### # ORACLE ####################################### oracle   soft    nproc   2047 oracle   hard   nproc   16384 oracle   soft    nofile    1024 oracle   hard   nofile    65536 oracle   soft    stack    10240 oracle   hard   stack    10240

  6. Create a directory named /stage and extract the zipped installation file.
    $> unzip linuxx64_12201_database.zip -d /stage/
    
    Before proceeding, create other directories that will be used during the actual installation, and assign the necessary permissions.
    $> mkdir /u01
    $> mkdir /u02
    $> chown -R oracle:oinstall /u01
    $> chown -R oracle:oinstall /u02
    $> chmod -R 775 /u01
    $> chmod -R 775 /u02
    $> chmod g+s /u01
    $> chmod g+s /u02
    
  7. Login oracle account and Open a GUI session.
    $> su - oracle
    $> /stage/database/runInstaller
    
    -'Create and configure a database ( 데이터베이스 생성 및 구성 )
    • Desktop class ( 데스크톱 클래스 )
    • Oracle base : /u01/app/oracle (초기설정)
    • Software location : /u01/app/oracle/product/12.2.0/dbhome_1 (초기설정)
    • Database file location : /u02
    • Database edition : Enterprise Edition (7.5GB) (초기설정)
    • Character set : Unicode (AL32UTF8) (초기설정)
    • OSDBA group : dba (초기설정)
    • Global database name : oracle (초기설정)
    • Inventory : /u01/app/oraInventory (초기설정)
    • oraInventory Group Name : oinstall (초기설정)
  1. And we can see popup for Execute Configuration Scripts ( 구성 스크립트 실행 팝업 ). Using another terminal, login root and :

    $> su $> cd /u01/app/oraInventory $> ./orainstRoot.sh $> cd /u01/app/oracle/product/12.2.0/dbhome_1 $> ./root.sh ... Enter the full pathname of the local bin directory: [/usr/local/bin] : <- 그냥 엔터 ! ... Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes | [no] : no ...

    And then click the ok button.
  1. Login oracle account and add the following lines to .bash_profile file.
    #######################################
    # ORACLE
    #######################################
    
    export TMPDIR=$TMP
    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1
    export ORACLE_SID=oracle
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/lib64
    export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
    export NLS_LANG=AMERICAN_AMERICA.KO16KSC5601
    
    The last step is applying it.
    $> source .bash_profile
    
  2. And then login to the database using account oracle.
    $> sqlplus system@oracle
    
    SQL*Plus: Release 12.2.0.1.0 Production on Fri May 11 12:29:15 2018
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    Enter password: 
    
    Connected to:
    Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
    
    SQL> 
    





출처 :  https://www.tecmint.com/install-oracle-database-12c-on-centos-7/






마침. 


블로그 이미지

차트

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

,