编组和解组ResultSet:处理空字符串

时间:2012-02-07 09:56:05

标签: java jdbc marshalling unmarshalling

当我从ResultSet创建域对象的实例时,我应该将null为空的字符串转换为空字符串。相反,在写入数据库时​​应该将空字符串转换为空字符串吗?

这里的最佳做法是什么?或者它只是依赖于应用程序?

非常感谢。

2 个答案:

答案 0 :(得分:2)

空字符串""是一个字符串,就像其他字符串一样。对我而言,将""存储为NULL与将""存储为''并将"abc"存储为NULL一样有意义。

所以,保持简单:""存储为'',并将null引用存储为NULL


引用MySQL reference manual

  

NULL值的概念是SQL新手的常见混淆源,他们常常认为NULL与空字符串''是一样的。

答案 1 :(得分:2)

IMO,你应该将空值保留为空值。根据您的数据库架构,空字符串和null是两个不同的值。如果您混淆这些值,您的代码可能会产生意外的结果 - 特别是如果您有多个开发人员在相同的代码库上工作。您可能必须在下游代码中考虑这两种情况,但这很可能更清晰,更易于维护/可测试。