stronk_8s

MULTI JAVA

Nov 25th, 2025
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.71 KB | Source Code | 0 0
  1. @Stateless
  2. public class SchoolServiceBean implements SchoolServiceLocal {
  3.  
  4.     @PersistenceContext(unitName = "MyPU")
  5.     private EntityManager em;
  6.  
  7.     // ================= STUDENTS =================
  8.     @Override
  9.     public Students createStudent(Students student) {
  10.         List<Courses> courses = resolveCourses(student);
  11.         student.setCourses(courses);
  12.         courses.forEach(c -> c.getStudents().add(student));
  13.  
  14.         em.persist(student);
  15.         return student;
  16.     }
  17.  
  18.     @Override
  19.     public Students updateStudent(Students student) {
  20.         Students existing = em.find(Students.class, student.getStudentId());
  21.         if (existing == null) return null;
  22.  
  23.         existing.setStudentName(student.getStudentName());
  24.         existing.setEmail(student.getEmail());
  25.  
  26.         // Clear old relation
  27.         existing.getCourses().forEach(c -> c.getStudents().remove(existing));
  28.         existing.getCourses().clear();
  29.  
  30.         // Add new relation
  31.         List<Courses> updatedCourses = resolveCourses(student);
  32.         existing.getCourses().addAll(updatedCourses);
  33.         updatedCourses.forEach(c -> c.getStudents().add(existing));
  34.  
  35.         return existing;
  36.     }
  37.  
  38.     @Override
  39.     public void deleteStudent(Integer id) {
  40.         Students st = em.find(Students.class, id);
  41.         if (st != null) {
  42.             st.getCourses().forEach(c -> c.getStudents().remove(st));
  43.             st.getCourses().clear();
  44.             em.remove(st);
  45.         }
  46.     }
  47.  
  48.     @Override
  49.     public Students findStudentById(Integer id) {
  50.         return em.find(Students.class, id);
  51.     }
  52.  
  53.     @Override
  54.     public List<Students> findAllStudents() {
  55.         return em.createQuery("FROM Students", Students.class).getResultList();
  56.     }
  57.  
  58.  
  59.     // ================= COURSES =================
  60.     @Override
  61.     public Courses createCourse(Courses course) {
  62.         List<Students> students = resolveStudents(course);
  63.         course.setStudents(students);
  64.         students.forEach(s -> s.getCourses().add(course));
  65.  
  66.         em.persist(course);
  67.         return course;
  68.     }
  69.  
  70.     @Override
  71.     public Courses updateCourse(Courses course) {
  72.         Courses existing = em.find(Courses.class, course.getCourseId());
  73.         if (existing == null) return null;
  74.  
  75.         existing.setCourseName(course.getCourseName());
  76.         existing.setCredits(course.getCredits());
  77.  
  78.         existing.getStudents().forEach(s -> s.getCourses().remove(existing));
  79.         existing.getStudents().clear();
  80.  
  81.         List<Students> updatedStudents = resolveStudents(course);
  82.         existing.getStudents().addAll(updatedStudents);
  83.         updatedStudents.forEach(s -> s.getCourses().add(existing));
  84.  
  85.         return existing;
  86.     }
  87.  
  88.     @Override
  89.     public void deleteCourse(Integer id) {
  90.         Courses c = em.find(Courses.class, id);
  91.         if (c != null) {
  92.             c.getStudents().forEach(s -> s.getCourses().remove(c));
  93.             c.getStudents().clear();
  94.             em.remove(c);
  95.         }
  96.     }
  97.  
  98.     @Override
  99.     public Courses findCourseById(Integer id) {
  100.         return em.find(Courses.class, id);
  101.     }
  102.  
  103.     @Override
  104.     public List<Courses> findAllCourses() {
  105.         return em.createQuery("FROM Courses", Courses.class).getResultList();
  106.     }
  107.  
  108.  
  109.     // ===== Helper: Resolve collections =====
  110.     private List<Courses> resolveCourses(Students student) {
  111.         return student.getCourses().stream()
  112.                 .map(c -> em.find(Courses.class, c.getCourseId()))
  113.                 .toList();
  114.     }
  115.  
  116.     private List<Students> resolveStudents(Courses course) {
  117.         return course.getStudents().stream()
  118.                 .map(s -> em.find(Students.class, s.getStudentId()))
  119.                 .toList();
  120.     }
  121. }
  122.  
Advertisement
Add Comment
Please, Sign In to add comment