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) , чтобы автоматически увеличивать атрибут первичного ключа. Ниже представлена реализация этого класса:
@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;
}
- Теперь создайте интерфейс CompanyRepository с аннотацией @Repository, который будет реализовывать CrudRepository . Функции для выполнения операций CRUD будут определены в интерфейсе, как показано ниже:
@Repository
public
interface
CompanyRepository
extends
CrudRepository<Company,
Integer> {
Company findById(
int
id);
List<Company> findAll();
void
deleteById(
int
id);
}
Примечание . Функции не будут реализованы, поскольку они уже реализованы в CrudRepository .
- Теперь мы создадим 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();
}
- Теперь откройте файл 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 и многому другому, см. Полный курс подготовки к собеседованию .