조언을 주거나 따르는 방법에 대한 힌트를 제공해 줄 수 있습니까? POJO에서 BankHistoryData라고 할 수 있습니다. 두 테이블의 데이터를이 POJO (주 테이블 - 은행 및 그 아카이브 - BankArchive)로 복사하고 싶습니다. 테이블에는 기본적으로 같은 필드가 많으므로 내 자신을 반복하고 싶지는 않습니다.
내가 주위에 인터넷 검색 및 Java 범용 생성자가 나를 도울 수있는 도구를 발견했다. 그러나 나는 제네릭에 조금 익숙하고 정확히 어떻게해야할지 모르겠습니다.
나는 이런 식으로 뭔가를해야한다고 가정일반 복사 생성자를 Java에서 수행하는 방법
public class BankHistoryData<T extends Serializable> {
// I would like to set this fields from the object T
private field1;
private field2;
// and many more ...
T a; // source object from which to copy values
public BankHistoryData(T a) {
this.a = a;
copyData();
}
// NOT SURE ABOUT THIS ... something like this
public void copyData() {
if(T instanceof Bank) {
this.field1 = ((Bank)a).getSomeField();
// and so on ...
} else if (T instanceof BankArchive) {
this.field1 = ((BankArchive)a).getSomeField();
// and so on ...
} else {
trow new IllegalArgumentException("Not supported table");
}
}
}
어떤 제안을 환영합니다. 감사!
mismas
[편집] 나는 곳을 위해 내가 @ 알렉스에서 해당 2 센트를 생각하는,이에 대한 일반적인 사용하지 않기로 결정했다 . 대신 비즈니스 논리 서비스 계층에서이 복사 로직을 수행 할 것입니다 (POJO는 "어리석은"상태로 유지 될 것입니다).
공용 인터페이스를 구현하기 위해이 두 개의 최대 절전 모드 객체를 만들 겠지만 (공유 필드의 getter 메소드 만이 여기에 있습니다.) 마지막으로 비즈니스 로직 서비스 계층에서 복사 메소드를 만들고 필드 복사를 위해 해당 인터페이스 매개 변수를 사용하도록합니다.
희망이 있으면 도움이 될 것입니다. 또한 모든 의견을 환영합니다.
건배!
내 생각은 정확하게. 그러나 Bank and BankArchive가 수정할 수 있는지 확실하지 않습니다. – renz
Bank와 BankArchive가 Hibernate 객체라고 언급하지 않았습니다. 따라서이 인터페이스에 무엇을 넣을 지 모르겠습니다. (getters and setters?) P.s 나는 그들을 어느 정도 수정할 수 있습니다 ... – mismas
@mismas 예, 어떤 일반적인 getter와 setter는 'Bank'와 'BankArchive'간에 공유됩니다. –