在 Java 实体中可选以替换可为空的列
Optional in Java Entity to replace nullable columns
我想知道是否可以获得一些关于使用 Java 8 的可选 class 来包装实体中可为空的列的建议。我的意思在下面的代码示例中表达:
@Entity
public class Data {
@Column(nullable=true)
private String value;
public Optional<String> getValue() {
return Optional.ofNullable(value);
}
public void setValue(Optional<String> value) {
this.value = value.orElse(null);
}
数据库中的列仍然可以为空,但是,为了检查是否为空,必须使用 isPresent() 方法调用 getter。我喜欢这种明确性,而不是必须检查或记住列是否可为空。这样的模式commonand/or推荐吗?如果不是,您能否提供我 不应该 这样做的充分理由?
Brian Goetz 本人 answered 这个问题。他的判决:
I think routinely using it as a return value for getters would definitely be over-use.
基本上,Optional
并非设计为通用 Maybe
或 Some
类型。有些事情绝对不应该用于它,吸气剂可以,但不要发疯。
我想知道是否可以获得一些关于使用 Java 8 的可选 class 来包装实体中可为空的列的建议。我的意思在下面的代码示例中表达:
@Entity
public class Data {
@Column(nullable=true)
private String value;
public Optional<String> getValue() {
return Optional.ofNullable(value);
}
public void setValue(Optional<String> value) {
this.value = value.orElse(null);
}
数据库中的列仍然可以为空,但是,为了检查是否为空,必须使用 isPresent() 方法调用 getter。我喜欢这种明确性,而不是必须检查或记住列是否可为空。这样的模式commonand/or推荐吗?如果不是,您能否提供我 不应该 这样做的充分理由?
Brian Goetz 本人 answered 这个问题。他的判决:
I think routinely using it as a return value for getters would definitely be over-use.
基本上,Optional
并非设计为通用 Maybe
或 Some
类型。有些事情绝对不应该用于它,吸气剂可以,但不要发疯。