'분류 전체보기'에 해당되는 글 157건
- 2013.07.23 mybatis dot net Sample
- 2013.04.22 (Flex 4)Blazeds + Spring 연동 Test
- 2013.04.19 (Flex 4)Blazeds + Spring 연동 Test Project 생성
우선 mybatis 사용을 위해 Framework를 다운 받는다.(https://code.google.com/p/mybatisnet/)
dll 및 .config .xml file로 구성되 있으면 Samle을 수정하여 사용 할 것이다.
Ibatis.DataMapper Version을 다운 받으면 그 안에 sample.SqlMap.config file이 존재 한다.
이 파일을 SqlMap.config file로 수정후 project안에 포함 시켜 준다.
하나의 .config file이 더 있는데 providers.config file이다 이 file도 포함시켜 준다.
providers.config file은 xml형식으로 되어 있으며
<provider name="oracleClient1.0" description="Oracle, Microsoft provider V1.0.5000.0" enabled="true" assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection" commandClass="System.Data.OracleClient.OracleCommand" parameterClass="System.Data.OracleClient.OracleParameter" parameterDbTypeClass="System.Data.OracleClient.OracleType" parameterDbTypeProperty="OracleType" dataAdapterClass="System.Data.OracleClient.OracleDataAdapter" commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder" usePositionalParameters="false" useParameterPrefixInSql="true" useParameterPrefixInParameter="false" parameterPrefix=":" allowMARS="false" /> |
이런 이이템들이 여럿 있을 것이다. 여기서 손댈 속성은 enabled속성으로 해당 provider를 활성화 시킬것인지를 선택하는 항목이다
name 속성은 다음 SqlMap.config에서 provider를 지정할때 사용할 것이다.
우선 oracle로 Test 할 것이니 oraclejClient1.0을 뺀 모든 provider를 enabled 속성을 false로 놓는다.
다음으로 SqlMap.config file을 수정한다.
<?xml version="1.0" encoding="utf-8"?> <sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <settings> <setting useStatementNamespaces="false"/> <setting cacheModelsEnabled="true"/> <setting validateSqlMap="false"/> </settings> <providers embedded="Dao.conf.providers.config, Dao"/> <!-- Database connection information --> <database> <provider name="oracleClient1.0"/> <dataSource name="XXX" connectionString="Data Source=SourceXX;Persist Security Info=True;User ID=UserXX;Password=PwdXXX;Unicode=True"/> </database> <sqlMaps> <sqlMap embedded="Dao.model.mapper.SrcMach.xml, Dao" /> </sqlMaps> </sqlMapConfig> |
먼저 providers에 embedded 속성값을 설정한다.
속성값으로는 위에는 Dao.conf.providers.config로 되어 있는데 이는 namespace가 Dao(Project명이 Dao)이고 그 안에 conf 디렉터리안에 providers.config가 위치해 있다는 설명이 될 수 있다. 그리고 , Dao는 root namespace가 될 것이다(어셈블리의 이름)
providers.config file을 지정 했으니 그 안에 있는 provider를 사용 할 수 있는데 매칭은 name속성으로 된다.
enable이 ture로 설정 되어 있는 name을 그대로 provider에 옮겨 준후 dataSource를 설정해 준다.
이렇게 해 주면 DB 접속 설정은 마무리 된다.
이 설정한 SqlMap.config file과 providers.config file의 속성을 보는 봐와 같이 리소스 포함으로 변경시킨다.
꼭 리소스 포함에 집어 넣을 필요는 없다. copy always나 copy if newer로 지정하고
embedded 대신 resource="path/file.xml" 형식으로 변환 시키면 된다.
이제 DB에서 사용할 Vo를 정의 한다. Class에 get set 프로퍼티를 만들어 주면 되는 형식이다.
public class SrcMachVo { private int m_MachTag; private string m_MachName; public int MachTag { get { return this.m_MachTag; } set { this.m_MachTag = value; } } public string MachName { get { return this.m_MachName; } set { this.m_MachName = value; } } } |
VS2005 Ver을 사용하여 이런 형식 밖에 취하지 못했다.
VS2008 Ver 이상이라면 아래와 같은 형식으로 같단하게 취해줘도 되겠다.
public class SrcMachVo { public int MachTag { get ; set ; } public string MachName { get; set ; } } |
이제 mapper를 만들어 볼것이다.
<?xml version="1.0" encoding="utf-8" ?> <sqlMap namespace="Dao" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ibatis.apache.org/mapping"> <alias> <typeAlias alias="srcMach" type="Dao.model.vo.SrcMachVo"/> </alias> <resultMaps> <resultMap id="srcMachRsltMap" class="srcMach"> <result property="MachTag" column="MACH_TAG"/> <result property="MachName" column="MACH_NAME"/> </resultMap> </resultMaps> <statements> <select id="getSrcMach" resultMap="srcMachRsltMap"> SELECT * FROM TB_MACH </select> </statements> </sqlMap> |
위에 namespace에 root namespace인 project name을 넣어 준다.
alias에 DB와 메칭될 vo를 설정해 준다. alias는 뒤에 resultMap이라 던가 returntype의 값으로 사용할 것이다.
type을 보는 full path의 class 명을 넣어준다.
resultMap은 DB의 column과 Vo의 속성과 매칭 시켜주는 역활을 한다.
property에 Vo 속성값을 넣어 주고 column에 해당 DB의 column명을 넣어 준다.
이제 마지막으로 statements에 Query문을 넣어 주면 되겠다. 각 select, insert, update등으로 넣어 줄 수 있다.
id에는 중복되지 않게 어떤 Query를 사용할 것인지 지정해 주는 속성이 되겠다.
resultMap속성은 위에 지정한 resultMaps의 id를 지정해 주면 된다. 이 resultMaps는 여러개 지정가능하며 재 사용 가능하다.
이 mapper file도 빌드 액션을 리소스포함에 넣어 준다.
이제 만든 mapper를 등록시켜 줄 것이다. 등록은 SqlMap.config file의 sqlMaps안에 해당 file을 매칭 시켜 주면 된다. 이는 providers 설정과 같은 형식을 취하고 있다. file을 매칭시켜 보자.
이제 라이브러리 안에서 사용할 Factory를 재 정의 할 것이다.
using System.Xml; using IBatisNet.Common.Utilities; using IBatisNet.DataMapper; using IBatisNet.DataMapper.Configuration; public class DaoFactory { private static object syncLock = new object(); private static ISqlMapper mapper = null; public static ISqlMapper getInstance { get { try { if (mapper == null) { lock (syncLock) { if (mapper == null) { DomSqlMapBuilder dom = new DomSqlMapBuilder(); XmlDocument sqlMapConf = Resources.GetEmbeddedResourceAsXmlDocument("conf.SqlMap.config, Dao"); mapper = dom.Configure(sqlMapConf); } } } } catch { throw; } return mapper; } } } |
대략 이런식이 되겠다. ("conf.SqlMap.config, Dao") 이부분은 해당 사항에 맞춰 쓰면 되겠다.
마지막으로 Dao를 만들어 주면 사용할 준비는 완료 된것.
public class SrcMachDao { public IList<SrcMachVo> getSrcMach() { IList<SrcMachVo> list = DaoFactory.getInstance.QueryForList<SrcMachVo>("getSrcMach", null); return list; } } |
"getSrcMach"이부분은 mapper의 id와 매칭 된다. 그리고 null 부분은 받을 수 있는 인 수 인다. dot net에서 이 부분에 대해서는 나중에 포스팅 하겠다.
준비가 이걸로 끝났다.
이제 사용 하면 된다.
web이든 windowsapp이든 해당 lib를 포함시킨 후 Dao만 가져다 쓰면 끝
만약 form이라면 이런식으로 사용하면 된다. list에 Data가 채워져 있을 것이다.!
public Form1() { InitializeComponent(); SrcMachDao machlist = new SrcMachDao(); IList<SrcMachVo> list = machlist.getSrcMach(); } |
참고 : VS2010 이상 컴파일이 제대로 되지 않을 경우 프레임워크를 4.0으로 놓고 해 보시길..
web.xml
Test 진행에서는 딱히 손댈만한 곳이 없다!
<?xml version="1.0" encoding="UTF-8"?> |
/flex/services-config.xml
<?xml version="1.0" encoding="UTF-8"?> |
remoting service를 사용하여 Test를 진행 할 테니 기본 채널을 설정해 준다!
java package를 만들어 준다!!
com.test.HelloTest.java
package com.test; |
com.test.HelloTest2.java
package com.test; |
flex-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:flex="http://www.springframework.org/schema/flex" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"> <flex:message-broker /> <context:annotation-config /> <context:component-scan base-package="com.test" /> <bean id="Hello" class="com.test.HelloTest"> <flex:remoting-destination /> </bean> </beans> |
java annotation사용을 위해 context스키마를 추가해 준다!
<flex:message-broker />
사용하여 message broker를 /felx/services-config.xml.에 있는 amf와 연결시킨다
<context:annotation-config />
<context:component-scan base-package="com.test" />
annotation 사용을 하는 package scan을 한다.
<bean id="Hello" class="com.test.HelloTest">
<flex:remoting-destination />
</bean>
annotation 사용하지 않는 bean을 등록한다.
flexSource.mxml
<?xml version="1.0" encoding="utf-8"?> |
Source를 build해서 확인 버튼을 눌렀을때 label에 값이 정상적으로 올라왔을 때 정상적으로 생성됬다고 볼 수 있다!
Test Project를 생성한다 Dynamic Web Project와 Flex Project방식 있는데 Dynamic web Project로 하겠다.
java_src를 하나 만들어준다.
자.. Project가 하나 생성 됬다! 여기에 Blazeds-spring war를 추가 할꺼다!
import를 선택해 주시고!
lib에 Spring까지 추가 됐는지 확인한다!
web.xml에 기본 정의되어 있는 index.jsp를 하나 만들어 준다.
여기까지가 웹설정!! 이제 Flex Project로 Convert 할꺼다!!
Convert 하면 Error가 하나 떨어진다! 간단하게 퇴치해 주쟈!!
여기까지 됬다면 대략 준비는 됬다!! 그런데 필자는 Flex Project환경과 최대한 비슷하게 만들어 줄려고 조금더 손을 봤다!
설정된 최종루틴은 이 정도 되겠다!!
tomcat server에 등록한 후에 Test해서 Page가 제대로 올라오면 정상적으로 생성됬다고 보면되겠다!
이렇게 말고 Flex Project를 생성해서 Blazeds-spring.war만 추가해줘도 간단하게 되긴한다! 우선 간단한 방법보다는 세세한 설정을 위해 복작한 방법을 채택해 봤다!! 연관관계가 어떻게 되는지 확인해 보쟈!! 우선 하는거보다는 이해하는게 우선이니!!