1. 기존 Java 확인


CentOSJava를 설치하는 방법은 별로 어렵지 않습니다우선 기존에 자바가 설치되어 있는지 확인을 해보도록 합니다.

 

$ java -version


centos oracle java install


CentOS를 설치하면 자동으로 OpenJDK가 설치되어 있습니다어디에 설치되어있는지 확인해 봅니다.


$ which java


centos oracle java install


설치된 /usr/bin 폴더로 이동하여 확인해 봅니다.


centos oracle java install


alternatives가 보이는 걸로 봐서 rpm 파일이 설치된 것 같습니다.

새로 설치를 해야 하니 root 권한으로 명령어를 입력하여 기존 java의 이름을 변경합니다.


# mv /usr/bin/java /usr/bin/java_old


centos oracle java install


파일 명을 변경 하였다면 실행이 되지 않아야 하는데 확인해 볼까요?


centos oracle java install


기존에 설치된 Java는 실행이 되지 않으니 이제 다른 버전을 설치해도 될 것 같습니다.


 

2. Java 다운로드


 

신규로 설치할 파일을 oracle 사이트에서 java를 다운로드 받습니다. 

 

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html


centos oracle java install


Linux 운영체제에 맞는 파일 중 Linux x64 Compressed Archive 를 선택 합니다다운받으려면 오라클 계정에 로그인을 해야 합니다.  자주 방문해야 하니 계정을 하나 만들어 두는게 좋습니다.

 

 

3. 설치


 

다운받은 파일의 압축을 풀어줍니다.

$ tar -zvxf jdk-8u241-linux-x64.tar.gz

 

개인적으로 사용 하려는게 아니면 모두가 사용할 수 있도록 압축을 풀은 폴더를 이동해야 하고 이제부터는 root 권한으로 작업을 진행해야 합니다.  물론 이동하지 않고 사용해도 되지만 관리를 위해서는 좀더 범용적인 위치로 옮겨놓습니다.

 

# mv jdk1.8.0_241/ /usr/local/lib

 

설치는 압축을 풀어주는 것을 완료가 된것이고 모두가 사용할 수 있도록 환경 설정을 해주면 끝입니다환경설정 파일을 열고 필요한 사항을 추가해 줍니다.

 

vi /etc/profile

JAVA_HOME=/usr/local/lib/jdk1.8.0_241

JRE_HOME=$JAVA_HOME/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME

export JRE_HOME


centos oracle java install


추가한 설정이 적용 되도록 명령어를 입력 합니다.


# source /etc/profile

 

잘 적용 되었는지 버전을 확인해 봅니다.


centos oracle java install


이제 OpenJDK가 아닌 oracle java가 설치 되었습니다.



Spring Boot를 이용하여 Oracle에 연결 하고 간단한 쿼리를 실행하는 예제 입니다.  일반 Spring 작업보다 얼마나 간소화가 되었는지 확인 하기 위해 예제를 만들어 봅니다.

 

- 작업 환경

Spring Tool Suite 4 Version: 4.5.1.RELEASE

JAVA 1.8

Oracle 11g XE


일단 Spring Boot 용 프로젝트를 생성 합니다.


spring boot mybatis oracle


상단 메뉴에서 File > New > Spring Starter Project를 이용해서 프로젝트를 생성해도 됩니다.


spring boot mybatis oracle


기본 값을 그대로 사용하고 Next 버튼을 클릭 하거나 원하는 부분을 수정 입력 합니다.


spring boot mybatis oracle


프로젝트에 포함할 라이브러리를 선택 합니다여기서는 MyBatis, Oracle, Web 만 추가하는 것으로 하고 Finish 버튼을 클릭 하면 프로젝트가 생성 됩니다.

 

pom.xml은 손대지 않고 생성한 그대로 사용 합니다.

 

application.properties에 필요한 설정을 추가합니다.


 #datasource (oracle)

spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521/xe

spring.datasource.username=copycoding

spring.datasource.password=copycopy

 

#vo location

mybatis.type-aliases-package=com.copycoding.demo.vo

 

#xml location

mybatis.mapper-locations=classpath:mappers/**/*.xml

 

server.port=9090


oracle 관련 정보와 VO 파일이 있는 위치 그리고 쿼리용 xml이 있는 위치를 설정했습니다많은 작업들을 properties에 선언 하는 것으로 해결 됩니다.

 

만들어볼 프로젝트에 필요한 package 와 폴더 구조 그리고 파일의 최종 모습 입니다.


spring boot mybatis oracle


이제 필요한 폴더와 파일을 하나씩 추가 해봅니다.

 

vo 패키지 생성

 

com/copycoding/demo에서 마우스 우측 버튼을 클릭 하고 package를 선택 합니다.


spring boot mybatis oracle


vo 패키지를 하나 생성 하고


spring boot mybatis oracle


테스트용으로 vo 파일을 하나 생성 합니다.

 

EnterpriseMemberVo.java

 package com.copycoding.demo.vo;

 

public class EnterpriseMemberVo {

        private String entrprsMberId;

        private String entrprsSeCode;

        private String bizrno;

        private String jurirno;

        private String cmpnyNm;

        private String cxfc;

        private String zip;

        private String adres;

getter/setter는 생략



mapper 폴더 생성

 

src/main/resources folder 추가 합니다.


spring boot mybatis oracle


폴더 명은 mappers/login으로 입력 했습니다이런 로그인을 구현할건 아닌데...


spring boot mybatis oracle


생성한 mappers 폴더에 EnterpriseMemberVo를 이용한 쿼리를 하나 생성 합니다.  DB를 뒤지다 그냥 걸린 테이블 입니다.


spring boot mybatis oracle


생성한 mappers 폴더에 loginSqlmap.xml으로 파일을 생성 합니다.  파일 내용도 로그인과는 거리가 먼데 그냥 명칭을 맞추기 위해서 적어 봤습니다.

 

쿼리는 EnterpriseMemberVo(아래 부분에서 생성합니다)를 이용한 단순 조회용 이고 DB를 뒤지다 그냥 걸린 테이블 입니다.

 

loginSqlmap.xml

 <?xml version="1.0" encoding="UTF-8"?>

 

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

 

<mapper namespace="com.copycoding.demo.dao.LoginDao">

   <select id="selectListEnterpriseMember" parameterType="EnterpriseMemberVo"  resultType="EnterpriseMemberVo">

             /* selectListEnterpriseMember */

             SELECT

                    ENTRPRS_MBER_ID as entrprsMberId

                    ,ENTRPRS_SE_CODE as entrprsSeCode

                    ,BIZRNO as bizrno

                    ,JURIRNO as jurirno

                    ,CMPNY_NM as cmpnyNm

                    ,ZIP as zip

                    ,ADRES as adres

             FROM

                    COMTNENTRPRSMBER

            

       </select>

</mapper>

mapper를 사용해서 Dao interface만 작성해도 사용 가능하도록 합니다.

 


java program 생성

 

이제 중요한 부분은 끝났고 나머지 필요한 java 파일만 평소대로 만들면 되겠군요.

controller, service, dao 패키지를 생성 하고 파일을 만들어 봅니다처음에 보여드린 것 처럼 저는 아래처럼 생성 했는데 그냥 한곳에 만들어도 되고 편한대로 패키지를 생성하면 됩니다.


spring boot mybatis oracle


단순 조회라 내용도 별로 없습니다.

controller를 아무 이름으로나 작성 합니다.


 package com.copycoding.demo.controller;

 

import java.util.List;

 

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

import org.springframework.ui.ModelMap;

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

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

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

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

 

import com.copycoding.demo.service.LoginService;

import com.copycoding.demo.vo.EnterpriseMemberVo;

 

@RestController

public class TestController {

       

        @Autowired

        LoginService loginService;

       

        @RequestMapping("/member/")

    public @ResponseBody List<EnterpriseMemberVo> selectListEnterpriseMember(

                @ModelAttribute("searchVO") EnterpriseMemberVo enterpriseMemberVo, ModelMap medel) throws Exception {

               List<EnterpriseMemberVo> eList = loginService.selectListEnterpriseMember(enterpriseMemberVo);

              

               return eList;

        }

}


입력 받는게 없지만 그래도 구색은 맞추어서 작업을 해 보았습니다.

RestController로 작업해서 화면을 만들 필요 없이 결과를 그냥 리턴 해도 결과를 확인할 수 있습니다.

 

Service 파일과 Imple도 작성 합니다.

 package com.copycoding.demo.service;

 

import java.util.List;

 

import com.copycoding.demo.vo.EnterpriseMemberVo;

 

public interface LoginService {

        List<EnterpriseMemberVo> selectListEnterpriseMember(EnterpriseMemberVo vo);

}


ServiceImpl

 package com.copycoding.demo.service;

 

import java.util.List;

 

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

import org.springframework.stereotype.Service;

 

import com.copycoding.demo.dao.LoginDao;

import com.copycoding.demo.vo.EnterpriseMemberVo;

 

@Service

public class LoginServiceImpl implements LoginService {

       

        @Autowired

        LoginDao loginDao;

 

        @Override

        public List<EnterpriseMemberVo> selectListEnterpriseMember(EnterpriseMemberVo vo) {

               // TODO Auto-generated method stub

               return loginDao.selectListEnterpriseMember(vo);

        }

 

}


Dao(Mapper)도 위에서 작성한 쿼리용 xml과 철자가 틀리지 않도록 작성해 줍니다.

 package com.copycoding.demo.dao;

 

import java.util.List;

 

import org.apache.ibatis.annotations.Mapper;

 

import com.copycoding.demo.vo.EnterpriseMemberVo;

 

@Mapper

public interface LoginDao {

       

        public List<EnterpriseMemberVo> selectListEnterpriseMember(EnterpriseMemberVo enterpriseMemberVo);

 

}


selectListEnterpriseMember() 함수 이름을 xml에서는 select id 사용을 합니다.

 

이렇게 해서 모든 작업이 완료 되었습니다테스트 할 일만 남았습니다.

 

결과

http://localhost:9090/member/


spring boot mybatis oracle


이상 없이 데이터를 잘 읽어와서 보여주고 있습니다.


- copy coding -



오라클을 설치하지 않은 경우 간단하게 database를 테스트 할 수 있도록 oracle에서 제공하는 사이트가 있습니다어떻게 보면 별로 소용이 없을 수도 있지만 table 생성이나 쿼리 조회가 자유롭지 못한 환경에서는 자유롭게 테스트 하는데 유용할 수도 있습니다.

 

일단 사이트에 접속을 합니다.

https://livesql.oracle.com/


oracle sql test online


상단 우측 Sing In을 클릭하고 로그인을 진행 합니다오라클에 계정이 없다면 신규로 생성합니다.  


oracle sql test online


계정 생성이 귀찮을 수 있지만 오라클에서 제공하는 프로그램을 다운로드 받는 경우 필요하기 때문에 하나 만들어 두는 것도 좋습니다.


oracle sql test online


livesql 사이트에 처음 접속하는 경우에는 면책조항 확인을 합니다.


좌측 메뉴에서 SQL Worksheet를 선택하면 일반적인 퀴리 테스트가 가능 합니다.


oracle sql test online


select to_char(sysdate, 'YYYY-MM-DD') from dual;을 입력하고 상단 우측 Run 버튼을 클릭해서 테스트를 진행 합니다.

 

물론 신규 테이블 생성도 가능 합니다.


oracle sql test online

CREATE TABLE customers

( customer_id number(10) NOT NULL,

  customer_name varchar2(50) NOT NULL,

  city varchar2(50),

  CONSTRAINT customers_pk PRIMARY KEY (customer_id)

); 


생성한 테이블에 데이터 입력도 가능 합니다.


oracle sql test online

insert into customers(customer_id, customer_name, city) values(100, 'test1', 'city1');

insert into customers(customer_id, customer_name, city) values(200, 'test2', 'city2');

insert into customers(customer_id, customer_name, city) values(300, 'test3', 'city3');

insert into customers(customer_id, customer_name, city) values(400, 'test4', 'city4');

insert into customers(customer_id, customer_name, city) values(500, 'test5', 'city5'); 


쿼리의 일부만 실행 하려면 마우스로 드래그 해서 영역을 설정하고 Run 버튼을 클릭 합니다.

 

이제 입력한 데이터를 조회하면 됩니다.


oracle sql test online

select * from customers;

 

Table을 생성하고 데이터를 입력하는 작업이 귀찮으면 기존에 오라클에서 제공하는 테이블을 선택해서 쿼리 테스트를 진행해도 됩니다.


oracle sql test online


상단 Find를 선택하고 팝업창에서 Schema를 확장하면 내가 생성한 My Schema와 오라클에서 제공하는 친숙한 HRSCOTT도 보이는 군요.

 

oracle sql test online


My Session 메뉴에는 지금까지 작업한 log 정보를 확인할 수 있습니다.


oracle sql test online


본인이 생성한 Table 정보는 Schema에서 확인하고 작업할 수 있습니다.

 

, Schema 정보는 Oracle 사이트에 Session이 연결된 동안만 존재 합니다.  Session을 저장 하려면 SQL Worksheet 상단에 있는 Save 버튼을 이용해서 저장을 해놓으세요.


- copy coding -


SQL Developer로 작업을 하려는데 로그인이 되지 않고 비밀번호가 기한이 만료 되었다는 오류 팝업이 뜨는 경우가 있습니다빨리 작업을 해야 하는데 이게 뭐야!


ORA-28001: the password has expired


오류 메시지는 ORA-28001: the password has expired 입니다.  이럴 때는 해결 방법이 손이 빠른 사람은 1분이면 해결이 됩니다.


ORA-28001: the password has expired


먼저 설치된 오라클에서 Run SQL Command Line을 선택 하여 콘솔 창을 오픈 합니다여기서


SQL> connect

Enter user-name: TEMPUSER (디비 접속 ID를 입력 합니다)

Enter password: (비밀번호를 입력 합니다)

 

New password:(신규 비밀번호 또는 기존 비밀번호를 입력해도 됩니다)

Retype new password:(비밀번호를 한번 더 입력 합니다)

 



위에서 처럼 ID와 비번을 입력 하기만 하면 해결 됩니다.


ORA-28001: the password has expired


이제 다시 SQL Developer에 접속이 되는군요.  저는 화면 캡쳐 하다보니 10분이 지났네요.


- copy coding -


1234

+ Recent posts