在我已经实现的简单的hibernate例子和孙卫琴写的那本hibernate书里,有两个地方有少许出入
1:我的例子的SessionFaction示例是这样获得:sf=new Configuration.configure().buildSessionFactory();而它的例子里是sf=new Configuration.buildSessionFactory()这里少了个configure()方法,是什么意思???
2:同时,我的例子里没有new Configuration.add(xxx.class)方法,而孙的书里却有这个方法,又是什么意思??谢谢指教~~~

解决方案 »

  1.   

    2..add(XXX.class)是将XXX.class实例化到hibernate 中。不add()又怎么能对一个持久化对象进行操作呢:
      

  2.   

    1. 用 .configure(),可以加载一个非默认的配置文件。如 .configure("myHibernate.cfg.xml")
      

  3.   

    楼上的什么的意思?可是我没并没有在configure()方法里写参数啊~
      

  4.   

    我个人的理解:
    sf=new Configuration.configure().buildSessionFactory
    sf=new Configuration.buildSessionFactory()两个完成的功能是一样的,new Configuration.configure()返回的结果还是一个Configuration
    类型的对象,作用应该是,强制初始化。用词可能不准确,意思明白就好!第一种做法,更安全。
    至于:add(XXX.class
    因为你是用的是.properties类型的hibernate配置文件,该文件中,没有把hiberante的映射文件引入。需要手动的添加、。如果使用.xml类型的配置文件,就不会出现这个问题。
      

  5.   

    我取消刚才对第一个问题的回答。
    重新回答如下:sf=new Configuration.configure().buildSessionFactory补充一下,如:zhengcg(楚楚) 所说:configure(),里边可以有参数,是你的配置文件的路径。那么就读取这个指定的文件。
    如果,不带参数,就是读取默认的配置文件。
    那么这个时候,其实和Configuration.buildSessionFactory()
    是一样的效果。
      

  6.   

    我刚好想到,我在配置文件的时候引入了映射文件,是不是就是这样,才不需要指定.addClass,果然是这样!,谢谢