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

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

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Еще раз привет! 🖖

Хотел сказать, что если ничего вдруг не изменится, то завтра в 16:00 по МСК, я буду ждать Вас на встрече, в том же месте😄

Начнем создание приложения с подробного разбора создания сущности:

🔜 Узнаем что такое сущности и зачем они вообще нужны.
🔜 Пройдемся по основным свойствам и настройкам
🔜 Изучим на примере основные аннотации, пощупаем их в работе
🔜 Напишем мини-приложение в котором все это протестируем.

Жду всех. Как всегда 🧑‍💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Изучаем Entity, настройки и почти все аннотации. Встреча от 09.03.2025

Запись встречи -
YOUTUBE
RUTUBE

Что мы рассмотрели в видео:

🔜 Узнали что такое сущности и зачем они вообще нужны.
🔜 Прошлись по основным свойствам и настройкам.
🔜 Изучили на примере основные аннотации, пощупаем их в работе.
🔜 Написали мини-приложение в котором все это протестировали.
🔜 Проверили работоспособность через Postman

Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!

Всем хорошего настроения и терпения при просмотре! 🍸
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
📌 Факт дня:

А вы знали, что первый "модем" работал со скоростью 110 бит/с?

Bell 101, выпущенный в 1958 году, передавал данные медленнее, чем человек читает текст, но стал началом эпохи онлайн-соединений.


Proof

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤯1
📌 Цитата дня: Питер Норвиг

"Больше данных побеждает лучший алгоритм."


Питер Норвиг, директор по исследованиям Google, сказал это в 2008 году на конференции по машинному обучению, подчеркивая важность объема данных.


Почитать короткую биографию
И немного хабра

#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Аннотация @Embeddable

Аннотация @Embeddable используется в Java Persistence API (JPA) для обозначения класса, который может быть встроен (embedded) в другую сущность. Класс, помеченный этой аннотацией, не является самостоятельной сущностью, но его поля могут быть включены в таблицу сущности, которая его использует. Аннотация находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE).

Аннотация
@Embeddable не принимает параметров. Она просто указывает, что класс может быть встроен в другую сущность.

Пример использования:
@Embeddable
public class Address {
private String street;
private String city;
private String zipCode;
}


Класс, помеченный @Embeddable, по умолчанию не имеет отдельной таблицы в базе данных. Его поля включаются в таблицу сущности, которая его использует.
Если встроенный класс содержит поля, которые сами являются сущностями или коллекциями, их маппинг должен быть явно настроен с использованием других аннотаций JPA (например, @OneToMany, @ManyToOne).

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

Применение: Аннотация @Embeddable применяется на этапе маппинга сущности JPA. Она определяет, что класс может быть встроен в другую сущность.
Инициализация: При загрузке сущности из базы данных JPA создает экземпляр встроенного класса и заполняет его данными.
Уничтожение: При сохранении сущности в базу данных JPA сохраняет данные встроенного класса в таблицу сущности.


Кастомизация маппинга:
Если требуется переопределить маппинг полей встроенного класса, можно использовать аннотации
@AttributeOverride и @AttributeOverrides в сущности, которая использует встроенный класс.

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

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


Переопределение маппинга:
Позволяет гибко настраивать маппинг полей встроенного класса для каждой сущности, используя @AttributeOverride и @AttributeOverrides.

Использование встроенных классов с коллекциями:

Если встроенный класс содержит коллекции, их маппинг должен быть явно настроен с использованием аннотаций JPA (например, @ElementCollection).

Пример использования
@Embeddable
public class Address {
private String street;
private String city;
private String zipCode;
}

@Entity
public class User {
@Id
private Long id;

@Embedded
private Address homeAddress;

@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "work_street")),
@AttributeOverride(name = "city", column = @Column(name = "work_city"))
})
private Address workAddress;
}


В этом примере:

Класс Address помечен как @Embeddable и может быть встроен в сущность User.
Поля homeAddress и workAddress включаются в таблицу User.
Для workAddress используется переопределение маппинга с помощью
@AttributeOverrides.

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

public class Task100325 {
public static void print(int a) {
System.out.println("int: " + a);
}

public static void print(double a) {
System.out.println("double: " + a);
}
public static void print(float a) {
System.out.println("float: " + a);
}

public static void main(String[] args) {
print(10);
print(10L);
}
}


#Tasks
👍3
Из наставления "Юный Девопс" 😂

https://t.me/Java_for_beginner_dev

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

Что произойдёт, если не указать модификатор доступа для метода?
Anonymous Quiz
5%
Метод станет private
21%
Метод станет public
61%
Метод станет default
12%
Ошибка компиляции
👍1
Аннотация @Embedded

Аннотация @Embedded используется в Java Persistence API (JPA) для указания того, что поле сущности является встроенным объектом (embedded object). Встроенный объект — это класс, помеченный аннотацией @Embeddable, который не является самостоятельной сущностью, но его поля включаются в таблицу сущности, которая его использует. Аннотация @Embedded находится в пакете javax.persistence (или jakarta.persistence в Jakarta EE).

Аннотация @Embedded не принимает параметров. Она просто указывает, что поле сущности является встроенным объектом.

Пример использования:
@Entity
public class User {
@Id
private Long id;

@Embedded
private Address address;
}


Если аннотация @Embedded не указана, JPA автоматически распознает встроенные объекты, если их класс помечен аннотацией @Embeddable.
Поля встроенного объекта включаются в таблицу сущности, которая его использует.

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

Применение: Аннотация @Embedded применяется на этапе маппинга сущности JPA. Она определяет, что поле является встроенным объектом.
Инициализация: При загрузке сущности из базы данных JPA создает экземпляр встроенного объекта и заполняет его данными.
Уничтожение: При сохранении сущности в базу данных JPA сохраняет данные встроенного объекта в таблицу сущности.


Кастомизация маппинга:
Если требуется переопределить маппинг полей встроенного объекта, можно использовать аннотации @AttributeOverride и @AttributeOverrides в сущности, которая использует встроенный объект.

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

Использование встроенных объектов:

Подходит для случаев, когда требуется повторно использовать группу полей в нескольких сущностях.
Упрощает код, так как не требуется дублировать поля в разных сущностях.


Переопределение маппинга:
Позволяет гибко настраивать маппинг полей встроенного объекта для каждой сущности, используя @AttributeOverride и @AttributeOverrides.

Использование встроенных объектов с коллекциями:
Если встроенный объект содержит коллекции, их маппинг должен быть явно настроен с использованием аннотаций JPA (например, @ElementCollection).

#Java #Training #Hard #Spring #SpringDataJPA #Embedded
👍1
📌 Факт дня:

А вы знали, что первый «графический процессор» появился в 1981 году?

IBM CGA (адаптер цветной графики) был первым шагом к обработке графиков на ПК, поддерживая до 16 цветов при разрешении 640x200.


И обязательно история

#facts
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
📌 Цитата дня: Хеди Ламар

"Частотная модуляция — ключ к безопасности связи."


Ламар, актриса и изобретательница, запатентовала технологию частотной модуляции в 1942 году, которая легла в основу Wi-Fi.

Почитать короткую биографию
И более подробно о том на что способна женщина, когда ей становится скучно

#Citation #Biography
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Аннотация @Inheritance

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

Аннотация @Inheritance принимает один параметр — strategy, который определяет стратегию наследования.

Параметр strategy может принимать одно из следующих значений:
InheritanceType.SINGLE_TABLE:
Все сущности в иерархии наследования отображаются на одну таблицу.
Для различения типов сущностей используется дискриминаторный столбец (discriminator column).

Пример:
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public class Vehicle { ... }


InheritanceType.JOINED:
Каждая сущность в иерархии наследования отображается на отдельную таблицу.
Общие поля хранятся в таблице родительской сущности, а уникальные поля — в таблицах дочерних сущностей.


Пример:
@Inheritance(strategy = InheritanceType.JOINED)
public class Vehicle { ... }


InheritanceType.TABLE_PER_CLASS:
Каждая сущность в иерархии наследования отображается на отдельную таблицу, и все поля (включая унаследованные) хранятся в таблице дочерней сущности.

Пример:
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Vehicle { ... }


Если аннотация
@Inheritance не указана, JPA по умолчанию использует стратегию InheritanceType.SINGLE_TABLE.

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

Применение: Аннотация
@Inheritance применяется на этапе маппинга сущности JPA. Она определяет, как сущности в иерархии наследования будут отображаться на таблицы базы данных.
Инициализация: При загрузке сущности из базы данных JPA использует указанную стратегию наследования для создания объектов.
Уничтожение: При сохранении сущности в базу данных JPA использует указанную стратегию наследования для записи данных.


Кастомизация стратегии наследования:
Если требуется изменить стратегию наследования для конкретной иерархии сущностей, можно использовать аннотацию @Inheritance с нужным значением параметра strategy.

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

Стратегия SINGLE_TABLE
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}

@Entity
@DiscriminatorValue("CAR")
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
@DiscriminatorValue("TRUCK")
public class Truck extends Vehicle {
private double payloadCapacity;
}


Стратегия JOINED
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}

@Entity
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
public class Truck extends Vehicle {
private double payloadCapacity;
}
Стратегия TABLE_PER_CLASS
java
Copy
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Vehicle {
@Id
private Long id;
private String manufacturer;
}

@Entity
public class Car extends Vehicle {
private int numberOfSeats;
}

@Entity
public class Truck extends Vehicle {
private double payloadCapacity;
}


#Java #Training #Hard #Spring #SpringDataJPA #Inheritance
👍2
Что выведет код?

public class Task110325 {
public static void main(String[] args) {
String str = "Hello, Java!";
String result = str.substring(str.indexOf("J"), str.length() - 2).toUpperCase();
System.out.println(result);
}
}


#Tasks
👍2