DTO 类,表示多个值的外键
DTO classes, represent foreign keys on multiple values
我对 DTO class 表示有疑问。我的数据库中有两张表,其中一张在另一张上有两个外键,例如:
book(id, author_name, author_age)
author(name, age, telephone)
其中书籍 author_name 和 author_age 是作者姓名和年龄的外键。
一般来说,在 DTO class 上实现这种情况的最佳方法是什么?
在 Book DTO 中,最好做类似的事情:
public class Book {
private String id;
private Author author;
}
或类似
public class Book {
private String id;
private String author_name;
private int author_age;
}
?
DTO 是仅用于在大部分时间通过 http 或 https 通过通信通道传输值的对象。
注意 : 将您的属性设置为 public 而不是私有的。
我们应该让它尽可能简单。
所以像这样使用它
public class Book {
public String id;
public String author_name;
public int author_age;
}
If you would compare the DTO without Author object vs DTO with Author object converted into json or xml, DTO without Author would be less in size.
When using Author inside Book you just add extra wrapper (for author_name and author_age) which cost you some more over communication channel.
如果 Book 有多个作者或一对多关系,您需要这样做:
public class Book {
public String id;
public List<Author> authors;
}
注意:但请确保作者不应该像下面这样使用 Book 实例返回 属性。
public class Author
{
public Book book;
}
在某些客户端框架(如 knockout)中,它会创建带有可观察对象的循环。
我对 DTO class 表示有疑问。我的数据库中有两张表,其中一张在另一张上有两个外键,例如:
book(id, author_name, author_age)
author(name, age, telephone)
其中书籍 author_name 和 author_age 是作者姓名和年龄的外键。
一般来说,在 DTO class 上实现这种情况的最佳方法是什么? 在 Book DTO 中,最好做类似的事情:
public class Book {
private String id;
private Author author;
}
或类似
public class Book {
private String id;
private String author_name;
private int author_age;
}
?
DTO 是仅用于在大部分时间通过 http 或 https 通过通信通道传输值的对象。
注意 : 将您的属性设置为 public 而不是私有的。
我们应该让它尽可能简单。
所以像这样使用它
public class Book {
public String id;
public String author_name;
public int author_age;
}
If you would compare the DTO without Author object vs DTO with Author object converted into json or xml, DTO without Author would be less in size.
When using Author inside Book you just add extra wrapper (for author_name and author_age) which cost you some more over communication channel.
如果 Book 有多个作者或一对多关系,您需要这样做:
public class Book {
public String id;
public List<Author> authors;
}
注意:但请确保作者不应该像下面这样使用 Book 实例返回 属性。
public class Author
{
public Book book;
}
在某些客户端框架(如 knockout)中,它会创建带有可观察对象的循环。