public class Contact implements Serializable {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Run Code Online (Sandbox Code Playgroud)
Serializable什么时候应该实现界面? 问题出在标题中.下面我刚才描述了我的一些想法和发现.
当我有非常简单的域模型(没有任何关系的3个表)时,我的所有实体都没有实现Serializable.
但是当域模型变得更复杂时,我得到了RuntimeException,它说我的一个实体没有实现Serializable.
我使用Hibernate作为JPA实现.
我想知道:
我们开发非常常见的 Spring MVC 应用程序
我们有:
控制器层(@RestComtroller+@GetMapping和@PostMapping)
服务层(@Service)
存储库层(CrudRepository来自spring-data-jpa)
我们使用 DTO 来进行 FE 和 BE 之间的通信。
今天我的同事让我将所有 DTO 标记为implements Serializable并添加serialVersionUID字段。我询问原因,但他说这是“最佳实践”。我对此真的很困惑。Serializable与 java 序列化相关,但我们使用 JSON 进行 BE 和 FE 通信。
你能澄清一下这个问题吗?那么我应该用 Serialized 标记 spring mvc DTO 吗?
我正在获取Serializable一些内部API 的实例。该Serializable实例其实Long还是String等有没有一种方法,使DTO,可以处理这种情况呢?使用private Serializable value;JSON的结尾为value: {}。
更新
这是所讨论的代码的简化示例:
@Controller
public class SomeController
{
//...
public MyDto getInfo(Long id)
{
MyDto result = new MyDto();
Serializable obj = svc.getInfo(id);
// obj is either Long, or String, or one of few more fundamental Java types
result.setValue(obj);
return result;
}
}
public class MyDto
{
private Serializable value;
public void setValue(Serializable info)
{
this.value = value;
}
public Serializable getValue()
{
return …Run Code Online (Sandbox Code Playgroud)