Spring Boot | Как получить доступ к базе данных с помощью Spring Data JPA

Опубликовано: 15 Августа, 2021

Spring Data JPA - это метод реализации репозиториев JPA для простого добавления уровня доступа к данным в приложениях. CRUD означает создание, получение, обновление, удаление, которые являются возможными операциями, которые могут выполняться в базе данных. В этой статье мы увидим пример того, как получить доступ к данным из базы данных (MySQL для этой статьи) в приложении весенней загрузки с использованием данных Spring JPA.

Чтобы узнать, как создать проект весенней загрузки, обратитесь к этой статье.

База данных - это набор взаимосвязанных данных, которые помогают в эффективном извлечении, вставке и удалении данных из базы данных и организуют данные в виде таблиц, представлений, схем, отчетов и т. Д. Таким образом, для любого приложения база данных является одним из наиболее важные модули, и должен быть способ взаимодействия с ними. Поэтому для доступа к базе данных с помощью Spring Data JPA выполняются следующие шаги:

  1. Перейдите в spring initializr и создайте новый проект со следующими зависимостями:
    • Весенняя паутина
    • Spring Data JPA
    • Драйвер MySQL
  2. Загрузите стартовый проект и импортируйте его в IDE.
  3. После синхронизации проекта мы создадим класс модели Company с аннотацией @Entity, что означает, что этот класс сопоставлен с таблицей в базе данных. Добавьте элементы данных с типами данных, такими же, как у столбцов в базе данных, и сгенерируйте конструктор и геттеры. Добавьте аннотацию @Id к элементу данных, который будет вести себя как атрибут первичного ключа в таблице и @Generatedvalue (strategy = generationtype.auto) , чтобы автоматически увеличивать атрибут первичного ключа. Ниже представлена реализация этого класса:




    @Entity
    public class Company {
    // Primary ID which increments
    // automatically when new entry
    // is added into the database
    @Id
    @GeneratedValue (strategy
    = GenerationType.AUTO)
    int id;
    String name;
    // In months
    int duration;
    String profile;
    // Can be 0
    int stipend;
    boolean workFromHome;
    public Company()
    {
    }
    // Parameterized constructor
    public Company(String name, int duration,
    String profile,
    int stipend,
    boolean workFromHome)
    {
    this .name = name;
    this .duration = duration;
    this .profile = profile;
    this .stipend = stipend;
    this .workFromHome = workFromHome;
    }
    // Getters and setters of
    // the variables
    public int getId()
    {
    return id;
    }
    public String getName()
    {
    return name;
    }
    public int getDuration()
    {
    duration; return
    }
    public String getProfile()
    {
    return profile;
    }
    public int getStipend()
    {
    return stipend;
    }
    public void setId( int id)
    {
    this .id = id;
    }
    public boolean isWorkFromHome()
    {
    return workFromHome;
    }
  4. Теперь создайте интерфейс CompanyRepository с аннотацией @Repository, который будет реализовывать CrudRepository . Функции для выполнения операций CRUD будут определены в интерфейсе, как показано ниже:




    @Repository
    public interface CompanyRepository
    extends CrudRepository<Company,
    Integer> {
    Company findById( int id);
    List<Company> findAll();
    void deleteById( int id);
    }

    Примечание . Функции не будут реализованы, поскольку они уже реализованы в CrudRepository .

  5. Теперь мы создадим REST API (GET, POST, PUT, DELETE), как показано ниже:




    @RestController
    public class CompanyController {
    @Autowired
    private CompanyRepository repo;
    // Home Page
    @GetMapping ( "/" )
    public String welcome()
    {
    return "<html><body>"
    + "<h1>WELCOME</h1>"
    + "</body></html>" ;
    }
    // Get All Notes
    @GetMapping ( "/company" )
    public List<Company> getAllNotes()
    {
    return repo.findAll();
    }
    // Get the company details by
    // ID
    @GetMapping ( "/company/{id}" )
    public Company getCompanyById(
    @PathVariable (value = "id" ) int id)
    {
    return repo.findById(id);
    }
    @PostMapping ( "/company" )
    @ResponseStatus (HttpStatus.CREATED)
    public Company addCompany(
    @RequestBody Company company)
    {
    return repo.save(company);
    }
    @DeleteMapping ( "/delete/{id}" )
    public void deleteStudent(
    @PathVariable (value = "id" ) int id)
    {
    repo.deleteById(id);
    }
    @PutMapping ( "/company/{id}" )
    public ResponseEntity<Object> updateStudent(
    @RequestBody Company company,
    @PathVariable int id)
    {
    Optional<Company> companyRepo
    = Optional.ofNullable(
    repo.findById(id));
    if (!companyRepo.isPresent())
    return ResponseEntity
    .notFound()
    .build();
    company.setId(id);
    repo.save(company);
    return ResponseEntity
    .noContent()
    .build();
    }
  6. Теперь откройте файл 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

  7. На этом процесс установления соединения с базой данных завершен. Теперь мы создаем и запускаем проект и вызываем разные API.

    Примечание. Почтальон обычно предпочитают тестировать API вызовов, поэтому мы использовали инструмент почтальона для тестирования проекта.

Выход:

  • База данных:

  • Тестирование с коллекцией POSTMAN:

Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .