假设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);
}
答案 0 :(得分:0)
无论是字符串还是长字符号,当它为空时总是会出现问题,因为主键不能为空,对吧?另外,从数据库的角度来看,作为主键的字符串效率不高,因为比较它们并搜索字符串会更糟糕,即使应用了索引