<prompt> Andika programu ya Java inayotekelezea API rahisi ya RESTful kwa kutumia mfumo wa Spring Boot. API inapaswa kuwa na ncha za kuunda, kusoma, kusasisha na kufuta CRUD rekodi za huluki ya Bidhaa yenye sehemu kama vile jina, maelezo, bei na wingi. Tumia hifadhidata ya ndani ya kumbukumbu ya H2 ili kuhifadhi data.PLINFORMAT  <response>: srcmainjavacomexampledemoProduct.javakifurushi com.example.demo;agiza javax.persistence.Entity;agiza javax.persistence.GeneratedValue;agiza javax.persistence.GenerationType;agiza javax.persistence.Id;EntityBidhaa ya daraja la umma kitambulisho GeneratedValuemkakati GenerationType.AUTO Kitambulisho cha kibinafsi cha muda mrefu; jina la kamba ya kibinafsi; maelezo ya Kamba ya kibinafsi; binafsi Bei mbili; Idadi ya Nambari ya kibinafsi; Wapataji na wawekaji public Long getId kitambulisho cha kurudi; seti ya utupu ya umma kitambulisho kirefu this.id id; public String getName kurudi jina; utupu wa umma setNamejina la kamba this.name jina; public String getDescription maelezo ya kurudi; public void setDescriptionMaelezo ya kamba hii.maelezo maelezo; public GetPrice bei ya kurudi; public void setPriceBei mbili hii.bei bei; Public Integer getQuantity kiasi cha kurudi; public void setQuantityInteger quantity hii.wingi wingi; srcmainjavacomexampledemoProductRepository.javakifurushi com.example.demo;agiza org.springframework.data.jpa.repository.JpaRepository;kiolesura cha umma ProductRepository inapanua JpaRepository srcmainjavacomexampledemoProductController.javakifurushi com.example.demo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.;agiza java.util.List;agiza java.util.Hiari;RestControllerRequestMappingapibidhaaMdhibiti wa Bidhaa wa daraja la umma Ina waya otomatiki Binafsi ProductRepository productRepository; Unda bidhaa mpya PostMapping public Product createProductRequestBody Product product rudisha productRepository.savebidhaa; Pata bidhaa zote GetMapping Public List getAllProducts return productRepository.findAll; Pata bidhaa moja kwa kitambulisho GetMappingid public Optional getProductByIdPathVariable Long id return productRepository.findByIdid; Sasisha bidhaa PutMappingid sasisho la bidhaa za ummaProductPathVariable kitambulisho kirefu, RequestBody Product updatedProduct return productRepository.findByIdid.mapbidhaa - product.setNameupdatedProduct.getName; product.setDescriptionupdatedProduct.getDescription; product.setPriceupdatedProduct.getPrice; product.setQuantityupdatedProduct.getQuantity; rudisha productRepository.savebidhaa; .auElseGet - updatedProduct.setIdid; return productRepository.saveupdatedProduct; ; Futa bidhaa DeleteMappingid utupu wa umma deleteProductPathVariable Long id productRepository.deleteByIdid; srcmainjavacomexampledemoDemoApplication.javakifurushi com.example.demo;agiza org.springframework.boot.SpringApplication;agiza org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplicationDemoApplication ya darasa la umma utupu tuli wa umma String args SpringApplication.runDemoApplication.class, args; 