C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[29491] Re:c++ builder가 자동으로 제공하는 auto commit방식에 대해...
박지훈.임프 [cbuilder] 1467 읽음    2004-04-24 04:36
첫번째.
글쎄.. 그런 경우는 모르겠군요. RDBMS에서는 그런 경우는 못봤는데요.
가능성이라면, 명시적으로 코드로 트랜잭션을 시작하지 않았거나. 아니면 로컬 디비일 경우.
혹은, BDE와 dbExpress, ADO 사이에 차이가 있을 지도 모르겠군요.
계속 해결이 안되시면, 구체적으로 1. 어떤 방식으로, 2. 어떤 디비에, 3. 어떤 코드로 연결하셨는지 써서
다시 질문을 올려보시지요.

두번째.
김상윤님께 그런 얘기를 하신 분은 아마도 턱시도나 TMax를 말한 걸 겁니다.
(TMax는 사실상 턱시도를 본따서 만들었기 때문에 턱시도 기준으로 설명하지요.)
턱시도는 일단 VCL 자체나 혹은 서드파티에도 데이터셋 컴포넌트가 나온 게 없고(제가 찾아본 바로는)
데이터셋 형태로 만들기도 좀 힘듭니다. 일반적인 데이터베이스 프로그래밍에서의 데이터 입출력 구조와
좀 다르거든요. 물론 일반적인 DB의 정형화된 형태만 처리할 수 있도록 데이터셋으로 만들 수는 있겠지만,
턱시도나 티맥스를 이용하는 실제 업무에서는 비정형의 데이터도 많이 처리하기 때문에 데이터셋 형태로는
좀 애매하더군요. 구조체로 처리한다는 말이 그런 때문일 거구요.

제가 바로 지난번에 했던 프로젝트의 핵심이 그거였는데.. 말씀하신 것처럼 구조체 형식으로 처리하더군요.
턱시도나 티맥스를 쓰는 경우 미들티어 서버에서는 대부분 오라클 ProC로 비즈니스 로직을 구현하니까
C++ 구조체 외에 다른 대안이 없고요. 클라이언트쪽에서 어떻게 처리할 것이냐가 문젠데, 말씀드린 것처럼
데이터셋 구조로 처리하기가 좀 애매했습니다. 일단 데이터는 바이트 배열로 돌아오고요.

제가 했던 작업은 티맥스를 미들티어로 쓰는 업무프로그램의 클라이언트단을 델파이로 재개발하기 위한
프레임워크를 만들어준 건데... 초기에 설계시간은 커녕 티맥스같은 서버를 처음 접했는데도 그 성격을
제대로 파악할 시간도 부족했죠. 그래서 데이터셋 형태로 만들 수 있을지 없을지를 단 며칠동안 결정해야
했습니다. 결론은 데이터셋 방식으로는 좀 곤란하다였는데, 티맥스와 데이터를 주고받는 방식도 좀 그렇긴
했습니다만 그쪽 회사에서 데이터를 사용하는 방식이 좀 특이해서 더욱 곤란했죠.

그렇다고 정적인 구조체로 처리하는 것도 좀 무식하죠. 아마도 보통은 그런 식으로 하는 것 같습니다만.
그래서 데이터셋과 사용법은 꽤 비슷하지만 완전히 새로운 컴포넌트를 만들어서 해결했었습니다.
물론 연결할 입출력 컴포넌트들도 완전히 새로 만들었고요. 그래도 일반적인 델파이 방식(C++빌더 방식)으로
다룰 수 있게 만들어주었었습니다.

지금 생각해보면...
티맥스 연결을 데이터셋으로 만들 수 있을 거 같기도 하고.. 역시 안될 거 같기도 하고... ^^;;;;
데이터셋 컴포넌트를 만들어가면서 연결해서 데이터를 주고받아보고 그러면서 테스트해봐야 확실히 결론을
내릴 수 있을텐데, 다시 해볼 시간도 환경도 안되고.. 물론 돈벌이도 안되고...

명확한 답변은 못됩니다만, 약간의 애매함이랄까 난점이랄까 그런 면이 있다는 거고요.
그건 턱시도나 티맥스 자체가 정형화된 데이터만을 다루지 않기 때문이라고 할 수 있을 거 같습니다.
다시 말해, C++빌더나 델파이뿐 아니라 비주얼베이직이나 파워빌더라고 해도 마찬가지일 겁니다.

그럼...

p.s.
참, 질문은 한번에 하나씩만 합시다~


김상윤 님이 쓰신 글 :
: 첫번째는...
:
: 하나의 트렌젝션이 a,b 테이블에 insert하는 업무가 있다고 가정하구요...
:
: a();  //a 테이블에 insert
: b();  //b 테이블에 insert
: 라고 한다면....
:
: auto commit방식을 쓴다면
: b(); 에서
: exception이 발생하면
: a()에 부분이 rollback되지 않는다는게 사실입니까?
:
: 이러면 이게 무슨 트렌젝션 관리입니까??
: 한 트렌젝션이 아니고 결국 두 트렌젝션으로 나뉘게 되는거 아닙니까?
:
: 두번째는
: 3-tier아키텍쳐구조로 가면서 business로직이 미들웨어 존재한다고 가정하면
: c++ dataSetcomponent를 사용하지 않고 valueObject를 struct로 생성하여 사용하도록 한다.
: 가 말이 됩니까?
: 아니면 서버용 dataSet과 clientDataset을 c++에서 제공을 해서 서버에서는
: 서버용을 쓰고 클라이언트는 클라이언트용을 쓰고 하는겁니까..그럼 provider의 위치는
: 어디로 가는겁니까...-_-;;
:
: 궁금합니다..궁금해........ㅜ.ㅜ
:
:

+ -

관련 글 리스트
29485 c++ builder가 자동으로 제공하는 auto commit방식에 대해... 김상윤 844 2004/04/23
29491     Re:c++ builder가 자동으로 제공하는 auto commit방식에 대해... 박지훈.임프 1467 2004/04/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.