一、答案:
必须写。
在 Java 开发中,Entity 类中的 get 和 set 方法不是“必须”,但在大多数框架中是“强烈推荐”或“间接必须”的,尤其是在使用
二、原因:
1、如果你使用的是:
- JPA/Hibernate(如 Spring Data JPA)
- MapStruct
- BeanUtils.copyProperties
- Jackson(JSON 序列化/反序列化)
- Thymeleaf / JSP / 表达式语言 (EL)
这些框架和工具都会默认调用你的 getXxx() 和 setXxx() 方法。
2、如果你不写 get/set,会遇到的问题:
- JPA 查询时无法填充字段(因为它默认是通过 setter 方法来设置字段值的,虽然也支持 field access,但默认是 property access);
- MapStruct / BeanUtils 无法复制数据;
- Thymeleaf 页面中
user.name无法读取(因为它调用的是getName()) ; - 接口返回数据为空(比如用
@RestController返回对象时,Jackson 无法反序列化/序列化) ;
三、最佳方案
如果你觉得写 get/set 很烦,可以用 Lombok,让它自动生成,只需要引入lombok的依赖即可:
@Data // 自动生成 getter, setter, toString, equals, hashCode 等
@Entity
public class EnglishWord {
@Id
private Long id;
private String word;
private String phonetic;
private String audioUrl;
// 省略 getter/setter,因为 @Data 会自动生成
}