Java 사용자 지정 serialization 관련 문제가 있습니다. 객체의 그래프를 가지고 있고 클라이언트에서 서버로 루트 객체를 직렬화 할 때 어디서 멈추는 지 구성하려고합니다.개체 그래프의 일부를 serialize
예제 시나리오를 작성하여 명확하고 명확하게 만들어 보겠습니다. 내가 유형
의 클래스 회사
이 직원 (추상)
관리자가 확장 직원
장관은 직원
분석이 여기에 관계가있는 직원
프로젝트
확장 확장 :
회사 (1) - - (n) 종업원
관리자 (1) --- (n) 프로젝트
애널리스트 (1) --- (n) 프로젝트
저는 클라이언트 측에서 새로운 회사를 만들고 10 명의 직원 (신규 또는 기존)을 할당하고이 새로운 회사를 서버에 보내고 싶습니다. 이 시나리오에서 기대하는 것은 회사와 모든 경계 직원을 서버 측에 직렬화하는 것입니다. 관계를 데이터베이스에 저장하기 때문입니다. 기본 Java 직렬화 메커니즘은 정적 또는 일시적인 필드를 제외한 전체 객체 그래프를 직렬화하기 때문에 아무런 문제가 없습니다.
내 목표는 다음 시나리오에 대한 것입니다. 상상해보십시오. 회사와 1000 명의 직원을 서버에서 클라이언트 측으로로드했습니다. 이제 회사 이름 (또는 회사에 직접 속한 다른 필드)의 이름을 바꾸고이 레코드를 업데이트하기 만하면됩니다. 이번에는 회사 개체 만 서버쪽에 보내고 전체 직원 목록은 보내지 않고 싶습니다. (이름을 업데이트하면 직원들이이 용도에 적합하지 않습니다.) 내 목표는 또한 회사와 직원을 양도 할 수는 있지만 Project-Relations는 양도 할 수 없도록 구성 할 수 있다는 점을 포함합니다.
모든 단일 Entity-Object에 대해 writeObject, readObject를 구현하지 않고 일반적인 방법으로이 작업을 수행 할 수 있는지 알고 있습니까? 당신의 제안은 무엇입니까?
정말 감사드립니다. 나는 어떤 아이디어라도 열어두고 명확하지 않은 질문에 답할 준비가되어 있습니다.
안녕 Bozho, 빠른 답변 감사합니다. 나는 DTO 솔루션이 좋은 것이라고 생각한다. 이것은 코드 유지 보수 시간을 줄이기 위해 설계되었으므로 DTO와 DO에 대한 복제본을 따로 보관합니다. 우리는 현재 DTO 통합없이 문제를 해결해야하는 단계에 있습니다. 그렇지 않으면 우리는 클라이언트에 캐시를 가지고 있으므로, 이번에는 DTO에 따라 업데이트되어야합니다. – Max