Имате нужда от начин за поясняване на методите на услугата, следвайки модела на хранилището

Опитвам се да преработя съществуващата кодова база на един от моите проекти, следвайки модела на Repository, така че да мога да направя проекта по-използваем и тестван.

Написал съм услуги, хранилища, когато се опитвам да задам автентификация, оторизация и транзакционна анотация на слоя на услугата, срещам проблеми. Тези пояснения работят само на ниво контролер, но не и на ниво услуга, така че искам начин за методи за обслужване на пояснения. Възможно ли е да се направи така?

Би било полезно, ако някой ми насочи примери, използвайки модел на хранилище в рамката на Play или по-добър начин да продължа по-нататък.


person Sivakumar    schedule 02.12.2016    source източник


Отговори (1)


Удостоверяването и оторизацията имат смисъл само при заявка, така че залепването им върху нещо друго освен метод на контролер няма да работи и в двата случая.

Transactional е само помощна анотация за обвиване на цялата заявка в JPA транзакция. Обикновено е препоръчително да направите опаковането сами, така че всъщност нямате нужда от това. Пример, взет от документацията:

@Inject
private JPAApi jpaApi;

public void updateSomething() {
    // do something with the entity manager, per instance
    // save, update or query model objects.
    jpaApi.withTransaction(() -> {
        EntityManager em = jpaApi.em();
        Query query = em.createNativeQuery("update people set active = 1 where age > 18");
        query.executeUpdate();
    });
}
person gpgekko    schedule 02.12.2016
comment
Благодаря за отговора. Да, можем да направим това по начина, който споменахте, но в някои случаи трябва да имам поредица от постоянни в моята услуга, която зависи от друга. Например, първо запазваме родител, който ще бъде в отделна транзакция, и следващ дъщерен елемент, който ще бъде друга транзакция. Ако моето дете упорства не успее, то няма да върне родителското упоритост. В крайна сметка имам нужда от начин да обгърна услугата си в една транзакция. - person Sivakumar; 02.12.2016