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 에 매핑한 문자를 입력하여 트랜잭션의 수행을 확인할 수 있다.
'IT > Installation Guides' 카테고리의 다른 글
[설치 가이드] :: Spring Framework Goldilocks 연동 가이드 (1) | 2024.11.13 |
---|---|
[설치 가이드] :: 전자정부프레임워크(eGov) Goldilocks 연동 가이드 (0) | 2023.06.22 |
[설치 가이드] :: How to install Oracle DB 12c R2 on CentOS 7 (CentOS 7에 Oracle DB 12c R2 설치하기) (0) | 2018.05.11 |