2016-12-02 5 views
0

Я пытаюсь реорганизовать существующую базу кода одного из моих проектов после шаблона репозитория, чтобы я мог сделать проект более пригодным для повторного использования и проверки.Нужен способ аннотировать методы обслуживания, следующие за шаблоном репозитория

Я написал службы, репозитории, когда я пытаюсь установить аннотацию проверки подлинности, авторизации и транзакции на уровне службы, у меня возникают проблемы. Эти аннотации работают только на уровне контроллера, но не на уровне обслуживания, поэтому я хочу использовать методы аннотатных сервисов. Можно ли это сделать?

Было бы полезно, если бы кто-то указал мне образцы с использованием шаблона репозитория на платформе Play или лучший способ продолжить работу.

ответ

0

Аутентификация и авторизация имеют смысл только по запросу, поэтому приклеивание их к чему-либо, кроме метода контроллера, не будет работать в любом случае.

Transactional - это просто вспомогательная аннотация, чтобы обернуть весь запрос в транзакции JPA. Обычно рекомендуется делать обертку в любом случае, поэтому вам это действительно не нужно. Пример, взятый из the documentation:

@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(); 
    }); 
} 
+0

Благодарим за ответ. Да, мы можем это сделать, как вы уже упоминали, но в некоторых случаях мне нужно, чтобы в моей службе сохранялась серия, которая зависит от другой. Например, мы сначала сохраняем родителя, который будет находиться в отдельной транзакции и следующем дочернем элементе, который будет другой транзакцией. Если мое дочернее устройство перестанет работать, оно не вернет родительский упор. В конце концов мне нужен способ для переноса моего сервиса в одну транзакцию. – Sivakumar