Puoi inserirli nell'interfaccia ma tieni presente che le transazioni potrebbero non essere eseguite in alcuni casi. Vedi il secondo suggerimento nella sezione 10.5.6 dei documenti di primavera:
Spring consiglia di annotare solo le classi concrete (e i metodi delle classi concrete) con l'annotazione @Transactional, anziché le interfacce di annotazione. Puoi sicuramente posizionare l'annotazione @Transactional su un'interfaccia (o un metodo di interfaccia), ma funziona solo come ti aspetteresti se utilizzi proxy basati su interfaccia. Il fatto che le annotazioni Java non siano ereditate dalle interfacce significa che se stai utilizzando proxy basati sulla classe (proxy-target-class = "true") o l'aspetto basato sulla tessitura (mode = "aspectj"), le impostazioni della transazione sono non riconosciuto dall'infrastruttura di proxy e tessitura e l'oggetto non verrà avvolto in un proxy transazionale, il che sarebbe decisamente negativo.
Consiglierei di inserirli nell'implementazione per questo motivo.
Inoltre, a me, le transazioni sembrano un dettaglio di implementazione, quindi dovrebbero essere nella classe di implementazione. Immagina di avere implementazioni wrapper per la registrazione o implementazioni di test (mock) che non devono essere transazionali.