No estoy seguro de haberlo entendido correctamente, así que quiero aclararlo. Si quiero crear un repositorio para mi entidad, por ejemplo:
public interface BookRepository extends JpaRepository<Book, Id> {}
¿Debo anotarlo con @Repository? De acuerdo con esta pregunta , la anotación @Repository traduce las excepciones de SQL a las de persistencia, pero ¿JpaRepostiory ya no lo hace? ¿Cuál es la mejor práctica: anotar o no?
Mientras usa JpaRepository
, no necesita anotar la interfaz con @Repository
Es solo una interfaz y Spring crea dinámicamente la implementación concreta como un objeto proxy y las excepciones JDBC se manejan allí.
Debe usar @Repository
cuando crea un DAO personalizado, para que Spring cree un bean y maneje la excepción correctamente.
Debe anotarlo con @Repository para que Spring sepa que debe crear una instancia de esa clase como un bean. Las anotaciones @Component, @Service y @Repository tienen el mismo propósito en ese sentido. @Repository reduce el alcance a un servicio que se ocupa específicamente de obtener y almacenar datos.