2012-07-26 3 views
0

저는 DB 애널리스트이고 천천히 자바를 배우고 있습니다. 프로그래밍 서적을 읽고 웹을 검색하여 무엇을 이해하고 있습니까? 자바 세계에서 흔히 볼 수있는 것과 자바 프로그래머들이 어떻게 생각하는지. 검색을 많이 후DB에서 UI로 테이블을 검색하고 표시하기 위해 어떤 객체를 만들어야합니까?

난 아직도 아마이 간단하고, 올바른 방법으로, 정말 일반적인 문제 resoleve하는 방법을 찾을 수 없습니다 :

목표를하십시오 DB 테이블의 데이터를 표시하려면 (의 말을하자 성을 단순화하기 위해 "고객"테이블).

질문 : 어떻게 모델을 만드나요? 나는 거기에 애플 리케이션, DB 레이어 (내가 "DAO"를 만드는 것입니다)에 대한 몇 가지 레이어가있을 것입니다 다음 드 "고객"개체, 그리고 (여기에 내 가장 큰 우려 중 하나입니다) 고객 "개체? "고객"컬렉션? 그 맞습니까? 고객에게 다음 계층 (보기)으로 보내기 위해 고객 콜렉션이 있어야합니까?

  1. 어떤 오브젝트를 사용하고 있습니까?
  2. 아마도 컨트롤러가 누락되었습니다.
  3. 사용자가 UI를 사용하여 고객 중 하나를 수정하는 경우 CustomerS 객체를 사용해야합니까? 고객을 찾아서 업데이트합니까?

저는 이미이 작업을 수행하는 프로그램을 만드는 방법을 알고 있지만, 유용성, 효율성 및 재사용 성을 보장하기위한 우수 사례를 찾고 있습니다.

많은 패턴과 샘플을 보았지만 모든 요소는 모든 요소가 아닌 하나의 요소 (한 고객)에 대해 이야기합니다.

감사합니다.

+0

여기서는 데이터베이스의 역할에 대해 설명하지 않습니다. 이상적으로 이것은 런타임 메모리에 적합 할 수있는 것보다 더 큰 모든 데이터의 영구 저장 장치입니다. 데이터베이스를 업데이트해야하며 메모리에있는 객체의 로컬 (부분 집합) 캐시에 대해 걱정하십시오. – Randy

+0

Java EE 앱은 무엇입니까? 메모리에 객체를 캐시 할 수 있습니까? 또는 필요에 따라 선택/업데이트 하시겠습니까? 클라이언트 앱에서 클라이언트 - 서버 앱으로 이동하는 데 많은 변화가 필요하지 않은 앱을 프로그래밍하는 방법을 배우는 데 집중하려고합니다. – DamX9

답변

0

귀하는 올바른 방향으로 책임을 분담하고 있습니다. 뷰/컨트롤러는 모델을 신경 쓰지 않습니다.

은 기본적으로 당신은 모델의 아이디어 작업 할 -> 제어 -

당신이 달성하고자하는 내용에 따라 (자바 제어 /보기의 역할은 일반적으로 병합하지만)>보기, 당신은 단순히 제공 할 수 고객 목록을 유지하는 TableModel 구현입니다. 내부적으로이 아마 단순 위해, Collection 어떤 종류의 관리를 받게되고, 다음 사용자에게 모델의 "쇼"내용에 사용되는 어떤 종류의

JTableList을 말한다. 그런 다음 사용자가보기를 탐색하고 검색하고 필터링하고 내용을 편집 할 수 있습니다.

JTable은 개별 셀에 대한 변경 사항을 모델에보고하여 내부 Customer 개체를 적절하게 업데이트 할 수 있습니다.

이제는 TableModel을 직접 입력 할 필요가 없습니다. Customer 개체를 Collection으로 직접 모델링하고 나중에 해당 모델에 제공 할 수 있습니다. 그것은 당신이 그것을 어떻게 구현하길 원하는지에 달려 있습니다.

UPDATE는

정말 당신의 디자인에 온다

을 (내가 코멘트에 넣고 있지만, 공간이 부족 거라고) 당신이 어떻게 당신에게 데이터를 표현하고자합니다.

저는 개인적으로 논리적인 경로/연결/관계를 시도하고 있습니다.

Customer이 있다고합시다. 해당 고객에게는 많은 Contacts 명이있을 수 있습니다. 나에게 CustomerContact의 객체 표현을 만들고 Customer 객체를 통해 고객 연락처에 직접 액세스 할 수 있습니다 (예 : Customer.getContacts).

다른 사람들은 ContactsFactory을 대신 사용해야하는 것이 더 적절하다고 생각할 수도 있습니다. (개인적으로, 나는 둘 다 할 것이고, Customer.getContacts 메쏘드는 ContactsFactory.getContactsFor(Customer)을 당신을 대신하여 부를 것입니다 - 이것은 데이터 객체의 생성이 중앙 집중적이고 잘 문서화 된 도메인에 남아있게합니다)

그러나 나는 직접적인 수단을 제공하지 않을 것입니다. SalesHistory과 같은 것을 얻으십시오. 내 견해로는, 둘 사이에는 "약한"연결 만 존재합니다 (기술적으로는 존재하지 않지만 인수를 위해서 - 나는 Customer 객체를 다루기를 원한다면, 나는 그것과 직접적으로 관련된 속성만을 처리해야합니다. 고객).

그러나 나는 Customer을 전달하고 모든 SalesHisorty (또는의 필터)을 반환하는 수단을 제공하는 일종의 SalesHistoryFactory을 가지고 있습니다.

엔티티 뷰로 변환하는 데이터베이스의 양은 사람들이 데이터에 액세스 할 수있는 방법에 따라 다릅니다.

중요한 접근법 중 하나는 방정식에서 데이터베이스를 제거하는 것입니다. 데이터베이스 구조가 때로는 그럴 수 있습니다. 당신은 또한 "만약에"의 관점에서 그것을보고 싶다.

데이터가 웹 인터페이스 (예 : JSON)에서 제공 되었다면 어떻게 처리할까요? 개체 모델로 처리 할 수 ​​있습니까?

나는 많은 모델을 Interfaces으로 구현할 것이다. 이렇게하면 필요에 따라 여러 구현을 개발할 수 있습니다.

하지만 그건 MHO "어떻게하면"데이터베이스를 변경 했습니까? 데이터 모델은 어떻게 처리할까요?

+0

DB에서 여러 테이블을 쿼리해야한다면 무엇이 가장 일반적인 aproach입니까? 각 엔티티에 대해 개별적으로 각 테이블을 쿼리 한 다음 데이터를 조인하거나 하나의 쿼리 만 만드는 개체가 있습니다. 간단한 예로 PK와 FK가있는 테이블과 FK가있는 테이블과 설명이 있습니다. – DamX9

+0

@ DamX9 내 업데이트를 확인하고 방을 다음과 같이 실행하십시오. P – MadProgrammer

+0

알겠습니다. 공장에 관해서는, 당신은 DAO를 올바르게 배치 할 수 있을까요?(DB를 잊어 버리는 것은 정말 어렵습니다. 저는 DB 분석가, LOL입니다.) – DamX9

관련 문제