考虑数据库中的例子:
CREATE TABLE users (
id INTEGER IDENTITY PRIMARY KEY,
last_name VARCHAR (50) DEFAULT '' NOT NULL,
first_name VARCHAR (50) DEFAULT '' NOT NULL,
email VARCHAR(50) DEFAULT '' NOT NULL)
并考虑使用 Hibernate 作为 ORM 与该数据库交互的程序。
在我看来这意味着:
- 避免空指针异常
- 避免检查空值的需要
这是好的做法吗?请举例说明优缺点。
最佳答案
正如 PeterMmm 所写,“Null”具有特殊含义,通常由数据库引擎中的特殊运算符支持。
“良好实践”是那些可以表达任何意思的短语之一,但稍微解释一下论点:
可维护性:坏主意。大多数开发人员习惯于在数据库系统中实现 NULL 的方式,并且需要在您的设计中接受特殊培训。
容错:坏主意。如果一列不允许为空,这通常意味着您的应用程序设计中的某些内容。如果用户记录必须有一个有效的电子邮件地址,您现在不能再在数据库级别验证它 - 因此您的数据库可能会逐渐填满虚假数据,并且您只有在尝试发送电子邮件时才会发现到 ''。 “空指针”异常是特性,不是错误!
性能:根据 http://www.sql-server-performance.com/2007/datatypes/ , NULL 比较慢。
关于java - 使用空字符串而不是 null - 一个好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7723242/