2009년 6월 8일 월요일

데이터베이스 테이블을 클래스 형태로 구현시 이슈

현재 개발 방법중에는 ORM이라는 개념을 이용한 Persistence Layer를 처리할 수 있는 프레임워크들이 존재한다. 여기서는 ORM에 대한 이야기를 하려는 듯 생각하는 분이 계실거 같아 미리 아니라고 이야기하고 싶어 잠시 언급했다.

이번 글에서는 이전 글 중에서 "Singleton pattern의 응용 샘플" 에서 설명했던 데이터베이스 커넥션및 access를 줄이는 방법을 제시했었는데, 실제 이를 응용하여 구현시에 이슈가 되는 상황이 있어 잠시 언급해 본다.
간단하게 말하면 '데이터베이스 테이블을 클래스 형태로 구현시의 이슈'이다. ORM과는 다른 관점에서 보아야 한다. 왜냐하면 데이터베이스에 쿼리를 날리는 것이 아니라 순순하게 테이블의 내용을 클래스에 쿼리로 처리하는 것과 동일한 형태로 처리해야 하기 때문이다. 이번에 발생한 이슈는 다음과 같다.

- 검색
- 정렬
- 중복제거

위의 세 이슈는 데이터베이스 쿼리시에 항상 존재하는 것이다. 즉 쿼리로 간단하게 처리할 수 있는 문제인데 이를 클래스 안에서 Collection을 통해서 처리할 때는 어려움이 존재한다. 일단은 해당하는 모든 기능에 대해서 구현의 이슈는 다르기 때문에 해당 이슈를 자바 코드에서 구현한다면 어떠한 키워드가 존재하는지만 소개한다.
다음에 기회가 된다면 예제를 만들어서 각 이슈에 대한 샘플코드를 통해서 소개해 볼 수 있었으면 좋겠다. 일단은 키워드만 언급해 보자.

# 검색
- 데이터베이스 : LIKE문 사용
- 자바코드 : indexOf, substring, compareTo 사용

# 정렬
- 데이터베이스 : ORDER BY (ASC, DESC)
- 자바코드 : 정렬 알고리즘 구현(주로 작은 데이터일 경우 버블 정렬 이용됨)

# 중복제거
- 데이터베이스 : DISTINCT 사용
- 자바코드 : 중복제거 처리


키워드만 언급하면 필자가 생각해도 답답하다. 특히, 중보제거 처리는 실제로 해보니 데이터베이스를 구현한다면 얼마나 어려운지 알게될 정도로 제법 복잡한 느낌을 지울 수가 없었다. 그래도 일단은 위와 같은 구현 이슈를 통해서 처리할 수 있다는 것을 알아두자.

끝으로 "Singleton pattern의 응용 샘플" 와 오늘 이야기한 개념을 사용하면 실제로 Memory DB를 사용하는 것처럼 검색과 리스트 처리가 휠씬 빨라진다. Java Heap에서 돌아가는 것이니 Memory에서 바로 얻어오는 것이나 다름없기 때문이다.

댓글 없음: