Spring Boot | Как получить доступ к базе данных с помощью Spring Data JPA
Spring Data JPA - это метод реализации репозиториев JPA для простого добавления уровня доступа к данным в приложениях. CRUD означает создание, получение, обновление, удаление, которые являются возможными операциями, которые могут выполняться в базе данных. В этой статье мы увидим пример того, как получить доступ к данным из базы данных (MySQL для этой статьи) в приложении весенней загрузки с использованием данных Spring JPA.
Чтобы узнать, как создать проект весенней загрузки, обратитесь к этой статье.
База данных - это набор взаимосвязанных данных, которые помогают в эффективном извлечении, вставке и удалении данных из базы данных и организуют данные в виде таблиц, представлений, схем, отчетов и т. Д. Таким образом, для любого приложения база данных является одним из наиболее важные модули, и должен быть способ взаимодействия с ними. Поэтому для доступа к базе данных с помощью Spring Data JPA выполняются следующие шаги:
- Перейдите в spring initializr и создайте новый проект со следующими зависимостями:
- Весенняя паутина
- Spring Data JPA
- Драйвер MySQL
- Загрузите стартовый проект и импортируйте его в IDE.
- После синхронизации проекта мы создадим класс модели Company с аннотацией @Entity, что означает, что этот класс сопоставлен с таблицей в базе данных. Добавьте элементы данных с типами данных, такими же, как у столбцов в базе данных, и сгенерируйте конструктор и геттеры. Добавьте аннотацию @Id к элементу данных, который будет вести себя как атрибут первичного ключа в таблице и @Generatedvalue (strategy = generationtype.auto) , чтобы автоматически увеличивать атрибут первичного ключа. Ниже представлена реализация этого класса:
@EntitypublicclassCompany {// Primary ID which increments// automatically when new entry// is added into the database@Id@GeneratedValue(strategy= GenerationType.AUTO)intid;String name;// In monthsintduration;String profile;// Can be 0intstipend;booleanworkFromHome;publicCompany(){}// Parameterized constructorpublicCompany(String name,intduration,String profile,intstipend,booleanworkFromHome){this.name = name;this.duration = duration;this.profile = profile;this.stipend = stipend;this.workFromHome = workFromHome;}// Getters and setters of// the variablespublicintgetId(){returnid;}publicString getName(){returnname;}publicintgetDuration(){duration;return}publicString getProfile(){returnprofile;}publicintgetStipend(){returnstipend;}publicvoidsetId(intid){this.id = id;}publicbooleanisWorkFromHome(){returnworkFromHome;} - Теперь создайте интерфейс CompanyRepository с аннотацией @Repository, который будет реализовывать CrudRepository . Функции для выполнения операций CRUD будут определены в интерфейсе, как показано ниже:
@RepositorypublicinterfaceCompanyRepositoryextendsCrudRepository<Company,Integer> {Company findById(intid);List<Company> findAll();voiddeleteById(intid);}Примечание . Функции не будут реализованы, поскольку они уже реализованы в CrudRepository .
- Теперь мы создадим REST API (GET, POST, PUT, DELETE), как показано ниже:
@RestControllerpublicclassCompanyController {@AutowiredprivateCompanyRepository repo;// Home Page@GetMapping("/")publicString welcome(){return"<html><body>"+"<h1>WELCOME</h1>"+"</body></html>";}// Get All Notes@GetMapping("/company")publicList<Company> getAllNotes(){returnrepo.findAll();}// Get the company details by// ID@GetMapping("/company/{id}")publicCompany getCompanyById(@PathVariable(value ="id")intid){returnrepo.findById(id);}@PostMapping("/company")@ResponseStatus(HttpStatus.CREATED)publicCompany addCompany(@RequestBodyCompany company){returnrepo.save(company);}@DeleteMapping("/delete/{id}")publicvoiddeleteStudent(@PathVariable(value ="id")intid){repo.deleteById(id);}@PutMapping("/company/{id}")publicResponseEntity<Object> updateStudent(@RequestBodyCompany company,@PathVariableintid){Optional<Company> companyRepo= Optional.ofNullable(repo.findById(id));if(!companyRepo.isPresent())returnResponseEntity.notFound().build();company.setId(id);repo.save(company);returnResponseEntity.noContent().build();} - Теперь откройте файл application.properties и добавьте следующий код. Замените database_name на базу данных, содержащую таблицу Company , username на имя пользователя mysql server (по умолчанию root) и password на mysql password.
spring.datasource.url=jdbc:mysql://localhost:3306/database_name
spring.datasource.username=username
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update - На этом процесс установления соединения с базой данных завершен. Теперь мы создаем и запускаем проект и вызываем разные API.
Примечание. Почтальон обычно предпочитают тестировать API вызовов, поэтому мы использовали инструмент почтальона для тестирования проекта.
Выход:
- База данных:
- Тестирование с коллекцией POSTMAN:
Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .