用于在实体中存储SQL ID的选项

时间:2014-02-07 22:12:00

标签: java mysql servlets dao

假设Tomcat 7,Servlets 3,MySQL 5.5等......

在我的应用程序中,我将数据库ID存储为数据库中的INT。在我的DAO中,我将它们映射到Enities中的Long。

当我编写控制器等时,我发现自己在测试空值和从字符串中解析值时做了很多工作。即表单将参数作为需要解析的字符串传递。如果你解析null或空白,你会得到一个例外。检查所有这些东西需要做很多工作。

由于来回传递字符串要容易得多,在实体中将ID作为字符串保留在架构上是否可以接受? SQL可以为我ps.setObject("123"进行转换。看起来我可以节省很多精力。这不像我在操作ID - 除了SQL ...

或者,我没想到的是什么?

我正在努力简化这一点......处理异常和清理工作同样重要。

Project project = new Project();
String param = req.getParameter("id");
if(param!=null && param.length()>0){
    Long projid = Long.parseLong(param);
    project = projectDao.getProjectById(projid);
}

1 个答案:

答案 0 :(得分:0)

无论是字符串还是长字符号,当它为空时总是会出现问题,因为主键不能为空,对吧?另外,从数据库的角度来看,作为主键的字符串效率不高,因为比较它们并搜索字符串会更糟糕,即使应用了索引