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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Всем привет! 🖐

Решили все-таки сегодня собраться! В 16:00 как всегда в Яндекс.Телемост

@Shikin_Anatoliy попробует написать простой CRUD сервис, а мы ему в случае чего, поможем!

Полезный лайф-кодинг для новичков, приходите будем учиться вместе 💪

На фото админ, пишет пет-проект

Ждем всех!
✌️
Please open Telegram to view this post
VIEW IN TELEGRAM
https://telemost.yandex.ru/j/11766846568901 - встреча создана!

Залетаем!
Встреча_в_Телемосте_16_03_25_20_32_18_—_запись.webm
665.9 MB
Сегодняшняя встреча!

@Shikin_Anatoliy написал неплохой обучающий сервис используя основные аннотации Spring.

Несмотря на то что мы не смогли все это протестировать, видео полезно для новичков в спринг, которые хотят написать свой простой веб-сервис!

@Shikin_Anatoliy большое спасибо за труд! 💪
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Аннотация @ElementCollection

Аннотация @ElementCollection используется в Java Persistence API (JPA) для маппинга коллекций базовых типов (например, String, Integer) или встраиваемых объектов (аннотированных @Embeddable) в отдельную таблицу базы данных. Она находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE). Эта аннотация применяется к полям или свойствам сущности, которые представляют собой коллекции, и позволяет сохранять их в отдельной таблице, связанной с основной сущностью.

Аннотация @ElementCollection принимает несколько параметров, которые позволяют настроить маппинг коллекции:

fetch (тип: FetchType):
Указывает стратегию загрузки данных: FetchType.EAGER (жадная загрузка) или FetchType.LAZY (ленивая загрузка).
По умолчанию: FetchType.LAZY.

targetClass (тип: Class<?>):
Указывает класс элементов коллекции, если он не может быть выведен из типа коллекции.
По умолчанию: тип элементов коллекции выводится автоматически.


Дополнительные параметры:
Аннотация @ElementCollection часто используется в сочетании с @CollectionTable для настройки таблицы, в которой хранятся элементы коллекции.

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

Применение: Аннотация @ElementCollection применяется на этапе маппинга сущности JPA. Она используется при создании таблиц в базе данных (если используется автоматическая генерация схемы) и при выполнении операций чтения/записи данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанные параметры для маппинга коллекции.
Уничтожение: При сохранении сущности в базу данных JPA использует указанные параметры для генерации SQL-запросов.


Кастомизация маппинга:
Если требуется кастомизировать маппинг коллекций (например, использовать собственные индексы или ограничения), можно использовать аннотацию @CollectionTable с параметрами uniqueConstraints, indexes и foreignKey.

Пример использования @CollectionTable с кастомизацией:
@ElementCollection
@CollectionTable(
name = "phone_numbers",
joinColumns = @JoinColumn(name = "user_id"),
uniqueConstraints = @UniqueConstraint(columnNames = {"user_id", "phone_number"}),
indexes = @Index(columnList = "phone_number")
)
@Column(name = "phone_number")
private Set<String> phoneNumbers;


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

Использование @CollectionTable:
Позволяет явно указать имя таблицы и столбцы для хранения элементов коллекции.

Использование @Column:
Позволяет указать имя столбца для хранения элементов коллекции.

Использование uniqueConstraints и indexes:
Позволяет задать уникальные ограничения и индексы для таблицы, хранящей элементы коллекции.

Использование fetch:
Позволяет управлять стратегией загрузки данных (жадная или ленивая загрузка).

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

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
Варианты ответа:
Anonymous Quiz
0%
0
47%
1
40%
2
13%
Exception
Я уважаю такой подход к работе 😂 🫡

https://t.me/Java_for_beginner_dev

#Mems
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-определение столбца, которое будет использоваться при генерации схемы базы данных.
По умолчанию: не задано.


Пример использования:
@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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Аннотация @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
Что выведет код?

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
Варианты ответа:
Anonymous Quiz
36%
2
25%
2.5
26%
2L
13%
Exception
Ну это тогда не сеньор 🤨 😁

https://t.me/Java_for_beginner_dev

#Mems
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):
Позволяет указать определение внешнего ключа для связи между основной и дополнительной таблицами.
По умолчанию: не задано.

Пример использования:


@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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM