나는 그들의 자식 (가입자)과 다 - 대 - 다 관계를 가진 부모 (프로그램) pojo를 가지고있다.Hibernate와의 Many to Many 관계로 순환 직렬화
문제는 프로그램을 serialize 할 때 해당 프로그램의 구독자를 serialize하는 것입니다. 프로그램 구독자는 데이터베이스에 구독자 인 모든 & 구독자를 일련 번호가 매겨 질 때까지 구독자를 serialize하는 과정을 포함합니다. 반환> 가입자
이 데이터 (JSON)의 작은 17킬로바이트 블록을 무슨 의미 6.9MB 반환되었다 - 프로그램 < :
는 ERD는 것 같습니다. 따라서 순차적으로 데이터를 직렬화하고 반환하는 시간을 낭비합니다.
부모님이 자녀를 돌려주는 부모님을 돌려주는 자녀를 돌려주는 이유는 무엇입니까? 어떻게하면 각 프로그램의 구독자 만 얻을 수 있습니까? 내 주석을 잘못 처리했다고 가정하고 있나? 이 many-to-many 관계를 유지하고 싶지만이 중첩 된 데이터 검색이 필요하지 않습니다.
(참고 :..? 내가 전에 난 그냥이 도움이 있는지 확인하기 위해 찾을 수있는 많은 게으른 주석으로 추가하는 시도 그것은 아마도 내가 잘못도 그 일을 해요하지 않습니다)
Program.java
@Entity
@Table(name="programs")
public class Program extends Core implements Serializable, Cloneable {
...
@ManyToMany()
@JoinTable(name="program_subscribers",
joinColumns={@JoinColumn(name="program_uid")},
inverseJoinColumns={@JoinColumn(name="subscriber_uid")})
public Set<Subscriber> getSubscribers() { return subscribers; }
public void setSubscribers(Set<Subscriber> subscribers) { this.subscribers = subscribers; }
Subscriber.java
@Entity
@Table(name="subscribers")
public class Subscriber extends Core implements Serializable {
...
@ManyToMany(mappedBy="subscribers")
public Set<Program> getPrograms() { return programs; }
public void setPrograms(Set<Program> programs) { this.programs = programs;
}
구현
public Collection<Program> list() {
return new Programs.findAll();
}
이 프로젝트는 손에 땀을 쥐게합니다. JSON 직렬화에 사용되는 것이 100 % 아닙니다. com.sdicons.json.mapper.JSONMapper.SimpleMapperHelper에 대한 참조가 있습니다. 그리고 우리는 메소드 public JSONValue toJSON (Object pojo)가 MapperException {}을 던졌습니다. (그것은 자신의 직렬화를 추측하는 것입니다) –
또한 getPrograms() @ XmlTransient 주석을 달았다면 구독자 프로그램을 반환 할 수 없었을 것입니다. –
예. 다른 하나는 매퍼를 사용자 정의하여주기를 수동으로 처리하는 것입니다. – Bozho