初次配置Hibernate所遇到的问题

xiaoxiao2021-02-28  74

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

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

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

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

        Configuration configiguration = new Configuration().configure();           ServiceRegistryBuilder builder = new ServiceRegistryBuilder().applySettings(configiguration.getProperties());         ServiceRegistry registry = builder.buildServiceRegistry();            factory = configiguration.buildSessionFactory(registry);  session = factory.openSession();         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为实体类名。

转载请注明原文地址: https://www.6miu.com/read-49712.html

最新回复(0)