2014-09-17 2 views
1

Java EE, Spring, JPA 및 JSF를 사용하여 레거시 애플리케이션을 다시 작성하는 중입니다. 작품은 디자인 초기 단계에 있습니다. 기존 데이터베이스를 살펴 보았습니다. 많은 기둥이있는 테이블 몇 개가 있습니다. 그 중 하나에는 약 800 개의 기둥이 있습니다. 계획은 테이블과 데이터를 표준화하는 것입니다.많은 열을 가진 레거시 데이터베이스 테이블 용 JPA 엔티티 설계

많은 수의 열이있는 테이블에 대해 JPA 2.0 엔티티를 생성하기위한 상위 경계가 있는지 궁금합니다. 나는 작은 테이블이 더 좋다는 것을 이해합니다.

디자인 접근 방법에 대한 제안 사항은 무엇입니까?

답변

0

디자인과 관련해서는 할 수있는 것이별로 없습니다. 코드를 아주 깨끗하게 유지하는 간단한 접근법은 공통 도메인 컬럼을 추출하고 그 클래스로부터 @Embeddable 클래스를 생성하는 것입니다.

또 다른 옵션은 검색 자의 열이있는 구체화 된보기를 작성하고 해당 항목에 대해 별도의 읽기 전용 엔티티를 작성하는 것입니다.이 항목은 사용자가 아무것도 쓸 계획이없는 경우에만 작동합니다.

AFAIK JPA 및 그 가장 큰 공급자는 테이블의 열 수에 제한되지 않지만 해당 엔터티에 findAll()과 같은 작업을 수행하는 데 드는 비용은 실제로 매우 위험 할 수 있습니다.

+0

예제로 찾으려면 어떻게해야합니까? 캐싱 또는 지연로드를 사용하여 더 나은 성능을 얻을 수 있습니까? – Superman9999

+0

둘 다 사용하는 것이 가장 좋습니다. Lazy 로딩은 테이블을 여러 뷰로 나누고 테이블에 쓸 수있는 대신 사용할 수 있습니다. –

+0

Maciej에게 감사드립니다. 대부분 우리는 한 번에 하나의 레코드를 가져옵니다. 그래서 findByExample 성능에 대해 생각해보고 싶습니다. 한 번에이 테이블의 데이터베이스 행의 최대 100 개 필드를 UI (프런트 엔드) 페이지에 표시 할 수 있다고 들었습니다. – Superman9999

관련 문제