<prompt> Tekeleza API ya RESTful inayotokana na Java yenye shughuli za CRUD kwa ajili ya kudhibiti huluki rahisi ya Kitabu, kuhifadhi data katika hifadhidata ya PostgreSQL.PLINFORMAT  <response>: javakifurushi com.example.demo;agiza javax.persistence.Entity;agiza javax.persistence.GeneratedValue;agiza javax.persistence.GenerationType;agiza javax.persistence.Id;EntityKitabu cha darasa la umma kitambulisho GeneratedValuemkakati GenerationType.IDENTITY Kitambulisho cha kibinafsi cha muda mrefu; Kichwa cha Kamba ya kibinafsi; mwandishi wa kamba ya kibinafsi; Wapataji na wawekajiHazinakiolesura cha umma BookRepository inapanua JpaRepository RestControllerRequestMappingapivitabudarasa la umma BookController Ina waya otomatiki Kitabu cha kibinafsi cha Hifadhi ya KitabuRepository; Unda kitabu kipya PostMapping Unda Kitabu cha ummaRequestBody Book kitabu cha kurudishaRepository.hifadhikitabu; Rejesha vitabu vyote GetMapping Public List getAllBooks rudisha kitabuRepository.findAll; Rejesha kitabu kimoja kwa kitambulisho GetMappingid Kitabu cha umma getBookByIdPathVariable Long id rudisha kitabuRepository.findByIdid.orElseThrow - new RuntimeExceptionKitabu hakijapatikana; Sasisha kitabu PutMappingid Usasishaji wa Kitabu cha ummaKitabu PathVariable Kitambulisho kirefu, Kitabu cha RequestBody kimesasishwa rudisha kitabuRepository.findByIdid .ramanikitabu - book.setTitleupdatedBook.getTitle; book.setAuthorupdatedBook.getAuthor; kitabu cha kurudishaRepository.hifadhikitabu; .orElseThrow - RuntimeException mpyaKitabu hakijapatikana; Futa kitabu DeleteMappingid Ufutaji wa utupu wa umma kitambulisho kirefu cha PathVariable bookRepository.deleteByIdid; malispring.datasource.urljdbc:postgresql:localhost:5432mydatabasespring.datasource.usernamemyuserspring.datasource.passwordmypasswordspring.jpa.hibernate.ddl-autosasisha 