..
Ссылаясь на пример предыдущего пункта, мы видим, как создать DAO для лица Car.
Прежде всего creaimo интерфейс с методами, основанными на DAO, а именно: загрузка, сохранение, обновление и удаление.
it.mrwebmaster.hibernate.dao пакет;
it.mrwebmaster.hibernate.Car импорта;
{Открытый интерфейс CarDao
общественные нагрузки автомобиля (Integer ID);
экономии государственных автомобиля (Car автомобиля);
обновить общие автомобиля (Car автомобиля);
общественного недействительными удалить (Car автомобиля);
}
Созданный интерфейс проходят в создании реализации:
it.mrwebmaster.hibernate.dao пакет;
it.mrwebmaster.hibernate.Car импорта;
javax.persistence.EntityManager импорта;
javax.persistence.PersistenceContext импорта;
org.springframework.transaction.annotation.Transactional импорта;
@ Transactional
CarDaoImpl {общественных класс реализует CarDao
@ PersistenceContext (unitName = "может")
частные EntityManager ет;
@ Override
общественного недействительными удалить (Car автомобиля) {
em.remove (символ);
}
@ Override
@ Транзакций (ReadOnly = True)
общественные нагрузки автомобиля (целочисленный идентификатор) {
возвращение em.find (Car.class, ID);
}
@ Override
экономии государственных автомобиля (Car автомобиля) {
em.persist (символ);
возврат автомобиля;
}
@ Override
обновить общие автомобиля (Car автомобиля) {
em.merge возвращение (символ);
}
общественного недействительными setEm (EntityManager ет) {
this.em = ет;
}
getEm общественных EntityManager () {
возвращение р;
}
}
и, наконец, в «applicationContext.xml:
<! - CAR DAO -> <bean id="carDaoImpl" class="it.mrwebmaster.hibernate.dao.CarDaoImpl" />
Как видно реализовать nost DAO нам нужно EntityManager, который вводят непосредственно у нас 'с помощью IoC аннотации @ PersistenceContext.
Реализации каждого метода являются тривиальными, просто делегировать работу all'EntityManager.
Что касается управления транзакциями, решила использовать @ Transactional аннотации.
Это позволяет Весна создать экземпляр нашего DAO будет использовать прокси-сервер, в чьи обязанности входит открытие и закрытие сделки до вызова метода и сразу же после «выхода из самого метода делают совершают или откат в случае ошибке.
Отметим, наконец, использование @ транзакций для ReadOnly nell'annotation метод нагрузки, тем самым создала переход только для чтения.
Это управление транзакциями осуществляется через использование АОП, с тем чтобы он просто добавить к нашему applicazionContext.xml:
<! - Transaction Management -> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </ Бин> <tx:annotation-driven transaction-manager="transactionManager" />
| |
Linux (курс)
Полное руководство по открытым исходным кодом системы. От 49 €. |
| |
PHP (курс)
Полный курс для создания динамических веб-сайтов. От 49 €. |
| |
Руби и Ruby On Rails (курс)
Создание программного обеспечения и веб-приложений с Рубином и RoR. С 39 €. |