Что выведет код?
#Tasks
import java.util.HashMap;
public class Task170325 {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
map.put(new String("a"), 1);
map.put(new String("a"), 2);
System.out.println(map.size());
}
}
#Tasks
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Какой цикл гарантированно выполнится хотя бы один раз?
Какой цикл гарантированно выполнится хотя бы один раз?
Anonymous Quiz
14%
for
7%
while
75%
do-while
5%
foreach
Аннотация @OrderColumn
Аннотация @OrderColumn используется в Java Persistence API (JPA) для указания порядка элементов в коллекции, которая маппится на базу данных. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой упорядоченные коллекции (например, List), и позволяет сохранять порядок элементов в базе данных.
Аннотация @OrderColumn принимает несколько параметров, которые позволяют настроить маппинг порядка элементов:
name (тип: String):
Указывает имя столбца в базе данных, который будет хранить порядковый индекс элементов коллекции.
По умолчанию: если параметр не указан, JPA использует имя поля или свойства сущности, дополненное суффиксом _ORDER (например, items_ORDER).
nullable (тип: boolean):
Указывает, может ли столбец, хранящий порядковый индекс, иметь значение NULL.
По умолчанию: true.
insertable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы INSERT.
По умолчанию: true.
updatable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы UPDATE.
По умолчанию: true.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
Значения по умолчанию
Если аннотация @OrderColumn не указана, JPA не сохраняет порядок элементов коллекции в базе данных. Порядок элементов может быть потерян при загрузке данных из базы данных.
Жизненный цикл
Применение: Аннотация @OrderColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для восстановления порядка элементов коллекции.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов, сохраняя порядок элементов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг коллекций (например, использовать собственные индексы или ограничения), можно использовать аннотацию @CollectionTable с параметрами uniqueConstraints, indexes и foreignKey.
Пример использования @OrderColumn с кастомизацией:
Варианты настройки
Использование name:
Позволяет явно указать имя столбца для хранения порядкового индекса.
Использование nullable:
Позволяет контролировать, может ли столбец, хранящий порядковый индекс, быть NULL.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование @CollectionTable:
Позволяет настроить таблицу, в которой хранятся элементы коллекции, включая уникальные ограничения и индексы.
#Java #Training #Hard #Spring #SpringDataJPA #OrderColumn
Аннотация @OrderColumn используется в Java Persistence API (JPA) для указания порядка элементов в коллекции, которая маппится на базу данных. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой упорядоченные коллекции (например, List), и позволяет сохранять порядок элементов в базе данных.
Аннотация @OrderColumn принимает несколько параметров, которые позволяют настроить маппинг порядка элементов:
name (тип: String):
Указывает имя столбца в базе данных, который будет хранить порядковый индекс элементов коллекции.
По умолчанию: если параметр не указан, JPA использует имя поля или свойства сущности, дополненное суффиксом _ORDER (например, items_ORDER).
nullable (тип: boolean):
Указывает, может ли столбец, хранящий порядковый индекс, иметь значение NULL.
По умолчанию: true.
insertable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы INSERT.
По умолчанию: true.
updatable (тип: boolean):
Указывает, должен ли столбец включаться в SQL-запросы UPDATE.
По умолчанию: true.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
@ElementCollection
@OrderColumn(name = "item_order")
private List<String> items;
Значения по умолчанию
Если аннотация @OrderColumn не указана, JPA не сохраняет порядок элементов коллекции в базе данных. Порядок элементов может быть потерян при загрузке данных из базы данных.
Жизненный цикл
Применение: Аннотация @OrderColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для восстановления порядка элементов коллекции.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов, сохраняя порядок элементов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг коллекций (например, использовать собственные индексы или ограничения), можно использовать аннотацию @CollectionTable с параметрами uniqueConstraints, indexes и foreignKey.
Пример использования @OrderColumn с кастомизацией:
@ElementCollection
@CollectionTable(name = "items", joinColumns = @JoinColumn(name = "user_id"))
@OrderColumn(name = "item_order", columnDefinition = "INT NOT NULL")
private List<String> items;
Варианты настройки
Использование name:
Позволяет явно указать имя столбца для хранения порядкового индекса.
Использование nullable:
Позволяет контролировать, может ли столбец, хранящий порядковый индекс, быть NULL.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование @CollectionTable:
Позволяет настроить таблицу, в которой хранятся элементы коллекции, включая уникальные ограничения и индексы.
#Java #Training #Hard #Spring #SpringDataJPA #OrderColumn
Аннотация @PrimaryKeyJoinColumn
Аннотация @PrimaryKeyJoinColumn используется в Java Persistence API (JPA) для указания связи между сущностями, где первичный ключ одной сущности используется как внешний ключ для другой сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется в наследовании сущностей (стратегия JOINED) или в отношениях @OneToOne, где первичный ключ одной сущности является одновременно и внешним ключом для другой.
Аннотация @PrimaryKeyJoinColumn принимает несколько параметров, которые позволяют настроить маппинг первичного ключа как внешнего ключа:
name (тип: String):
Указывает имя столбца в текущей сущности, который используется как внешний ключ.
По умолчанию: если параметр не указан, JPA использует имя первичного ключа связанной сущности.
referencedColumnName (тип: String):
Указывает имя столбца в целевой сущности, на который ссылается внешний ключ.
По умолчанию: если параметр не указан, JPA использует первичный ключ целевой сущности.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
Значения по умолчанию
Если аннотация @PrimaryKeyJoinColumn не указана, JPA использует имя первичного ключа текущей сущности в качестве имени столбца внешнего ключа и первичный ключ целевой сущности в качестве referencedColumnName.
Жизненный цикл
Применение: Аннотация @PrimaryKeyJoinColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга первичного ключа как внешнего ключа.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг внешних ключей (например, использовать собственные индексы или ограничения), можно использовать параметр foreignKey.
Пример использования foreignKey:
Варианты настройки
Использование name и referencedColumnName:
Позволяет явно указать имена столбцов в базе данных, что полезно при работе с существующими схемами.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование foreignKey:
Позволяет задать имя и другие параметры внешнего ключа, что полезно для управления схемой базы данных.
#Java #Training #Hard #Spring #SpringDataJPA #PrimaryKeyJoinColumn
Аннотация @PrimaryKeyJoinColumn используется в Java Persistence API (JPA) для указания связи между сущностями, где первичный ключ одной сущности используется как внешний ключ для другой сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется в наследовании сущностей (стратегия JOINED) или в отношениях @OneToOne, где первичный ключ одной сущности является одновременно и внешним ключом для другой.
Аннотация @PrimaryKeyJoinColumn принимает несколько параметров, которые позволяют настроить маппинг первичного ключа как внешнего ключа:
name (тип: String):
Указывает имя столбца в текущей сущности, который используется как внешний ключ.
По умолчанию: если параметр не указан, JPA использует имя первичного ключа связанной сущности.
referencedColumnName (тип: String):
Указывает имя столбца в целевой сущности, на который ссылается внешний ключ.
По умолчанию: если параметр не указан, JPA использует первичный ключ целевой сущности.
columnDefinition (тип: String):
Позволяет указать SQL-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для генерации схемы базы данных.
По умолчанию: не задано.
Пример использования:
@Entity
@PrimaryKeyJoinColumn(name = "employee_id", referencedColumnName = "id")
public class Employee extends Person {
// Дополнительные поля и методы
}
Значения по умолчанию
Если аннотация @PrimaryKeyJoinColumn не указана, JPA использует имя первичного ключа текущей сущности в качестве имени столбца внешнего ключа и первичный ключ целевой сущности в качестве referencedColumnName.
Жизненный цикл
Применение: Аннотация @PrimaryKeyJoinColumn применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга первичного ключа как внешнего ключа.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.
Кастомизация маппинга:
Если требуется кастомизировать маппинг внешних ключей (например, использовать собственные индексы или ограничения), можно использовать параметр foreignKey.
Пример использования foreignKey:
@Entity
@PrimaryKeyJoinColumn(
name = "employee_id",
referencedColumnName = "id",
foreignKey = @ForeignKey(name = "fk_employee_person")
)
public class Employee extends Person {
// Дополнительные поля и методы
}
Варианты настройки
Использование name и referencedColumnName:
Позволяет явно указать имена столбцов в базе данных, что полезно при работе с существующими схемами.
Использование columnDefinition:
Позволяет указать точное SQL-определение столбца, что полезно для сложных сценариев.
Использование foreignKey:
Позволяет задать имя и другие параметры внешнего ключа, что полезно для управления схемой базы данных.
#Java #Training #Hard #Spring #SpringDataJPA #PrimaryKeyJoinColumn
Что выведет код?
#Tasks
public class Task180325 {
public static void main(String[] args) {
int a = 5;
double b = 2;
Long c = (long) (a / b);
System.out.println(c);
}
}
#Tasks
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Какой оператор используется для проверки типа объекта?
Какой оператор используется для проверки типа объекта?
Anonymous Quiz
31%
typeof
4%
is
7%
equals
57%
instanceof
Аннотация @SecondaryTable
Аннотация @SecondaryTable используется в Java Persistence API (JPA) для указания дополнительной таблицы, связанной с основной таблицей сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется, когда сущность должна быть распределена между несколькими таблицами в базе данных, и позволяет маппить поля сущности на столбцы в дополнительной таблице.
Аннотация @SecondaryTable принимает несколько параметров, которые позволяют настроить связь с дополнительной таблицей:
name (тип: String):
Указывает имя дополнительной таблицы в базе данных.
Обязательный параметр.
catalog (тип: String):
Указывает каталог базы данных, в котором находится дополнительная таблица.
По умолчанию: каталог по умолчанию для базы данных.
schema (тип: String):
Указывает схему базы данных, в которой находится дополнительная таблица.
По умолчанию: схема по умолчанию для базы данных.
pkJoinColumns (тип: PrimaryKeyJoinColumn[]):
Указывает столбцы, которые связывают основную таблицу с дополнительной таблицей через первичный ключ.
Каждый элемент массива является аннотацией @PrimaryKeyJoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ основной таблицы.
uniqueConstraints (тип: UniqueConstraint[]):
Позволяет задать уникальные ограничения для дополнительной таблицы.
Каждый элемент массива является аннотацией @UniqueConstraint, которая настраивает уникальное ограничение.
По умолчанию: уникальные ограничения не заданы.
indexes (тип: Index[]):
Позволяет задать индексы для дополнительной таблицы.
Каждый элемент массива является аннотацией @Index, которая настраивает индекс.
По умолчанию: индексы не заданы.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для связи между основной и дополнительной таблицами.
По умолчанию: не задано.
Пример использования:
Если аннотация @SecondaryTable не указана, JPA предполагает, что все поля сущности маппятся на основную таблицу.
Кастомизация маппинга:
Если требуется кастомизировать маппинг таблиц (например, использовать собственные индексы или ограничения), можно использовать параметры uniqueConstraints, indexes и foreignKey.
Пример использования uniqueConstraints и indexes:
Варианты настройки
Использование name:
Позволяет явно указать имя дополнительной таблицы.
Использование pkJoinColumns:
Позволяет настроить столбцы, связывающие основную таблицу с дополнительной таблицей.
Использование uniqueConstraints:
Позволяет задать уникальные ограничения для дополнительной таблицы.
Использование indexes:
Позволяет улучшить производительность запросов к дополнительной таблице.
Использование foreignKey:
Позволяет задать определение внешнего ключа для связи между основной и дополнительной таблицами.
#Java #Training #Hard #Spring #SpringDataJPA #SecondaryTable
Аннотация @SecondaryTable используется в Java Persistence API (JPA) для указания дополнительной таблицы, связанной с основной таблицей сущности. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется, когда сущность должна быть распределена между несколькими таблицами в базе данных, и позволяет маппить поля сущности на столбцы в дополнительной таблице.
Аннотация @SecondaryTable принимает несколько параметров, которые позволяют настроить связь с дополнительной таблицей:
name (тип: String):
Указывает имя дополнительной таблицы в базе данных.
Обязательный параметр.
catalog (тип: String):
Указывает каталог базы данных, в котором находится дополнительная таблица.
По умолчанию: каталог по умолчанию для базы данных.
schema (тип: String):
Указывает схему базы данных, в которой находится дополнительная таблица.
По умолчанию: схема по умолчанию для базы данных.
pkJoinColumns (тип: PrimaryKeyJoinColumn[]):
Указывает столбцы, которые связывают основную таблицу с дополнительной таблицей через первичный ключ.
Каждый элемент массива является аннотацией @PrimaryKeyJoinColumn, которая настраивает соответствующий столбец.
По умолчанию: JPA создает один столбец, ссылающийся на первичный ключ основной таблицы.
uniqueConstraints (тип: UniqueConstraint[]):
Позволяет задать уникальные ограничения для дополнительной таблицы.
Каждый элемент массива является аннотацией @UniqueConstraint, которая настраивает уникальное ограничение.
По умолчанию: уникальные ограничения не заданы.
indexes (тип: Index[]):
Позволяет задать индексы для дополнительной таблицы.
Каждый элемент массива является аннотацией @Index, которая настраивает индекс.
По умолчанию: индексы не заданы.
foreignKey (тип: ForeignKey):
Позволяет указать определение внешнего ключа для связи между основной и дополнительной таблицами.
По умолчанию: не задано.
Пример использования:
@Entity
@Table(name = "employee")
@SecondaryTable(
name = "employee_details",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "employee_id")
)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(table = "employee_details")
private String address;
@Column(table = "employee_details")
private String phoneNumber;
// Геттеры и сеттеры
}
Если аннотация @SecondaryTable не указана, JPA предполагает, что все поля сущности маппятся на основную таблицу.
Кастомизация маппинга:
Если требуется кастомизировать маппинг таблиц (например, использовать собственные индексы или ограничения), можно использовать параметры uniqueConstraints, indexes и foreignKey.
Пример использования uniqueConstraints и indexes:
@Entity
@Table(name = "employee")
@SecondaryTable(
name = "employee_details",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "employee_id"),
uniqueConstraints = @UniqueConstraint(columnNames = {"employee_id", "phoneNumber"}),
indexes = @Index(columnList = "phoneNumber")
)
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(table = "employee_details")
private String address;
@Column(table = "employee_details")
private String phoneNumber;
// Геттеры и сеттеры
}
Варианты настройки
Использование name:
Позволяет явно указать имя дополнительной таблицы.
Использование pkJoinColumns:
Позволяет настроить столбцы, связывающие основную таблицу с дополнительной таблицей.
Использование uniqueConstraints:
Позволяет задать уникальные ограничения для дополнительной таблицы.
Использование indexes:
Позволяет улучшить производительность запросов к дополнительной таблице.
Использование foreignKey:
Позволяет задать определение внешнего ключа для связи между основной и дополнительной таблицами.
#Java #Training #Hard #Spring #SpringDataJPA #SecondaryTable
Аннотации @NamedQuery и @NamedQueries
Аннотации @NamedQuery и @NamedQueries используются в Java Persistence API (JPA) для определения именованных запросов (Named Queries), которые могут быть выполнены в рамках сущности. Они находятся в пакете javax.persistence (или jakarta.persistence в Jakarta EE).
@NamedQuery: Позволяет определить один именованный запрос.
@NamedQueries: Позволяет определить несколько именованных запросов для одной сущности.
Именованные запросы полезны для централизации и повторного использования JPQL (Java Persistence Query Language) или SQL-запросов.
@NamedQuery
Аннотация @NamedQuery принимает следующие параметры:
name (обязательный):
Уникальное имя запроса. Обычно используется формат EntityName.queryName.
Пример: "User.findByEmail".
query (обязательный):
Строка, содержащая JPQL или SQL-запрос.
Пример: "SELECT u FROM User u WHERE u.email = :email".
lockMode (необязательный):
Определяет режим блокировки для запроса. Возможные значения:
LockModeType.NONE (по умолчанию).
LockModeType.READ.
LockModeType.WRITE.
LockModeType.OPTIMISTIC.
LockModeType.PESSIMISTIC_READ.
LockModeType.PESSIMISTIC_WRITE.
hints (необязательный):
Массив подсказок (hints), которые могут быть переданы провайдеру JPA (например, Hibernate) для настройки выполнения запроса.
Пример: @QueryHint(name = "org.hibernate.cacheable", value = "true").
Пример использования:
@NamedQueries
Аннотация @NamedQueries используется для группировки нескольких аннотаций @NamedQuery. Она принимает массив @NamedQuery.
Пример использования:
Значения по умолчанию
Если параметры lockMode или hints не указаны, используются значения по умолчанию (LockModeType.NONE и пустой массив подсказок соответственно).
Жизненный цикл
Применение: Аннотации @NamedQuery и @NamedQueries применяются на этапе загрузки метаданных сущности JPA. Они регистрируются в EntityManagerFactory и доступны через EntityManager.
Инициализация: Запросы компилируются и кэшируются при создании EntityManagerFactory.
Уничтожение: Запросы остаются доступными до тех пор, пока существует EntityManagerFactory.
Кэширование запросов:
Spring Boot поддерживает кэширование запросов через Hibernate. Например:
Это может быть полезно для оптимизации производительности именованных запросов.
Интеграция с Spring Data JPA:
Spring Data JPA автоматически связывает именованные запросы с методами репозитория, если имя метода соответствует имени запроса.
Например, метод findByEmail в репозитории будет автоматически связан с именованным запросом User.findByEmail.
Варианты настройки
Использование JPQL:
Именованные запросы могут быть написаны на JPQL, что обеспечивает переносимость между разными базами данных.
Использование нативного SQL:
Если требуется использовать нативный SQL, можно указать это в запросе:
Кэширование запросов:
Для оптимизации производительности можно включить кэширование запросов через подсказки (hints).
Динамические запросы:
Если именованные запросы недостаточно гибки, можно использовать @Query в Spring Data JPA для определения запросов непосредственно в репозитории.
Пример использования @Query:
#Java #Training #Hard #Spring #SpringDataJPA #NamedQuery #NamedQueries
Аннотации @NamedQuery и @NamedQueries используются в Java Persistence API (JPA) для определения именованных запросов (Named Queries), которые могут быть выполнены в рамках сущности. Они находятся в пакете javax.persistence (или jakarta.persistence в Jakarta EE).
@NamedQuery: Позволяет определить один именованный запрос.
@NamedQueries: Позволяет определить несколько именованных запросов для одной сущности.
Именованные запросы полезны для централизации и повторного использования JPQL (Java Persistence Query Language) или SQL-запросов.
@NamedQuery
Аннотация @NamedQuery принимает следующие параметры:
name (обязательный):
Уникальное имя запроса. Обычно используется формат EntityName.queryName.
Пример: "User.findByEmail".
query (обязательный):
Строка, содержащая JPQL или SQL-запрос.
Пример: "SELECT u FROM User u WHERE u.email = :email".
lockMode (необязательный):
Определяет режим блокировки для запроса. Возможные значения:
LockModeType.NONE (по умолчанию).
LockModeType.READ.
LockModeType.WRITE.
LockModeType.OPTIMISTIC.
LockModeType.PESSIMISTIC_READ.
LockModeType.PESSIMISTIC_WRITE.
hints (необязательный):
Массив подсказок (hints), которые могут быть переданы провайдеру JPA (например, Hibernate) для настройки выполнения запроса.
Пример: @QueryHint(name = "org.hibernate.cacheable", value = "true").
Пример использования:
@NamedQuery(
name = "User.findByEmail",
query = "SELECT u FROM User u WHERE u.email = :email",
hints = {
@QueryHint(name = "org.hibernate.cacheable", value = "true")
}
)
@NamedQueries
Аннотация @NamedQueries используется для группировки нескольких аннотаций @NamedQuery. Она принимает массив @NamedQuery.
Пример использования:
@NamedQueries({
@NamedQuery(
name = "User.findByEmail",
query = "SELECT u FROM User u WHERE u.email = :email"
),
@NamedQuery(
name = "User.findAllActive",
query = "SELECT u FROM User u WHERE u.active = true"
)
})
Значения по умолчанию
Если параметры lockMode или hints не указаны, используются значения по умолчанию (LockModeType.NONE и пустой массив подсказок соответственно).
Жизненный цикл
Применение: Аннотации @NamedQuery и @NamedQueries применяются на этапе загрузки метаданных сущности JPA. Они регистрируются в EntityManagerFactory и доступны через EntityManager.
Инициализация: Запросы компилируются и кэшируются при создании EntityManagerFactory.
Уничтожение: Запросы остаются доступными до тех пор, пока существует EntityManagerFactory.
Кэширование запросов:
Spring Boot поддерживает кэширование запросов через Hibernate. Например:
spring.jpa.properties.hibernate.cache.use_query_cache=true
Это может быть полезно для оптимизации производительности именованных запросов.
Интеграция с Spring Data JPA:
Spring Data JPA автоматически связывает именованные запросы с методами репозитория, если имя метода соответствует имени запроса.
Например, метод findByEmail в репозитории будет автоматически связан с именованным запросом User.findByEmail.
Варианты настройки
Использование JPQL:
Именованные запросы могут быть написаны на JPQL, что обеспечивает переносимость между разными базами данных.
Использование нативного SQL:
Если требуется использовать нативный SQL, можно указать это в запросе:
@NamedQuery(
name = "User.findByEmailNative",
query = "SELECT * FROM users WHERE email = :email",
resultClass = User.class
)
Кэширование запросов:
Для оптимизации производительности можно включить кэширование запросов через подсказки (hints).
Динамические запросы:
Если именованные запросы недостаточно гибки, можно использовать @Query в Spring Data JPA для определения запросов непосредственно в репозитории.
Пример использования @Query:
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u FROM User u WHERE u.email = :email")
User findByEmail(@Param("email") String email);
}
#Java #Training #Hard #Spring #SpringDataJPA #NamedQuery #NamedQueries
Что выведет код?
#Tasks
import java.util.HashSet;
public class Task190325 {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
String s1 = new String("a");
String s2 = new String("a");
set.add(s1);
set.add(s2);
set.add(null);
set.remove(null);
System.out.println(set.size());
}
}
#Tasks
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩💻
Что произойдёт при делении числа на 0 в Java?
Что произойдёт при делении числа на 0 в Java?
Anonymous Quiz
6%
Вернётся 0
4%
Программа завершится без ошибок
78%
Выбросится исключение ArithmeticException
12%
Вернётся бесконечность