// Метод добавляет новую запись в таблицу PROFESSION private void addProfession(String name) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Profession r = new Profession(); r.setProfessionName(name); session.save(r); session.getTransaction().commit(); }
// Данный метод просто показывает, как делается запрос при работе на уровне JDBC private void oldJDBC() { Connection connection = null; Statement statement = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_applicant", "root", "root"); statement = connection.createStatement(); List<Profession> list = new ArrayList<Profession>(); rs = statement.executeQuery( "select profession_id, profession_name from profession " + "order by profession_name"); while (rs.next()) { Profession r = new Profession(); r.setProfessionId(rs.getLong("profession_id")); r.setProfessionName(rs.getString("profession_name")); list.add(r); System.out.println(r.getProfessionId() + ":" + r.getProfessionName()); } } catch (SQLException ex) { ex.printStackTrace(); System.err.println("Error SQL execution: " + ex.getMessage()); } catch (ClassNotFoundException ex) { ex.printStackTrace(); System.err.println("Error SQL execution: " + ex.getMessage()); } finally { try { if (rs != null) { rs.close(); } if (statement != null) { statement.close(); } if (connection != null) { connection.close(); } } catch (SQLException ex) { ex.printStackTrace(); System.err.println("Error: " + ex.getMessage()); } } }
public static void main(String[] args) { StudentDAO dao = new StudentDAO(); // Добавление новых предметов Subject subject = new Subject(); subject.setSubjectName("Mathematics"); dao.addSubject(subject); subject = new Subject(); subject.setSubjectName("Chemistry"); dao.addSubject(subject); subject = new Subject(); subject.setSubjectName("Logic"); dao.addSubject(subject); System.out.println("List of SUBJECTS"); System.out.println("----------------"); List<Subject> sbList = dao.findSubject(); // В списке вы увидите, что предметы пока не привязаны к профессиям - количество = 0 for (Subject a : sbList) { System.out.println( a.getSubjectId() + ":" + a.getSubjectName() + ". Number of profession:" + a.getProfessionList().size()); } // Теперь добавим профессии Profession profession = new Profession(); profession.setProfessionName("Programmer"); // Список предметов, которые надо сдавать для этой профессии // Обратите внимание, что в классе Profession мы создаем пустой список // чтобы не было NullPointerException profession.getSubjectList().add(sbList.get(0)); profession.getSubjectList().add(sbList.get(2)); dao.addProfession(profession); profession = new Profession(); profession.setProfessionName("Biologist"); profession.getSubjectList().add(sbList.get(1)); profession.getSubjectList().add(sbList.get(2)); // Получим профессию по ID и добавим еще один предмет для сдачи Long id = dao.addProfession(profession); profession = dao.getProfession(id); profession.getSubjectList().add(sbList.get(0)); dao.updateProfession(profession); // Смотрим список профессий System.out.println(); System.out.println("List of PROFESSIONS"); System.out.println("-------------------"); List<Profession> prList = dao.findProfession(); for (Profession a : prList) { System.out.println(a.getProfessionId() + ":" + a.getProfessionName()); } System.out.println(); System.out.println("List of SUBJECTS"); System.out.println("----------------"); sbList = dao.findSubject(); // В списке вы увидите, что предметы теперь привязаны к профессиям - количество > 0 for (Subject a : sbList) { System.out.println( a.getSubjectId() + ":" + a.getSubjectName() + ". Number of profession:" + a.getProfessionList().size()); } // А теперь создадим новых абитуриентов Applicant applicant = new Applicant(); applicant.setFirstName("John"); applicant.setMiddleName("M"); applicant.setLastName("Danny"); // Задаем профессию applicant.setProfession(prList.get(0)); applicant.setEntranceYear(2009); dao.addApplicant(applicant); applicant = new Applicant(); applicant.setFirstName("Poul"); applicant.setMiddleName("H"); applicant.setLastName("Tride"); // Задаем профессию applicant.setProfession(prList.get(1)); applicant.setEntranceYear(2009); dao.addApplicant(applicant); System.out.println(); System.out.println("List of APPLICANTS"); System.out.println("------------------"); List<Applicant> apList = dao.findApplicant(); for (Applicant a : apList) { System.out.println( a.getFirstName() + ":" + a.getLastName() + " - " + a.getProfession().getProfessionName()); // Если убрать комментарий, то получим сообщене об ошибке - коллекция не инициализирована // Но еще можно посмотреть комментарий в StudentDAO (метод findApplicant()). // System.out.println(a.getProfession().getSubjectList().size()); } }