Я бы хотел простой инструмент генерации DTO, который бы либо
- Создайте его на лету (например, cglib - создайте класс и объект DTO на лету)
- Или Eclipse-плагин, который будет принимать Entity и генерировать DTO (пользователь будет указывать, какой граф дерева включать, а для не включенных, будет включать внешние ключи вместо связанных сущностей и т. Д.)
например. возьми что-то вроде этого
@Entity
@Table(name="my_entity")
public class MyEntity {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne
private RelatedEntity related;
public RelatedEntity getRelated(){
return related;
}
...
И сгенерируйте что-то вроде этого:
@Entity
@Table(name="my_entity")
public class MyEntity imlpements MyEntityDTO {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne
private RelatedEntity related;
//overrides MyEntity interface, it's allowed to narrow return type
public RelatedEntity getRelated(){
return related;
}
...
//implements MYEntityDTO respective interfaces
public Long getRelatedId(){return related.getId();}
И интерфейс (ы) DTO:
public interface MyEntityDTO {
public String getId();
public String getName();
public Long getRelatedId();
public RelatedEntityDTO getRelated(); //RelatedEntity implements RelatedEntityDTO
...
}
public interface RelatedEntityDTO {
...
}
Если мы не хотим включать дочерние элементы в график, удалите его из интерфейса DTO:
public interface MyEntityDTO {
public String getId();
public String getName();
public Long getRelatedId();
...
Я уверен, что для этого есть плагин Eclipse, и если нет, я призываю кого-то написать его или объяснить, почему то, что я хочу, не помогает (и предоставить альтернативное предложение)