2011-02-09 1 views
0

RDBMS에 대해 알게 된 이후로 관계형 모델에서 생각하기 시작했고 객체 지향적으로 생각하기 시작했습니다. 이제 Java 데이터 구조에 데이터를 저장하고 쿼리하는 데 문제가 있습니다.관계형을 객체 지향으로 변환하는 가장 좋은 방법은 무엇입니까?

서로 관련이있는 엔티티 집합이있는 응용 프로그램을 작성하여 각 엔티티 자체 클래스를 만들었습니다. 각 엔티티의 속성은 인스턴스 변수입니다. 좋아, 나는 우리가 지금까지 좋은 것 같아. TitleGame은 모두 개체입니다. Game ISA Title이므로 은 Title에서 상속해야합니다 (실제 게임은 게임을 게임의 이름으로, 제목은 게임 이름으로 생각하십시오).

메인 클래스에 게임 세트가 있으며 특정 게임을 찾고 싶을 때 반복 할 수 있습니다. 특정 타이틀을 어떻게 찾을 수 있습니까? Title이 상속되기 때문에 나는 일련의 타이틀을 가지고 있지 않으므로 게임을 반복해야한다고 가정하고 제목의 이름을 찾을 때 세트에 추가하여 고유 한 타이틀 만 가져옵니다.

게임을 변경할 수 있습니다 (isBought는 변경할 수 있습니다). 그래서 나쁜 생각을 설정합니까? 자바에서 엔티티 세트를 만드는 가장 좋은 방법은 무엇입니까? 집합 대신 맵을 사용하여 ID를 객체에 매핑합니까?

답변

4

개체 관계형 간격을 고정하는 것은 쉬운 작업이 아닙니다. 이를 수행하는 ORM (object-relational mapping) 프레임 워크가 있습니다. 그러나 그들은 약간의 학습 곡선을 가지고 있습니다. HibernateEclipseLink은 Java - JPA (java 지속성 API)에서 ORM 표준의 두 가지 구현입니다.

+0

나는 다른 관련 질문에서 그것들을 보았지만 나는 소프트웨어로 무엇이든 변환하려고하지 않았다. 나는 단지 내 마음을 변환해야합니다. 나는 잘못된 길을 생각하고 있고 다른 누군가가 그 문제에 접근하는 방법을보고 싶었습니다. – styfle

+0

@styfle ORM의 개념은 두 가지 (RDBMS, OOP)를 매핑하는 데 도움이됩니다. – Bozho

+1

@styfle, 당신의 머리 속에 함께 작동하는 두 가지 아이디어를 가지고있는 문제는 "임피던스 불일치"라는 용어가있는 다른 사람들에게 충분한 문제가되었습니다. ORM 도구는 이것을 통해 여러분이 아주 자연스러운 방법으로 자바 데이터베이스로 작업 할 수있게 해줍니다. – Quaternion

0

관계형 모델과 OO 모델간에 근본적인 차이가 없습니다. 관계형 데이터 모델은 관계 유형 및 관계 연산자 (및 다른 유형도 지원) 유형 시스템입니다. OO 데이터 모델은 상속을 지원하는 유형 시스템입니다.

이러한 패러다임을 고려할 때 종종 사람들이 범하는 실수는 OO 용어로 형식 (클래스)을 관계형 모델의 관계 또는 튜플과 동일시하는 것입니다. 날짜와 Darwen은 이것을 First Great Blunder이라고 부릅니다. 현실은 그것보다 훨씬 간단합니다. 형식은 관계형 모델과 OO 모델 모두에서 유형입니다. 두 패러다임은 서로 직교하고 상호 보완 적이기 때문에 서로 배타적이지 않습니다.

많은 OO/RM 불일치가 실제로 의미하는 것은 프로그래머가 자신의 소프트웨어 도구가 쉽게 지원하지 않는 특정 패턴의 변형을 구현하기를 원한다는 것입니다. 관계형 모델은 탓할 필요가 없습니다. 소프트웨어 제작자가 있습니다.

관련 문제