初次配置Hibernate所遇到的问题

初次配置使用Hibernate,不过还是忍不住吐槽,这Hibernate的版本变化实在太坑了,花了我一天才解决。

问题1:各个版本Hibernate基本包的不同,在这里就不详细写明了,因为网上都可以找到相关版本的基本包。

问题2:不同版本用Hibernate创建Session的方式有不同,这里就列出Hibernate4和Hibernate5两个版本的。

Hibernate4.x版本创建Session的代码:

  1.         Configuration configiguration = new Configuration().configure();  
  2.         ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(configiguration.getProperties());
  3.         ServiceRegistry registry = builder.buildServiceRegistry();   
  4.         factory = configiguration.buildSessionFactory(registry); 
  5. session = factory.openSession();
  6.         transaction = session.beginTransaction();

Hibernate5.x版本创建Session的代码:

	    Configuration configuration = new Configuration().configure();
        configuration.addClass(Login.class);
        //创建服务注册对象
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        //创建会话工厂对象
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        //会话对象
        session = sessionFactory.openSession();
        //开启事物
        transaction = session.beginTransaction();

   

注意1:
Hibernate5.x与之前版本不同的:
    1)
    configuration.addClass(News.class);//News为实体类名
    2)
    ServiceRegistry的实现需用StandardServiceRegistryBuilder
    之前版本用的是 ServiceRegistryBuilder
注意2:

       Exception in thread "main" org.hibernate.MappingException: Unknown entity: wen.Login

       由于临时想到就提醒一下,发生找不到实体对象时错误时,除了网上所说的两个配置文件的问题以导错包的错误,还有一种便是Hibernate5.x版本中的创建Session代码处少了configuration.addClass(Login.class);这行代码。Login为实体类名。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值