فهرست منبع

WMS용 mssql 설정 추가

gagamel 5 سال پیش
والد
کامیت
f6bb5b385a

+ 48 - 0
style24.admin/src/main/java/com/style24/admin/support/config/TsaMybatisWmsConfig.java

@@ -0,0 +1,48 @@
+package com.style24.admin.support.config;
+
+import javax.sql.DataSource;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.style24.core.support.annotation.WmsDs;
+import com.style24.core.support.env.TscConstants;
+
+/**
+ * wmsDs용 Mybatis Configuration
+ * 
+ * @author gagamel
+ * @since 2020. 11. 26
+ */
+@Configuration
+@MapperScan(basePackages = TscConstants.BASE_PACKAGE, annotationClass = WmsDs.class, sqlSessionFactoryRef = "wmsSqlSessionFactory")
+public class TsaMybatisWmsConfig {
+
+	@Autowired
+	private ApplicationContext applicationContext;
+
+	@Bean(name = "wmsSqlSessionFactory")
+	public SqlSessionFactory wmsSqlSessionFactory(@Qualifier("wmsDataSource") DataSource dataSource) throws Exception {
+		SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+
+		sessionFactoryBean.setDataSource(dataSource);
+		sessionFactoryBean.setTypeAliasesPackage(TscConstants.DOMAIN_PACKAGE);
+		sessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:persistence/mybatis-wms-config.xml"));
+		sessionFactoryBean.setMapperLocations(applicationContext.getResources(TscConstants.MAPPER_LOCATION_PATH + "/wms/*.xml"));
+
+		return sessionFactoryBean.getObject();
+	}
+
+	@Bean(name = "wmsSqlSessionTemplate")
+	public SqlSessionTemplate wmsSqlSessionTemplate(@Qualifier("wmsSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
+		return new SqlSessionTemplate(sqlSessionFactory);
+	}
+
+}

+ 23 - 0
style24.admin/src/main/resources/persistence/mybatis-wms-config.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
+
+<configuration>
+
+	<settings>
+		<setting name="cacheEnabled" value="false" /> <!-- 설정에서 각 매퍼에 설정된 캐시를 전역적으로 사용할지 말지에 대한 여부 (default true)-->
+		<!-- <setting name="lazyLoadingEnabled" value="true" /> --> <!-- 지연로딩을 사용할지에 대한 여부. 사용하지 않는다면 모두 즉시 로딩 (default true) -->
+		<!-- <setting name="multipleResultSetsEnabled" value="true" /> --> <!-- 한개의 구문에서 여러개의 ResultSet을 허용할지의 여부 (default true) -->
+		<!-- <setting name="useGeneratedKeys" value="true" /> --> <!-- 생성키를 강제로 생성 (default false) -->
+		<setting name="defaultExecutorType" value="REUSE" /> <!-- 디폴트 실행자(executor) 설정. PreparedStatement를 재사용 (default SIMPLE)-->
+		<setting name="defaultStatementTimeout" value="25" /> <!-- 데이터베이스로의 응답을 얼마나 오래 기다릴지를 판단하는 타임아웃(초)를 설정 -->
+		<setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase 형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로 매핑하도록 함 (default false) -->
+		<setting name="logImpl" value="NO_LOGGING" /> <!-- 마이바티스가 사용할 로깅 구현체를 명시. 이 설정을 사용하지 않으면 마이바티스가 사용할 로깅 구현체를 자동으로 찾는다. -->
+		<setting name="jdbcTypeForNull" value="NULL"/> <!-- JDBC 타입을 파라미터에 제공하지 않을 때 null 값을 처리한 JDBC 타입을 명시 -->
+		<setting name="callSettersOnNulls" value="true"/> <!-- 가져온 값이 null일때 setter나 맵의 put 메소드를 호출할지를 명시 (default false) -->
+	</settings>
+	
+	<typeAliases>
+		<typeAlias alias="paramMap" type="com.gagaframework.web.parameter.GagaMap" />
+	</typeAliases>
+
+</configuration>

+ 48 - 0
style24.batch/src/main/java/com/style24/batch/support/config/TsbMybatisWmsConfig.java

@@ -0,0 +1,48 @@
+package com.style24.batch.support.config;
+
+import javax.sql.DataSource;
+
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.mybatis.spring.SqlSessionFactoryBean;
+import org.mybatis.spring.SqlSessionTemplate;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.style24.core.support.annotation.WmsDs;
+import com.style24.core.support.env.TscConstants;
+
+/**
+ * wmsDs용 Mybatis Configuration
+ * 
+ * @author gagamel
+ * @since 2020. 11. 26
+ */
+@Configuration
+@MapperScan(basePackages = TscConstants.BASE_PACKAGE, annotationClass = WmsDs.class, sqlSessionFactoryRef = "wmsSqlSessionFactory")
+public class TsbMybatisWmsConfig {
+
+	@Autowired
+	private ApplicationContext applicationContext;
+
+	@Bean(name = "wmsSqlSessionFactory")
+	public SqlSessionFactory wmsSqlSessionFactory(@Qualifier("wmsDataSource") DataSource dataSource) throws Exception {
+		SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
+
+		sessionFactoryBean.setDataSource(dataSource);
+		sessionFactoryBean.setTypeAliasesPackage(TscConstants.DOMAIN_PACKAGE);
+		sessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:persistence/mybatis-wms-config.xml"));
+		sessionFactoryBean.setMapperLocations(applicationContext.getResources(TscConstants.MAPPER_LOCATION_PATH + "/wms/*.xml"));
+
+		return sessionFactoryBean.getObject();
+	}
+
+	@Bean(name = "wmsSqlSessionTemplate")
+	public SqlSessionTemplate wmsSqlSessionTemplate(@Qualifier("wmsSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
+		return new SqlSessionTemplate(sqlSessionFactory);
+	}
+
+}

+ 23 - 0
style24.batch/src/main/resources/persistence/mybatis-wms-config.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
+
+<configuration>
+
+	<settings>
+		<setting name="cacheEnabled" value="false" /> <!-- 설정에서 각 매퍼에 설정된 캐시를 전역적으로 사용할지 말지에 대한 여부 (default true)-->
+		<!-- <setting name="lazyLoadingEnabled" value="true" /> --> <!-- 지연로딩을 사용할지에 대한 여부. 사용하지 않는다면 모두 즉시 로딩 (default true) -->
+		<!-- <setting name="multipleResultSetsEnabled" value="true" /> --> <!-- 한개의 구문에서 여러개의 ResultSet을 허용할지의 여부 (default true) -->
+		<!-- <setting name="useGeneratedKeys" value="true" /> --> <!-- 생성키를 강제로 생성 (default false) -->
+		<setting name="defaultExecutorType" value="REUSE" /> <!-- 디폴트 실행자(executor) 설정. PreparedStatement를 재사용 (default SIMPLE)-->
+		<setting name="defaultStatementTimeout" value="25" /> <!-- 데이터베이스로의 응답을 얼마나 오래 기다릴지를 판단하는 타임아웃(초)를 설정 -->
+		<setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase 형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로 매핑하도록 함 (default false) -->
+		<setting name="logImpl" value="NO_LOGGING" /> <!-- 마이바티스가 사용할 로깅 구현체를 명시. 이 설정을 사용하지 않으면 마이바티스가 사용할 로깅 구현체를 자동으로 찾는다. -->
+		<setting name="jdbcTypeForNull" value="NULL"/> <!-- JDBC 타입을 파라미터에 제공하지 않을 때 null 값을 처리한 JDBC 타입을 명시 -->
+		<setting name="callSettersOnNulls" value="true"/> <!-- 가져온 값이 null일때 setter나 맵의 put 메소드를 호출할지를 명시 (default false) -->
+	</settings>
+	
+	<typeAliases>
+		<typeAlias alias="paramMap" type="com.gagaframework.web.parameter.GagaMap" />
+	</typeAliases>
+
+</configuration>

+ 19 - 0
style24.core/src/main/java/com/style24/core/support/annotation/WmsDs.java

@@ -0,0 +1,19 @@
+package com.style24.core.support.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * DataSource를 여러 개로 구성 시 DAO를 구성하는 interface를 명시적으로 지정하기 위해 만든 Custom Annotation
+ * jdbc/wmsDs JNDI DataSource와 매핑
+ * 
+ * @author gagamel
+ * @since 2020. 11. 26
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface WmsDs{
+
+}

+ 1 - 1
style24.core/src/main/java/com/style24/core/support/config/TscJndiShopConfig.java

@@ -28,7 +28,7 @@ public class TscJndiShopConfig extends GagaJndiBaseConfig {
 	 * 즉시 DataSource를 종료하고자 할 때에 사용하는 것으로 DriverManagerDataSource에서는 필요하지 않다.
 	 */
 	@Override
-	//	@Bean(name = "defaultDataSource", destroyMethod = "close")
+//	@Bean(name = "defaultDataSource", destroyMethod = "close")
 	@Bean(name = "shopDataSource")
 	public DataSource dataSource() throws IllegalArgumentException, NamingException {
 		return super.getDataSource("jdbc/shopDs");

+ 43 - 0
style24.core/src/main/java/com/style24/core/support/config/TscJndiWmsConfig.java

@@ -0,0 +1,43 @@
+package com.style24.core.support.config;
+
+import javax.naming.NamingException;
+import javax.sql.DataSource;
+
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import com.gagaframework.web.core.config.GagaJndiBaseConfig;
+
+/**
+ * WMS Transaction Manager 설정
+ * 
+ * @author gagamel
+ * @since 2020. 11. 26
+ */
+@Configuration
+@Lazy
+@EnableTransactionManagement
+public class TscJndiWmsConfig extends GagaJndiBaseConfig {
+
+	/**
+	 * destroyMethod = "close" 속성은 apache commons DBCP와 BasicDataSource 등에서
+	 * 즉시 DataSource를 종료하고자 할 때에 사용하는 것으로 DriverManagerDataSource에서는 필요하지 않다.
+	 */
+	@Override
+	//	@Bean(name = "defaultDataSource", destroyMethod = "close")
+	@Bean(name = "wmsDataSource")
+	public DataSource dataSource() throws IllegalArgumentException, NamingException {
+		return super.getDataSource("jdbc/wmsDs");
+	}
+
+	@Override
+	@Bean(name = "wmsTxnManager")
+	public PlatformTransactionManager transactionManager(@Qualifier("wmsDataSource") DataSource dataSource) throws NamingException {
+		return super.getTransactionManager(dataSource);
+	}
+
+}