Java for Beginner
675 subscribers
548 photos
155 videos
12 files
839 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Что выведет код?

import java.util.HashSet;
import java.util.Set;

record Person28(
String name,
int age
) {}

public class Task280225 {
public static void main(String[] args) {
Set<Person28> set = new HashSet<>();
set.add(new Person28("Alice", 25));
set.add(new Person28("Bob", 30));
set.add(new Person28("Alice", 25));
set.remove(set.iterator().next());

System.out.println(set);
}
}


#Tasks
А она еще не дошла в обучении до World... 🤓

https://t.me/Java_for_beginner_dev

#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
Аннотация @Table

Аннотация @Table используется в JPA (Java Persistence API) для указания деталей отображения сущности на таблицу в базе данных. Она применяется к классу, помеченному аннотацией @Entity, и позволяет задать имя таблицы, схему, каталог и другие параметры, связанные с таблицей в базе данных.

Аннотация @Table, как и @Entity, находится в пакете javax.persistence (для JPA 2.x и ниже) или jakarta.persistence (для JPA 3.x и выше). Импорт выглядит следующим образом:

Для JPA 2.x:
import javax.persistence.Table;


Для JPA 3.x:
import jakarta.persistence.Table;


Параметры аннотации

Аннотация @Table имеет несколько параметров, которые позволяют настроить отображение сущности на таблицу:

name:
Указывает имя таблицы в базе данных.
По умолчанию используется имя класса сущности.


Пример:
@Table(name = "users")


schema:
Указывает схему базы данных, в которой находится таблица.
По умолчанию используется схема по умолчанию для подключения к базе данных.


Пример:
@Table(name = "users", schema = "public")


catalog:
Указывает каталог базы данных, в котором находится таблица.
По умолчанию используется каталог по умолчанию для подключения к базе данных.


Пример:
@Table(name = "users", catalog = "my_catalog")


uniqueConstraints:
Позволяет задать уникальные ограничения для таблицы.
Принимает массив аннотаций @UniqueConstraint.

Пример:
@Table(name = "users", uniqueConstraints = {
@UniqueConstraint(columnNames = {"username"}),
@UniqueConstraint(columnNames = {"email"})
})


indexes:
Позволяет задать индексы для таблицы.
Принимает массив аннотаций
@Index.

Пример:
@Table(name = "users", indexes = {
@Index(name = "idx_username", columnList = "username"),
@Index(name = "idx_email", columnList = "email")
})


Механизмы Spring и JPA, связанные с @Table

Отображение сущности на таблицу:
Когда Spring Boot инициализирует JPA, он анализирует аннотацию @Table и создает метаданные для отображения сущности на таблицу в базе данных.
Если параметры name, schema или catalog не указаны, используются значения по умолчанию.


Генерация схемы базы данных:
Если параметр spring.jpa.hibernate.ddl-auto настроен на create, update или create-drop, Hibernate автоматически создаст или обновит таблицу в соответствии с аннотацией @Table.

Пример:
spring.jpa.hibernate.ddl-auto=update


Уникальные ограничения и индексы:
Уникальные ограничения и индексы, заданные через @Table, создаются в базе данных при генерации схемы.
Эти ограничения проверяются на уровне базы данных, что обеспечивает целостность данных.

Интеграция с EntityManager:
EntityManager использует метаданные, созданные на основе аннотации @Table, для выполнения операций с базой данных.
Например, при выполнении запроса SELECT * FROM users, EntityManager знает, что таблица users соответствует сущности User.


#Java #Training #Hard #Spring #SpringDataJPA #Table
Пример использования @Table
@Entity
@Table(
name = "users",
schema = "public",
catalog = "my_catalog",
uniqueConstraints = {
@UniqueConstraint(columnNames = {"username"}),
@UniqueConstraint(columnNames = {"email"})
},
indexes = {
@Index(name = "idx_username", columnList = "username"),
@Index(name = "idx_email", columnList = "email")
}
)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "username", nullable = false, length = 50)
private String username;

@Column(name = "email", unique = true)
private String email;

// Геттеры и сеттеры
}


Настройки Spring Boot, влияющие на
@Table

Автоматическая генерация схемы:
Параметр spring.jpa.hibernate.ddl-auto определяет, как Hibernate управляет схемой базы данных.

Возможные значения:
none: Никаких изменений в схеме не вносится.
create: Схема создается заново при каждом запуске.
update: Схема обновляется в соответствии с сущностями.
create-drop: Схема создается при запуске и удаляется при завершении.
validate: Проверяется соответствие схемы сущностям.


Показ SQL-запросов:
Параметр spring.jpa.show-sql позволяет включить вывод SQL-запросов в консоль.

Пример:
spring.jpa.show-sql=true


Диалект базы данных:

Параметр spring.jpa.properties.hibernate.dialect определяет диалект базы данных.

Пример:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect


#Java #Training #Hard #Spring #SpringDataJPA #Table
Всем привет!

Ну вот и выходные... Надеюсь все дождались и все отдыхают 😁

Как их проводите, может пишите какой пет-проект?
😁
Поделитесь?

Завтрашняя встреча под вопросом, может и будем отдыхать, посмотрим 😜

Всем прекрасного отдыха!
🌴

На картинке админ пишет пет-проект
😉
Please open Telegram to view this post
VIEW IN TELEGRAM
#Mems. Отношения с айтишником это…
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Аннотация @Id

Аннотация @Id используется в Java Persistence API (JPA) для обозначения поля или свойства сущности, которое является первичным ключом (primary key) в базе данных. Она находится в пакете javax.persistence (или jakarta.persistence, если используется Jakarta EE). Эта аннотация является одной из ключевых в работе с JPA и ORM (Object-Relational Mapping).

Аннотация @Id не принимает никаких параметров. Она просто маркирует поле или геттер как первичный ключ сущности.

Настройки и значения

Поскольку @Id не имеет параметров, её настройка ограничивается выбором поля или свойства, которое будет использоваться в качестве первичного ключа.

Поле, помеченное @Id, должно соответствовать одному из следующих типов:
Примитивные типы: int, long, и т.д.
Обертки примитивных типов: Integer, Long, и т.д.
String
java.util.Date
java.sql.Date
java.math.BigDecimal
java.math.BigInteger
Если используется составной ключ (composite key), то вместо @Id применяется
@EmbeddedId или @IdClass.

Жизненный цикл

Аннотация @Id применяется на этапе загрузки метаданных сущности (во время инициализации контекста Spring или при развертывании приложения).

Поле, помеченное @Id, используется JPA для:
Идентификации объекта в контексте persistence.
Сопоставления объекта с записью в базе данных.
Управления жизненным циклом сущности (например, при операциях persist, merge, remove).

Механизмы Spring и настройки Spring Boot

Механизмы Spring, связанные с @Id
Spring Data JPA использует аннотацию @Id для интеграции с JPA-провайдером (например, Hibernate).
При старте приложения Spring Boot автоматически сканирует сущности, помеченные аннотацией
@Entity, и анализирует их поля, включая те, что помечены @Id.
Spring Boot настраивает EntityManagerFactory и DataSource, которые используются JPA для работы с базой данных.


Настройки Spring Boot, предшествующие работе @Id

Конфигурация источника данных (DataSource):
Spring Boot автоматически настраивает DataSource на основе свойств, указанных в application.properties или application.yml.

Например:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Эти настройки необходимы для подключения к базе данных, где хранятся сущности с первичными ключами.


Конфигурация JPA:
Spring Boot автоматически настраивает JPA через свойства, такие как:
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
Свойство spring.jpa.hibernate.ddl-auto управляет созданием и обновлением схемы базы данных, включая таблицы и первичные ключи.


Интеграция с Hibernate:
Hibernate, как JPA-провайдер, использует аннотацию @Id для создания SQL-запросов, таких как INSERT, UPDATE, SELECT, и DELETE, где первичный ключ играет ключевую роль.

Обработка значений @Id

При сохранении сущности (persist), JPA проверяет, что поле, помеченное @Id, имеет уникальное значение.
Если поле @Id имеет значение null, JPA интерпретирует это как новую сущность и генерирует для неё новый первичный ключ (если используется стратегия генерации ключей, например,
@GeneratedValue).
При поиске сущности (find), JPA использует значение @Id для выполнения запроса SELECT по первичному ключу.


Варианты настройки

Генерация значений первичного ключа:
Аннотация @Id часто используется вместе с @GeneratedValue, которая определяет стратегию генерации первичного ключа.

Составные ключи:
Если требуется составной ключ, вместо @Id используется @EmbeddedId или @IdClass.

#Java #Training #Hard #Spring #SpringDataJPA #Id
Что выведет код?

public class Task030325 {
public static void main(String[] args) {
double a = 0.7;
double b = 0.9;
double result = Math.min(a + 0.2, b);
System.out.println(result);
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
9%
0.7
52%
0.9
35%
0.8999999999999999
4%
1.0000000000000000
Совещание в компании антивируса AVAST 😂

https://t.me/Java_for_beginner_dev

#Mems
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопросы с собеседования 👩‍💻

Какой метод используется для удаления пробелов в начале и конце строки?
Anonymous Quiz
20%
removeSpaces()
4%
cut()
61%
trim()
15%
strip()
Аннотация @GeneratedValue

Аннотация @GeneratedValue используется в Java Persistence API (JPA) для указания стратегии генерации значений первичного ключа (primary key) для сущности. Она применяется совместно с аннотацией @Id и находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация позволяет автоматически генерировать уникальные значения для первичных ключей, что упрощает управление идентификаторами в базе данных.

Аннотация @GeneratedValue принимает два необязательных параметра:
strategy: Определяет стратегию генерации значений. Тип данных — GenerationType.
generator: Указывает имя генератора, который используется для создания значений. Тип данных — String.


Настройки и значения

Параметр strategy:
Определяет, как будут генерироваться значения первичного ключа.

Доступные стратегии:
GenerationType.AUTO (по умолчанию): JPA автоматически выбирает подходящую стратегию на основе используемой базы данных.
GenerationType.IDENTITY: Использует встроенный механизм автоинкремента базы данных (например, AUTO_INCREMENT в MySQL или SERIAL в PostgreSQL).
GenerationType.SEQUENCE: Использует последовательность (sequence) базы данных для генерации значений.
GenerationType.TABLE: Использует отдельную таблицу для хранения и генерации значений первичных ключей.


Параметр generator:
Указывает имя генератора, который должен быть определён с помощью аннотации @SequenceGenerator или @TableGenerator. Это позволяет настроить дополнительные параметры для генерации значений.

Жизненный цикл

Аннотация @GeneratedValue применяется на этапе загрузки метаданных сущности (во время инициализации контекста Spring или при развертывании приложения).

Значение для поля, помеченного @GeneratedValue, генерируется:
При вставке новой сущности в базу данных (persist).
В зависимости от стратегии, значение может генерироваться базой данных или JPA-провайдером (например, Hibernate).


Механизмы Spring и настройки Spring Boot

Spring Data JPA использует аннотацию @GeneratedValue для интеграции с JPA-провайдером (например, Hibernate).
При старте приложения Spring Boot автоматически сканирует сущности, помеченные аннотацией
@Entity, и анализирует их поля, включая те, что помечены @Id и @GeneratedValue.
Spring Boot настраивает EntityManagerFactory и DataSource, которые используются JPA для работы с базой данных.


Настройки Spring Boot, предшествующие работе
@GeneratedValue

Конфигурация источника данных (DataSource):
Spring Boot автоматически настраивает DataSource на основе свойств, указанных в application.properties или application.yml.

Например:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Эти настройки необходимы для подключения к базе данных, где хранятся сущности с первичными ключами.


Конфигурация JPA:
Spring Boot автоматически настраивает JPA через свойства, такие как:
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
Свойство spring.jpa.hibernate.ddl-auto управляет созданием и обновлением схемы базы данных, включая таблицы и первичные ключи.



#Java #Training #Hard #Spring #SpringDataJPA #GeneratedValue