+1 @duffymo 的建议。Hibernate 真的是一头野兽,对于习惯于直接编写 SQL 代码的人来说,切换到 ORM 工具尤其困难。我的意思是我花了一段时间才适应 Hibernate 为我完成所有工作,因为我只是不相信它会比我的“真棒”SQL 代码做得更好。但是,随着时间的推移,我学会接受 Hibernate 做得很好,前提是您正确配置了它。:)
所以,@john,我将首先从 JSP + Servlet + Spring 开始,就像 @duffymo 提到的那样。将您的 DAO 类转换为使用 Spring 的 JbcTemplate。这迫使您为现有的 DAO 类创建接口。确保你的 DAO 类是无状态的,我的意思是,它应该是。有了它,您可以轻松地在测试用例中测试它的废话。
为了让你的 servlet 使用这些 DAO,你需要做这样的事情......
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
SomeDao dao = (SomeDao) ctx.getBean("someDao");
dao.doStuff(..);
获取 DAO 的“有点难看”的代码的原因是 Spring 无法将 DAO 直接连接到您的 servlet,因为此时 Spring 不管理您的 servlet。
一旦你完成了所有这些工作,你应该对 Spring 的 IoC 是如何工作的有一些了解。现在,您可以换出您的 servlet 并将其替换为 Spring MVC。我建议您使用 Spring MVC 3.x,以便您可以以宁静的方式构建您的 Web 部件。相信我,老实说,它比 Spring MVC 2.x 更容易、更干净。
好的,当你有 JSP + Spring MVC + Spring + JdbcTemplate 工作时,我认为这是将你的数据库模块从 JdbcTemplate 交换到 Hibernate 的好时机。由于您按接口编码,因此不会对其他模块造成连锁反应。另外,您可以重用完全相同的测试用例来测试您的 Hibernate DAO 类的废话。甜蜜的。:)
...这就是您最终使用 JSP + Spring MVC + Spring + Hibernate 的方式。:)
把这整个事情分解成更小的块使它更容易学习和消化。至少,当事情开始发展时,你不会间接地提高你的脏话词汇量,试图找出问题所在。