在构建第一个应用hibernate的小项目的时候,出现了这个问题,困扰了我好一会儿的。
当时的代码是这样的:
Configuration cfg = new Configuration();
ServiceRegistry serviceRegistry =new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
SessionFactory sf = cfg.configure().buildSessionFactory(serviceRegistry);
Session session = sf.openSession();
session.beginTransaction();
session.save(s);
session.getTransaction().commit();
session.close();
sf.close();
经过多方努力,才发现,把cfg.configure()放在第一句后面,问题就解决了。原因是cfg.getProperties()的执行,必须在cfg.configure()找到对应的hibernate配置文件之后。
很简单的一个问题,但是在对hibernate的运行过程没有一丁点理解的时候,依葫芦画瓢照抄代码,遇到这种错误就很难找到错误根源了。
以后再遇到问题的时候,不管用什么其他的框架或者工具,都应该首先大致了解一下它的原理,再动手做实验。