У меня проблемы с использованием одного объекта DTO или объекта DTO для каждого объекта Entity.
Например, у меня есть 3 класса: книга, автор и издатель.
Book.java
@Entity
@Table(name = "tbl_book")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "description")
private String description;
other different fields...
}
Author.java
@Entity
@Table(name = "tbl_author")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "description")
private String description;
other different fields...
}
Publisher.java
@Entity
@Table(name = "tbl_publisher")
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "description")
private String description;
other different fields...
}
и MyDTO.java
public class MyDTO {
private Long id;
private String description;
constructor id, description...
getters and setters...
}
Я хочу выбрать только определенные поля (идентификатор и описание) с EntityManager:
em.createQuery("SELECT NEW MyDTO(id,description) FROM Book");
Но у меня вопрос: должен ли я использовать один объект DTO (MyDTO) для всех проекций? Что-то вроде:
em.createQuery("SELECT NEW MyDTO(id,description) FROM Author");
em.createQuery("SELECT NEW MyDTO(id,description) FROM Publisher");
В руководствах по использованию DTO для проекции просто говорится, что используйте DTO для чтения, и используйте Entity для записи, но они не говорят о том, иметь один объект DTO или нет. Приведите, пожалуйста, пример, почему один DTO или почему DTO для каждой организации. Спасибо!