Active-Record
Active-Record — шаблон проектирования, который поощряет внедрение в сам объект функций, таких как Insert, Update и Delete, и свойств, которые соответствуют столбцам некой базовой таблицы в базе данных.
Основная идея шаблона Active Record заключается в том, чтобы позволить объекту инкапсулировать данные и операции с базой данных, которые вы можете выполнять с ним. То есть, мы передаем классу некоторый набор значений, который затем внутри этого класса будет преобразован в запрос SQL и выполнен.
Такой подход позволяет нам не использовать запросы SQL напрямую. И кроме того, позволяет сделать код более безопасным, так как если нельзя выполнить любой запрос напрямую, то и выполнение SQL инъекций становится более затруднительным или даже невозможным.
Посмотрим простой пример:
В результате будет сформирован SQL запрос следующего вида:
Останется только добавить значения для соответствующих переменных при обращении к данному классу.
Active-Record — шаблон проектирования, который поощряет внедрение в сам объект функций, таких как Insert, Update и Delete, и свойств, которые соответствуют столбцам некой базовой таблицы в базе данных.
Основная идея шаблона Active Record заключается в том, чтобы позволить объекту инкапсулировать данные и операции с базой данных, которые вы можете выполнять с ним. То есть, мы передаем классу некоторый набор значений, который затем внутри этого класса будет преобразован в запрос SQL и выполнен.
Такой подход позволяет нам не использовать запросы SQL напрямую. И кроме того, позволяет сделать код более безопасным, так как если нельзя выполнить любой запрос напрямую, то и выполнение SQL инъекций становится более затруднительным или даже невозможным.
Посмотрим простой пример:
@Entity
public class ChessPlayer extends PanacheEntity {
public String firstName;
public String lastName;
public LocalDate birthDate;
@Version
public int version;
public void setLastName(String lastName) {
this.lastName = lastName.toUpperCase();
}
}
В результате будет сформирован SQL запрос следующего вида:
insert
into
ChessPlayer
(birthDate, firstName, lastName, version, id)
values
(?, ?, ?, ?, ?)
Останется только добавить значения для соответствующих переменных при обращении к данному классу.