Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

자동 증가 필드를 RAD 서버에서 인터베이스를 활용하여 구현하기


Recommended Posts

스테픈 볼 (Stephen Ball)"Auto Inc Fields in RAD Server with InterBase" 를 번역했습니다. (원문 작성: 2020년 4월 9일, 최종 번역: 2022년 8월 22일)

자동 증가 필드를 RAD 서버에서 생성하는 방법: 인터베이스(InterBase), 파이어닥(FireDAC), TEMSDataSetResource를 활용하여 손쉽게 구현하기

원격 서버에 새 레코드를 추가하려면, 새 레코드에 주어질 레코드 ID 값을 서버에서 받아올 수 있어야 한다. 이것은 원격 서버가 제공해야 하는 주요 기능 중 하나이다. 다행히 인터베이스(InterBase), 파이어닥(FireDAC), TEMSDataSetResource을 활용하면 RAD 서버에 손쉽게 구현할 수 있다.

인터베이스에는 제너레이터(generator)라는 개념(concept)이 있다. 제너레이터는 고유한(unique) 일련 번호 정수 값을 제공한다. 따라서 이 값을 프라이머리 키 필드에 제공할 때 사용할 수 있다. 인터베이스 데이터베이스 1개 당 만들 수 있는 제너레이터는 최대 32,767개까지인데, 해당 데이터베이스 용으로 1개를 만들어서 사용하거나 또는 테이블 당 1개를 만들어서 제너레이터 이름에 해당 테이블 이름을 넣어서 사용하는 경우가 대부분이다.

파이어닥(FireDAC)에 있는 쿼리(query) 컴포넌트의 UpdateOptions 프로퍼티 중 AutoInc 지정

FireDAC 프레임워크에는 데이터베이스의 필드를 자동-증가 필드처럼 다룰 수 있는 기능이 있다. 자동-증가(Auto-Incremental) 필드 데이터 타입이 없는 데이터베이스를 사용할 때는 쿼리(query) 컴포넌트의 UpdateOptions 프로퍼티들에서 해당 제너레이터와 그 제너레이터를 사용할 키 필드(들)을 지정하면 된다.

인터베이스에 샘플 테이블과 제너레이터를 생성하고, RAD 서버에서 REST 방식으로 (자동 증가 필드가 있는) 새 레코드를 추가하도록 구현하고 테스트까지 하는 4분 분량의 데모 (영문):

위 비디오에서는 제너레이터 1개를 사용한다. 사용할 제너레이터의 이름을 G_STUDENT라고 지었는데 그 이유는 해당 샘플 데이터베이스에 있는 STUDENT 테이블에서 사용되는 ID를 제공하기 때문이다.

개발 화면에서 해당 쿼리 컴포넌트를 선택하고, 오브젝트 인스펙터 창에서 UpdateOptions 프로퍼티를 선택한 후 프로퍼티 2개를 아래와 같이 지정한다.

  • AutoIncFields – 자동 증가 값이 들어가야 하는 필드(들).
  • GeneratorName – 해당 데이터베이스에 정의되어 있는 제너레이터들이 목록으로 표시되므로 그 중에서 원하는 것을 고르면 된다.

spacer.png

그 다음 설정해야 하는 것은 TEMSDataSetResource의 옵션이다. 아래 그림과 같이 KeyFields 프로퍼티에 해당 프라이머리 키 필드 (이 예제에서는 STUDENT_ID)를 지정한다.

spacer.png

비록 필드에디터 (FieldEditor, 쿼리 컴포넌트에서 마우스 오른쪽을 클릭하고 "Fields Editor…"를 선택)를 사용하여 해당 쿼리 컴포넌트에 필드(들)을 직접 추가할 필요가 없긴 하지만, 혹시라고 필드에디터를 실행한다면 해당 필드 (이 예에서는 STUDENT_ID 필드)는 보통 정수형 필드가 아니라 TFDAutoIncField로 지정되어 있는 것을 알 수 있다.

RAD 서버에 자동 증가 필드 설정이 잘 되었는 지 테스트하려면, SwaggerUI 또는 REST 디버거를 사용할 수 있다. 해당 사용법은 다른 글에서 이미 다루었기 때문에 여기에서 반복하지는 않겠다. 하지만, 간단히 참고할 수 있도록 위 비디오에서 RAD 서버에 자동 증가 필드 구현이 잘 되었는 지 REST 디버거를 사용하여 테스트하는 부분부터 재생되는 유튜브 링크는 다음과 같다. 

이글은 원래 Stephen Ball’s Technical Blog에 있던 글이다.

 

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.