hibernate5无法获取配置文件(hibernate4.3版本之后org.hibernate.service.ServiceRegistryBuilder被弃用)

之前一直都是使用hibernate4.2.21的我,有一天突然没有使用本地的jar包而是让IDEA自动下载最新版本的hibernate5.2.2之后,发现有几个经常使用的方法报错了.

-这真是让我惊了个呆,网上一搜,好像有这个问题的人还不少,然后发现果然是hibernate版本的问题——hibernate4.3之后已经没有了org.hibernate.service.ServiceRegistryBuilder这个类,它被弃用了

这下子问题就迎刃而解了
-如果使用的是hibernate4.2之前的版本,那么方法就这么写:

    //创建配置对象
    Configuration config = new Configuration().configure();
    //创建服务注册对象
    ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
    //创建会话工厂对象
    sessionFactory = config.buildSessionFactory(serviceRegistry);
    //会话对象
    session = sessionFactory.openSession();
    //开启事务
    transaction = session.beginTransaction();

-如果是hibernate4.3之后的版本,那么方法就这么写:
导入包更换:org.hibernate.boot.registry.StandardServiceRegistryBuilder;

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

-甚至我还发现到hibernate5之后连上面的包都可以省略了:

    //创建配置对象(读取配置文档)
    Configuration config = new Configuration().configure();
    //创建会话工厂对象
    sessionFactory = config.buildSessionFactory();
    //会话对象
    session = sessionFactory.openSession();
    //开启事务
    transaction = session.beginTransaction();

原文:https://blog.csdn.net/ninelie/article/details/52654934

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以提供一个示例代码,展示如何在Hibernate中创建Java项目,并实现对Student对象的CRUD操作。 首先,您需要按照上面提到的步骤创建Java项目,并添加Hibernate依赖。然后,您需要在项目中创建Student类,并使用Hibernate注解指定映射关系。代码如下: ```java @Entity @Table(name = "students") public class Student { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "gender") private String gender; @Column(name = "number") private String number; @Column(name = "age") private Integer age; @Column(name = "description") private String description; // getters and setters } ``` 接下来,您需要创建一个名为“HibernateUtil”的类,用于创建和管理Hibernate SessionFactory。代码如下: ```java public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { Configuration configuration = new Configuration(); configuration.configure(); StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder() .applySettings(configuration.getProperties()); return configuration.buildSessionFactory(serviceRegistryBuilder.build()); } catch (Exception e) { System.err.println("SessionFactory creation failed." + e); throw new ExceptionInInitializerError(e); } } public static SessionFactory getSessionFactory() { return sessionFactory; } } ``` 然后,您需要创建一个名为“StudentDAO”的类,用于执行CRUD操作。代码如下: ```java public class StudentDAO { private SessionFactory sessionFactory; public StudentDAO(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public void save(Student student) { Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); session.save(student); session.getTransaction().commit(); } public void update(Student student) { Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); session.update(student); session.getTransaction().commit(); } public void delete(Student student) { Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); session.delete(student); session.getTransaction().commit(); } public Student findById(Long id) { Session session = sessionFactory.getCurrentSession(); session.beginTransaction(); Student student = session.get(Student.class, id); session.getTransaction().commit(); return student; } } ``` 最后,您可以在main方法中调用四个方法,如下所示: ```java public static void main(String[] args) { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); StudentDAO studentDAO = new StudentDAO(sessionFactory); // create a new student Student student = new Student(); student.setName("John Doe"); student.setGender("Male"); student.setNumber("123456789"); student.setAge(20); student.setDescription("A good student"); studentDAO.save(student); // find the student by id Student foundStudent = studentDAO.findById(student.getId()); System.out.println(foundStudent.getName()); // update the student foundStudent.setName("Jane Doe"); studentDAO.update(foundStudent); // delete the student studentDAO.delete(foundStudent); } ``` 这样,就完成了对Student对象的CRUD操作。希望这个示例对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值