When I run my createStudentDemo
class I get the following error:
INFO: HHH000412: Hibernate Core {5.4.11.Final} Exception in thread "main" org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [hibernate.cfg.xml] at org.hibernate.boot.cfgxml.internal.ConfigLoader.loadConfigXmlResource(ConfigLoader.java:53) at org.hibernate.boot.registry.StandardServiceRegistryBuilder.configure(StandardServiceRegistryBuilder.java:215) at org.hibernate.cfg.Configuration.configure(Configuration.java:258) at org.hibernate.cfg.Configuration.configure(Configuration.java:244) at com.luv2code.hibernate.demo.CreateStudentDemo.main(CreateStudentDemo.java:15)
I don’t understand why I have this error.
Here is the code of my createStudentDemo
class:
package com.luv2code.hibernate.demo; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.luv2code.hibernate.demo.entity.Student; public class CreateStudentDemo { public static void main(String[] args) { // create session factory SessionFactory factory= new Configuration() .configure("hibernate.cfg.xml") .addAnnotatedClass(Student.class) .buildSessionFactory(); // create session Session session = factory.getCurrentSession(); try { //create a student object System.out.println("creating new student object"); Student tempStudent = new Student("Paul", "Wall", "paul@luv2code.com"); //start a transaction session.beginTransaction(); // save the student object System.out.println("Saving the student..."); session.save(tempStudent); //commit transaction session.getTransaction().commit(); System.out.println("Done !"); } finally { factory.close(); } } }
and here is the code for my class student:
package com.luv2code.hibernate.demo.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="student") public class Student { public Student() { } @Id @Column(name="id") private int id; @Column(name="first_name") private String firstName; @Column(name="last_name") private String lastName; @Column(name="email") private String email; public Student(String firstName, String lastName, String email) { this.firstName = firstName; this.lastName = lastName; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "Student [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]"; } }
and here is the code of my hibernate.cfg.xml
file:
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- JDBC Database connection settings --> <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/hb_student_tracker?useSSL=false&serverTimezone=UTC</property> <property name="connection.username">hbstudent</property> <property name="connection.password">hbstudent</property> <!-- JDBC connection pool settings ... using built-in test pool --> <property name="connection.pool_size">1</property> <!-- Select our SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Echo the SQL to stdout --> <property name="show_sql">true</property> <!-- Set the current session context --> <property name="current_session_context_class">thread</property> </session-factory> </hibernate-configuration>
and here is the location of my files:
Can someone help me please?
Advertisement
Answer
You hibernate.cfg.xml
should be in classpath. Put it in src
folder.