Give me the full code. Try to go as simple as possible
Requirement 1 - Models:
In the Project you have two Model classes named Student.java and Course.java under Model package. Each Model class requires:

no args constructor
all args constructor
required args constructor
setters and getter
toString (exclude collections to avoid infinite loops)
override equals and hashcode methods (don’t use lombok here)
helper method
Student (@Table(name = “student”))
Field Datatype Description Database attributes @Column()
email String Student’s unique identifier Primary key, 50 character limit, name email
name String Student’s name 50 character limit, not null, name name
password String Student’s password 50 character limit not null, name password
courses Set<Course> Student courses list Join table strategy name student_courses , name of student primary key column student_email and inverse primary key (courses) column courses_id , fetch type EAGER, cascade type DETACH,REMOVE,MERGE,PERSIST
Course (@Table(name = “course”)):
Field Datatype Description Database attributes @Column()
id int Course unique identifier Primary key , generation type IDENTITY,
name String Course name 50 character limit, not null
instructor String Instructor name 50 character limit not null
students Set<Student> Course learners list fetch type EAGER, cascade type DETACH,REMOVE,MERGE,PERSIST, mappedBy courses
Requirement 2 - Data Access Object (dao) interfaces:
StudentI:
You can NOT add more methods in the interfaces than the definition below.
Abstract method Return type Parameters Description
createStudent void Student persist student to database, also handle commit,rollback, and exceptions
getAllStudents List<Student> None return all students from database, also handle commit,rollback, and exceptions
getStudentByEmail Student String email return student if exists, also handle commit,rollback, and exceptions
validateStudent boolean String email, String password match email and password to database to gain access to courses, also handle commit,rollback, and exceptions
registerStudentToCourse void String email, int courseId register a course to a student (collection to prevent duplication), also handle commit,rollback, and exceptions
getStudentCourses List<Course> String email get all the student courses list (use native query), also handle commit,rollback, and exceptions
CourseI:
You can NOT add more methods in the interfaces than the definition below.
Abstract method Return type Parameters Description
createCourse void Course persist course to database, also handle commit,rollback, and exceptions
getAllCourses List<Course> None return all courses from database, also handle commit,rollback, and exceptions
getCourseById Course int courseId return course if exists, also handle commit,rollback, and exceptions
Requirement 3 - Service layer:
The classes listed below are concrete classes. The following class implements the StudentI and CourseI interfaces, as well as overrides and implements all abstract service methods.

implement interfaces:

StudentService
CourseService
Requirement 4 - Utility classes:
HibernateUtil.java - hibernate configuration session factory helper
CommandLine.java - data initializer helper (dummy data dump).
Configuration file (hibernate.cfg.xml) can be found under src/main/resources/
Requirement 5 - JUnit:
Write at least one junit test
Project Tree example

student.java:
package sba.sms.models;
import jakarta.persistence.*;
import lombok.*;
import lombok.experimental.FieldDefaults;

import java.util.LinkedHashSet;
import java.util.Objects;
import java.util.Set;

course.java:
package sba.sms.models;
import jakarta.persistence.*;
import lombok.*;
import lombok.experimental.FieldDefaults;

import java.util.LinkedHashSet;
import java.util.Objects;
import java.util.Set;

courseService.java:
package sba.sms.services;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;
import sba.sms.dao.CourseI;
import sba.sms.models.Course;
import sba.sms.utils.HibernateUtil;

import java.util.ArrayList;
import java.util.List;

studentService.java:
package sba.sms.services;
import lombok.extern.java.Log;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.NativeQuery;
import org.hibernate.query.Query;
import sba.sms.dao.StudentI;
import sba.sms.models.Course;
import sba.sms.models.Student;
import sba.sms.utils.HibernateUtil;

import java.util.ArrayList;
import java.util.List;

coursel.java:
package sba.sms.dao;
import sba.sms.models.Course;

import java.util.List;

studentl.java:
package sba.sms.dao;
import sba.sms.models.Course;
import sba.sms.models.Student;

import java.util.List;