我正在将休眠与 MySQL 数据库服务器一起使用。考虑一个示例数据库表:
create table User (
USER_ID int not null auto_increment primary key,
USERNAME varchar(50) not null unique,
PASSWORD varchar(50) not null
)
使用这个表结构,它会抛出 org.hibernate.exception。DataException和 org.hibernate.exception。如果尝试存储更长或重复的用户名,则出现ConstraintViolationException 。
问题:在这种情况下哪种方法更好:
- 在传递值之前检查数据库约束(防止出现预期异常)。
- 稍后传递未经检查的数据并捕获数据库异常(DataException 和 ConstraintViolationException)。
由于检查名称长度是一个恒定时间操作,因此我更喜欢对其进行手动检查,但这个问题对我来说很重要,因为手动确保用户名唯一性需要我迭代一长串现有用户。
请建议哪种方法更值得推荐。感谢您的回复!