Ви можете розмістити їх на інтерфейсі, але попередьте, що транзакції в деяких випадках можуть не відбуватися. Див. Другу підказку у розділі 10.5.6 документації Spring:
Spring рекомендує анотувати лише конкретні класи (і методи конкретних класів) за допомогою анотації @Transactional, на відміну від анотуючих інтерфейсів. Ви, звичайно, можете розмістити анотацію @Transactional на інтерфейсі (або методі інтерфейсу), але це працює лише так, як ви очікували б, якщо ви використовуєте проксі-сервери на основі інтерфейсу. Той факт, що анотації Java не успадковуються від інтерфейсів, означає, що якщо ви використовуєте проксі-сервери на основі класів (proxy-target-class = "true") або аспект на основі переплетення (mode = "аспектj"), тоді налаштування транзакції будуть не розпізнається інфраструктурою проксі-сервера та ткацтва, і об’єкт не буде завернутий у транзакційний проксі-сервер, що було б дуже погано.
Я б порадив поставити їх на реалізацію саме з цієї причини.
Крім того, для мене транзакції здаються деталями реалізації, тому вони повинні знаходитися в класі реалізації. Уявіть, що у вас є реалізації обгортки для реєстрації або тестові реалізації (макети), які не потребують транзакцій.