Persistence.xml
Для начала нам необходимо создать файл persistence.xml и закинуть его в папку META_INF проекта. В файле persistence.xml указываем persistence-unit name, имя которое мы придумываем для последующего вызова унита. И создаем все необходимые конфигурации в тегахorg.hibernate.ejb.HibernatePersistence
EntityManager
Для связи с базой данных вам будет необходим entity manager. Потому создаем примерно следующий класс со статическим доступом к entityManager. В качестве аргумента к методу createEntityManagerFactory используем имя нашего persistence-unit.public final class ServiceLocator { private static EntityManager entityManager; public ServiceLocator() { EntityManagerFactory factory; factory = Persistence.createEntityManagerFactory("Example"); entityManager = factory.createEntityManager(); } public static EntityManager getEntityManager() { return entityManager; } }
Классы Dao.
Теперь непосредственно класс, который будет управлять объектами в базе данных. Для пример возьмем два метода. Метод addTeacher добавляет объект Teacher в базу данных, а метод getTeacher возвращает объект Teacher из базы данных, руководствуясь именем и почтой Teacher, которого подали в аргументе. Если же такого в базе данных не находится, то создаем нового Teacher и возвращаем его.public class TeacherDao { private EntityManager entityManager; public TeacherDao(final EntityManager entityManager) { this.entityManager = entityManager; } public final Teacher getTeacher(final Teacher teacherToFind) { Teacher teacher; ListteacherList; try { Query query = entityManager.createNamedQuery(Teacher.GET_TEACHER_BY_NAME_AND_EMAIL); query.setParameter("name", teacherToFind.getName()); query.setParameter("branchId", teacherToFind.getEmail()); teacherList = query.getResultList(); if (teacherList.isEmpty()) { addTeacher(teacherToFind); teacher = teacherToFind; } else { teacher = teacherList.get(0); } } catch (final Throwable throwable) { if (entityManager.getTransaction().isActive()) { entityManager.getTransaction().rollback(); } throw new RuntimeException(throwable); } return teacher; } public final void addTeacher(final Teacher teacher) { try { entityManager.getTransaction().begin(); entityManager.persist(teacher); entityManager.getTransaction().commit(); } catch (final Throwable throwable) { if (entityManager.getTransaction().isActive()) { entityManager.getTransaction().rollback(); } throw new RuntimeException(throwable); } } }
Пример кода
И, наконец, пример того, как можно это все использовать в коде.new ServiceLocator; EntityManager entityManager = ServiceLocator.getEntityManager(); TeacherDao teacherDao = new TeacherDao(entityManager); Teacher teacher = new Teacher; teacher.setName("Mary"); teacher.setEmail("mary@test.com"); Teacher teacherFromDatabase = teacherDao.getTeacher(teacher);
Автор статьи: Александр Картышев
Комментариев нет:
Отправить комментарий