Tengo una situación en la que tengo que crear ABM durante más de cinco entidades. Por lo tanto, yo estaba pensando si es posible crear un CRUD genérico de modo que pueda tener menos código en lugar de crear CRUD individual para cada entidad. Quiero crear un CRUDUtility genérico que puedo llamar desde cada controlador métodos entidades, y desde que la utilidad Quiero llamar a la clase de servicio genérico y la interfaz de repositorio genérico.
Esto es lo que quiero.
Utilidad de que i puede llamar desde cada controlador de entidad:
@Component
public class CRUDUtility<T> {
@Autowired
private CRUDService<T> crudService;
}
La clase de servicio para llamar a la clase CRUDUtility.
@Service
public class CRUDService<T> {
@Autowired
private CRUDRepository<T> crudRepository;
public T createEntity(T entityTypeParam) {
return crudRepository.save(entityTypeParam);
}
}
Repositorio para llamar desde CRUDService:
@Repository
public interface CRUDRepository<T> extends JpaRepository<T, Number> {
}
Gracias.
Sí, se puede crear un CRUD genérica
Desde la primavera 4 que puede hacer autowiring por tipo genérico.
public interface CRUDService<T> {
List<T> listAll();
T getById(Long id);
T saveOrUpdate(T domainObject);
void delete(Long id);
}
@Service
public FirstService implements CRUDService<First>{
.........................
}
@Service
public SecondService implements CRUDService<Second>{
.........................
}
@RestController
public MyController {
@Autowired
private CRUDService<First> firstService;
@Autowired
private CRUDService<Second> secondService;
}