전자정부프레임워크 멀티 DB 문자 관련 2개 DB사용하기

전자 정부 프레임워크에 DB를 추가해서 특정 게시판에 특정 시설선택으로 글 작성 시 담당자에게 문자 발송요청건이 생겼네요. 

메인 db를 티베로를 사용하고 있는데 문자 발송은 mysql이라 부랴부랴 하게 되었어요. 

일단 전자정부프레임워크 db2개 관련으로 검색을 하였는데요.

https://www.egovframe.go.kr/home/sub.do?menuNo=37#

 

실행환경 - 예제 다운로드 | 표준프레임워크 포털 eGovFrame

처리중입니다. 잠시만 기다려주십시오.

www.egovframe.go.kr

여기를 안내해주고 예제 소스도 보여주었어요. 

db설정을 3개의 파일로 나누어서 설정을 해주는 소스였는데 저는 2곳으로 나누어서 설정을 하였네요. 

context-datasource.xml,context-mybatis.xml,context-transaction.xml중에서
context-datasource.xml,context-transaction.xml 에만 설정을 했어요.
 
기전전자정부프레임워크는 /src/main/resources/egovframework/egovProps/globals.properties 여기에 db정보를 저장해놓고 사용하던데 그렇게 하지 않고 따로 추가했어요. 

context-datasource.xml에 추가한 내용은 

	<!-- SMS DB 설정  -->
	<beans>   	
	<bean id="dataSource2" class="org.apache.commons.dbcp2.BasicDataSource">	
		<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy"></property>
		<property name="url" value="주소"></property>
		<property name="username" value="아디"></property>
		<property name="password" value="비번"></property>
		<property name="initialSize" value="10" />
        <property name="maxTotal" value="100" />
        <property name="maxIdle" value="100" />
        <property name="minIdle" value="10" />
        <property name="maxWaitMillis" value="5000" />
	</bean>
	
	<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">		
		<property name="dataSource" ref="dataSource2" />
		<property name="configLocation" value="classpath:/egovframework/mapper/config/mapper-config.xml" />		
		<property name="mapperLocations" value="classpath:/egovframework/mapper/first/**/*Mapper.xml"></property>
		                                                                   				
	</bean>

	<bean id="transactionManager2"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource2"></property>
	</bean>	
	<bean id="sqlSession2" class="org.mybatis.spring.SqlSessionTemplate"
		destroy-method="clearCache">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory2"></constructor-arg>
	</bean>
	
	</beans>

간단히 db를 추가해주었구요.. aop관련설정으로 

context-transaction.xml  아래와 같이 수정해 주었어요. 

	<tx:annotation-driven transaction-manager="transactionManager2"/>

이렇게 하고 나니 별문제 없이 프로젝트가 실행이 되었어요.  이제 서비스를 만들어 볼게요. 

일단 commondata클래스를 만들고요.

import java.util.LinkedHashMap;

public class CommonData extends LinkedHashMap {
	public void put(String key, Object value){
		super.put(key, value);
	}

	public String get(String key) {
		if(super.get(key)!=null)
		{
			return super.get(key).toString();
		}
		else
		{
			return null;
		}		
	}
	
	public Object getObj(String key) {
		return super.get(key);
	}
}

이걸 기반으로 하는 commonDAO

import java.util.List;
import java.util.Map;

import 삭제.CommonData;


public interface commonDAO {  
  public List<Map<String, Object>> selectlist(CommonData in_data , String sql_id) throws Exception;
  public CommonData select(CommonData in_data , String sql_id) throws Exception;
  public int listSearchCount(CommonData in_data , String sql_id) throws Exception;
  public int insert(CommonData in_data , String sql_id) throws Exception ;
  public int update(CommonData in_data , String sql_id) throws Exception;
  public int delete(CommonData in_data , String sql_id) throws Exception; 
  public CommonData selectone(CommonData in_data , String sql_id) throws Exception;
  public String selectstr(CommonData in_data , String sql_id) throws Exception;
  public Long selectLong(CommonData in_data , String sql_id) throws Exception;
  
}

 

 crssms_commonDAOImpl 내용인데요. 

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import 삭제.CommonData;


@Repository
public class crssms_commonDAOImpl  implements commonDAO
{
	@Inject
	@Resource(name="sqlSession2")
	private SqlSession session;
	private String namespace = "";
	@Override
	public int insert(CommonData in_data , String sql_id) throws Exception {
	    return session.insert(namespace + sql_id, in_data);
	}
	@Override
	public int update(CommonData in_data , String sql_id) throws Exception {
		return session.update(namespace + sql_id, in_data);
	}
	@Override
	public int delete(CommonData in_data , String sql_id) throws Exception {
		return session.update(namespace + sql_id, in_data);
	}
	@Override
	public int listSearchCount(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
	    return session.selectOne(namespace + sql_id, in_data);
	}
	@Override
	public CommonData selectone(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
		return session.selectOne(namespace + sql_id, in_data);
	}
	@Override
	public String selectstr(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
		return session.selectOne(namespace + sql_id, in_data);
	}
	@Override
	public List<Map<String, Object>> selectlist(CommonData in_data, String sql_id) throws Exception {
		return session.selectList(namespace + sql_id, in_data);
	}
	@Override
	public CommonData select(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
		return (CommonData) session.selectList(namespace + sql_id, in_data);
	}
	@Override
	public Long selectLong(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
	    return session.selectOne(namespace + sql_id, in_data);
	}
	
}

common_Service 내용인데요.

import java.util.List;
import java.util.Map;

import 삭제.CommonData;





public interface common_Service {
	  public List<Map<String, Object>> selectlist(CommonData in_data , String sql_id) throws Exception;
	  public CommonData select(CommonData in_data , String sql_id) throws Exception;
	  public int listSearchCount(CommonData in_data , String sql_id) throws Exception;
	  public int insert(CommonData in_data , String sql_id) throws Exception ;
	  public int update(CommonData in_data , String sql_id) throws Exception;
	  public int delete(CommonData in_data , String sql_id) throws Exception; 
	  public CommonData selectone(CommonData in_data , String sql_id) throws Exception;
	  public String selectstr(CommonData in_data , String sql_id) throws Exception;
	  public Long selectLong(CommonData in_data, String sql_id) throws Exception;	
}

Crssms_ServiceImpl 내용인데요

import java.util.List;
import java.util.Map;

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

import 삭제.CommonData;
import 삭제.persistence.crssms_commonDAOImpl;





@Service
public class Crssms_ServiceImpl implements common_Service {
	
	@Autowired 
	private crssms_commonDAOImpl dao;	
	
	@Override
	public List<Map<String, Object>> selectlist(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectlist(in_data, sql_id);
	}

	@Override
	public CommonData select(CommonData in_data, String sql_id) throws Exception {
	
		return dao.select(in_data, sql_id);
	}

	@Override
	public int listSearchCount(CommonData in_data, String sql_id) throws Exception {
	
		return dao.listSearchCount(in_data, sql_id);
	}
	@Override
	public int insert(CommonData in_data, String sql_id) throws Exception {
	
		return dao.insert(in_data, sql_id);		
	}

	@Override
	public int update(CommonData in_data, String sql_id) throws Exception {
	
		return dao.update(in_data, sql_id);
	}

	@Override
	public int delete(CommonData in_data, String sql_id) throws Exception {
	
		return dao.delete(in_data, sql_id);
	}

	@Override
	public CommonData selectone(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectone(in_data, sql_id);
	}

	@Override
	public String selectstr(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectstr(in_data, sql_id);
	}
	@Override
	public Long selectLong(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectLong(in_data, sql_id);
	}

}

이렇고 추가한 mybatis파일은 

<?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="Common_Mapper">
   
	
	<!-- 문자발송 관련 공통 쿼리 처리 기존 쿼리 및 경로 모두 수정할것!! -->
	<insert id="SDK_SMS_SEND">
				INSERT INTO SDK_SMS_SEND (USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_COUNT, DEST_INFO) VALUES (
						                  '_crs' , 0      , '비밀',#{sMsg}, date_format(now(), '%Y%m%d%H%i%S'),date_format(now(), '%Y%m%d%H%i%S'),#{sMEM_Mobile},'1',
						                  CONCAT('name^',#{sMobile}))
	</insert>
	<insert id="SDK_MMS_SEND_INSERT">
				INSERT INTO SDK_MMS_SEND (USER_ID, SCHEDULE_TYPE, SUBJECT, MMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_COUNT, DEST_INFO) VALUES (
						                  '_crs' , 0      , '비밀',#{sMsg}, date_format(now(), '%Y%m%d%H%i%S'),date_format(now(), '%Y%m%d%H%i%S'),#{sMEM_Mobile},'1',
						                  CONCAT('name^',#{sMobile}))
						                  
						                  
	</insert>	
</mapper>

context-datasource.xml  설정한곳을 봐서 알겠지만  파일위치는 

/src/main/resources/egovframework/mapper/first/Common_Mapper.xml

이렇습니다.  사용할 땐 이런 식으로 선언해서 사용합니다. 

import 삭제.dto.CommonData;
import 삭제.service.Crssms_ServiceImpl;

@Autowired
private Crssms_ServiceImpl sms_service;



중략 ...
				String sMEM_Mobile = "보내는 번호";
				String sMobile="받는번호";
		    	String sMsg = "메세지";
		    	String sName = "담당자";
                CommonData dto = new CommonData();
                 			dto.put("sMobile", sMobile);
							dto.put("sMEM_Mobile", sMEM_Mobile);
							dto.put("sMsg", sMsg);
                            sms_service.insert(dto, "Common_Mapper.SDK_SMS_SEND");

이렇게 해서 db를 하나 추가해서 문자 발송까지 정리해 보았습니다. 

수고하세요.

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

스프링 부트 자바 8버전 지원 POM.XML파일 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-parent</artifactId>
	    <version>2.6.2</version>
	</parent>
	<groupId>com.iwillsoft</groupId>
	<artifactId>ex001</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>ex001</name>
	<description>TEST</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web-services</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>3.0.3</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.microsoft.sqlserver</groupId>
			<artifactId>mssql-jdbc</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc11</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.mariadb.jdbc</groupId>
			<artifactId>mariadb-java-client</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter-test</artifactId>
			<version>3.0.3</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>me.meseoul10</groupId>
	<artifactId>Standard_erp</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<name>Standard_erp</name>
	<description>micro_erp</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-oauth2</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
		    <groupId>org.apache.tomcat.embed</groupId>
		    <artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>jstl</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-taglibs</artifactId>
		    <version>5.0.7.RELEASE</version>
		</dependency>
		<!-- webflux -->
		<dependency>
		  <groupId>org.springframework.boot</groupId>
		  <artifactId>spring-boot-starter-webflux</artifactId>
		</dependency>
		
	  
		
		<!-- log4jdbc -->
		<dependency>
		    <groupId>org.bgee.log4jdbc-log4j2</groupId>
		    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
		    <version>1.16</version>
		</dependency>
		
		<!-- 파일업로드 다운로드. -->
		<!-- 아파치.. -->
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi</artifactId>
		    <version>3.13</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi-ooxml</artifactId>
		    <version>3.13</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-collections4</artifactId>
		    <version>4.0</version>
		</dependency>
		<!-- Apache Commons IO -->
		<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
		<dependency>
		    <groupId>commons-io</groupId>
		    <artifactId>commons-io</artifactId>
		    <version>2.6</version>
		</dependency>
		<dependency>
			<groupId>org.imgscalr</groupId>
			<artifactId>imgscalr-lib</artifactId>
			<version>4.2</version>
		</dependency>
		
		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>
		<!-- 압축파일 -->
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-compress</artifactId>
		    <version>1.15</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
		<dependency>
		    <groupId>commons-codec</groupId>
		    <artifactId>commons-codec</artifactId>
		    <version>1.11</version>
		</dependency>
		
		
				


		<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.2</version>
		</dependency>
		
		<dependency>
	    	<groupId>org.aspectj</groupId>
	    	<artifactId>aspectjweaver</artifactId>
	    	<version>1.6.1</version>
		</dependency>
		
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-lang3</artifactId>
		    <version>3.4</version>
		</dependency> 
		
		<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
		<dependency>
		    <groupId>org.apache.tika</groupId>
		    <artifactId>tika-core</artifactId>
		    <version>1.20</version>
		</dependency>
				
		
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

테이블스페이스 및 계정 생성

테이블스페이스 생성전 경로와 파일을 확인하자!!

SELECT a.tablespace_name "테이블스페이스명" ,
       a.file_name "파일경로",
       (a.bytes - b.free) "사용공간",
       b.free "여유 공간",
       a.bytes "총크기",
       To_char( (b.free / a.bytes * 100) , '999.99')
              ||'%' "여유공간"
FROM  (
                SELECT   file_id,
                         tablespace_name,
                         file_name,
                         Substr(file_name,1,200) file_nm,
                         SUM(bytes)              bytes
                FROM     dba_data_files
                GROUP BY file_id,
                         tablespace_name,
                         file_name,
                         Substr(file_name,1,200))a,
       (
                SELECT   tablespace_name,
                         file_id,
                         SUM(Nvl(bytes,0)) free
                FROM     dba_free_space
                GROUP BY tablespace_name,
                         file_id)b where a.tablespace_name=b.tablespace_name and a.file_id = b.file_id;

조회 후 경로 및 이름을 정한 다음 스페이스를 생성합니다.

설명)
create tablespace 테이블스페이스명
datafile '/경로/테이블스페이스파일명.dbf'
size 초기용량(100m,1g 등) reuse
autoextend on next 자동증가 용량
maxsize unlimited;

명령어
create tablespace crs001
datafile '/usr/local/dbspace/crs001.file'
size 1000m reuse
autoextend on next 1024k
maxsize unlimited;

계정을 생성하면서 테이블스페이스를 지정합니다. 

설명)
create user 유저명 identified by 패스워드 default tablespace 테이블스페이스명;

예제)
create user nonono identified by kor19450815 default tablespace crs001;

생성한 유저에 권한을 줍니다.

grant connect, resource, dba to NONONO;

'Oracle' 카테고리의 다른 글

PLSQL 동적 쿼리 만들어 실행하기.  (0) 2016.02.03
실행계획 비용검사  (0) 2014.12.12
제약조건 오라클  (0) 2014.12.11
오라클 연습용 데이타.  (0) 2014.12.09
ORACLE SYSTEM TABLE  (0) 2014.12.09
블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,