..


Рекламные ссылки

Доступ к данным - Создание DAO и управление транзакциями

Ссылаясь на пример предыдущего пункта, мы видим, как создать 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" />



Весна Java Руководство
E-Learning
Linux (курс) Linux (курс)
Полное руководство по открытым исходным кодом системы. От 49 €.
PHP (курс) PHP (курс)
Полный курс для создания динамических веб-сайтов. От 49 €.
Руби и Ruby On Rails (курс) Руби и Ruby On Rails (курс)
Создание программного обеспечения и веб-приложений с Рубином и RoR. С 39 €.
Рекламные ссылки