'DataSet'에 해당되는 글 1건

  1. 2012.07.03 MiPlatform 에서 Dataset 리턴 받을 때 주의 점.... (4)

얼마전 아주 이상한일이 있었습다....

다름이 아닐 Dataset에 분명히 값을 집어넣고 Spring서버로 보냈는데....

처음에는 아무 이상없이 데이터가 넘어 가던 것이 왠일인지 두 번째 보내려고 할 때는 당최 값이 Dataset에 들어가지 않는 것이었습니다.

세팅할 때 문제가 있나 해서 세팅하는 값을 Alert으로 확인도 해보고, Dataset에 Row를 잘못 찾아넣어서 그러나 하고 여러가지 시도를 해봤는데 무슨수를 써도 값에는 이상이 없었습니다.


그래서 여기저기 또 찾고 찾다가....인터넷에서는 못찾고...^^;;; MiPlatform으로 개발을 오래 하신 분에게 여쭤봤습니다. 그래서 겨우 답을 찾을 수 있었습니다.


Logic


일단 MiPlatform과 Spring을 이용한 Logic은 다음 그림과 같습니다.



Miplatform과 Spring을 통한 기본 로직Miplatform과 Spring을 통한 기본 로직


그런데 문제는 저 로직을 한 번 거치고 나면 두 번째는 Dataset에 특정 컬럼에 데이터를 입력하려고 Spring서버로 보내면 Dataset에 넣었던 데이터는 Null 값으로 넘어 오는 문제였습니다....



문제점이 생기는 부분....문제점이 생기는 부분....


윗 부분이 바로 문제가 있는 부분이죠....빨간글씨...... 아무리 데이터를 넣어도 Spring서버에는 Null로 넘어 옵니다...쿼리에 조회값을 넣어서 넘긴건데 당최 쿼리는 Null이 들어가서 돌더군요;;;;;;


문제해결


알고 봤더 제가 사용하던 쿼리에 문제가 있었습니다.....;;;;

제가 보내는 Dataset과 다시 return받는 Dataset을 동일 한 것으로 해 놨는데 리턴 할 때 쿼리의 컬럼이 하나만 선언되어있다보니 Return받을 때 Dataset에 있는 Column이 사라지는 문제가 있더군요....


예시를 하나 들자면 이렇습니다.


Dataset에는 컬럼이 두개 있습니다. A, B이죠....


Dataset 예제Dataset 예제


이 중 저는 B에 데이터를 넣고 보냈습니다. 그리고 퀄리를 실행할 때에는 Dataset에 B컬럼의 데이터를 조회값으로 넣고 실행하게 됩니다.



만든 Dataset에 조회조건 넣기만든 Dataset에 조회조건 넣기


이렇게 데이터를 넣고 Spring에 보내게 되면 "조회조건"값으로 쿼리를 실행하게 됩니다.



조회조건으로 쿼리를 실행합니다.조회조건으로 쿼리를 실행합니다.


이렇게 말이죠..... 그런데 여기서 문제가 있었습니다. 조회해 오는 컬럼을 하나만 선언하고 나니 Return받게 되는 Dataset은 A라는 컬럼 하나만 남게 되는 것입니다.



Return받은 이후 변경된 Dataset의 모습(예)Return받은 이후 변경된 Dataset의 모습(예)


이렇게 말이죠.....그러다 보니 한 번 조회후에 다시 B 컬럼에 "조회조건"을 아무리 집어넣고 Spring서버에 보내도 B컬럼으로 넘어 오는 값을 Null로 와서 조회 조건이 Null....이라는 값으로 조회를 하게 되는 것이었습니다.



같은 조건으로 B컬럼에 '조회조건'을 넣어도 Spring에서는 아무값이 없는 상태로 넘어온다.같은 조건으로 B컬럼에 '조회조건'을 넣어도 Spring에서는 아무값이 없는 상태로 넘어온다.


그래서 쿼리를 바꿨습니다......




이렇게 말이죠.....Spring에서는 iBatis(MyBatis 개명 전 버전임)를 쓰고 있어서 조회조건으로 넘겨주는걸 조회절에 하나 더 넣어서 컬럼 B로 선언해 주었습니다. 그랬더니 두 번째 Dataset을 활용할 때 값이 제대로 Setting되고 조회조건도 잘 넘어 가는 것을 확인했습니다.


저는 자동으로 컬럼을 유지해 주는줄 알았는데 Miplatform으로 오래 작업하신 분의 설명은 아니더군요....

개발환경에서 Dataset 컬럼을 선언해두는 건 단지 편의를 위해서 만들어 둔다는 것이었습니다. 리턴 받으면 리턴받은 컬럼대로 Dataset의 컬럼은 변한다고 하더군요....


마무리..


아주 이것 때문에 엄청헤메였습니다. 하지만 해결을 하고 나니 어의가 없더군요....보강이 필요한 부분인 것같습니다...^^




Posted by gofly

댓글을 달아 주세요

  1. 2012.07.03 17:56  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of https://belong2jesus.tistory.com BlogIcon gofly 2012.07.04 10:49 신고  댓글주소  수정/삭제

      ^^ ;;;;; 이거 어쩌죠......저도 여기서 개발을 하고 있는 입장이라 여기 플랫폼은 이쪽 직원분들이 만들어 놓은거라 자료를 구하기가 힘드네요;;;;;;

      다만 자료를 POST형태로 파라미터로 보내고, 받을 때는 POST형태로 XML로 받아서 화면에 뿌려주더군요.....

      원래는 데이터셋을 주고 받는게 더 간편한게 있다고하던데 Dataset와 DB Column을 맞춰주면 자동으로 Generate해서 셀렉트 인서트같은 것들이 생성되는....그런데 아쉽게도 이번 프로젝트에서는 그렇게 구현은 안되어있네요....


      저도 Miplatform으로 개발하는건 이번이 처음이구요....;;;;;;

      그래도 Tip을 들이자면 Tobesoft에서 제공하는 Java용 API를 잘 살펴보시고 Miplatform과 통신하는 부분만 잘 만드시면 뒷단 Spring단은 기존에 Controller와 Service구현으로 generalDao(iBatis)구현해서 사용하는건 똑같습니다.

      Miplatform과 통신은 확실히 논리적 URL인 http://host/path/aaa.do 뭐 이런식으로 POST형태로 데이터를 주고 받더라구요 제가 하고 있는 framework에서는요.....

      큰도움을 못들여서 죄송합니다.....;;;; 정보누설을 두려워하기보다....핵심부분들을 Jar로해서 바이너리 파일을 배포해 놓은거라(iBatis도 막 바꿔놨더군요...)........보셔도 큰 도움은 못될 것 같아서 알려드리지 못하는 것이지 이해해 주세요;;;;

  2. 2012.07.04 11:05  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • Favicon of https://belong2jesus.tistory.com BlogIcon gofly 2012.07.04 13:54 신고  댓글주소  수정/삭제

      큰도움 못드려 죄송하네요....^^;;;;
      기술자로서 개발자로서 그럴 때 얼마나 절실한지 아니까요.... 자주 오세요 또 제게 알려주실거 있음 알려주세요....저도 부족한터라...허허허..^^ 그럼 좋은 하루 되세요....