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
Аннотация @Access

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

Аннотация @Access принимает один параметр — value, который определяет тип доступа. Параметр value может принимать одно из двух значений:

AccessType.FIELD:
JPA будет напрямую обращаться к полям сущности, используя reflection.
Аннотации маппинга (например, @Id, @Column) должны быть применены к полям.

AccessType.PROPERTY:
JPA будет использовать методы-геттеры и сеттеры для доступа к данным.
Аннотации маппинга должны быть применены к методам-геттерам.


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

private String name;
}


Если аннотация
@Access не указана, JPA определяет тип доступа на основе расположения аннотации @Id:
Если @Id находится на поле, используется AccessType.FIELD.
Если @Id находится на методе-геттере, используется
AccessType.PROPERTY.

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

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


Кастомизация доступа:

Если требуется смешанный доступ (например, доступ к полям для одних атрибутов и доступ через методы для других), можно использовать @Access на уровне класса и на уровне отдельных полей/методов.

Пример смешанного доступа:
@Entity
@Access(AccessType.FIELD)
public class User {
@Id
private Long id;

private String name;

@Access(AccessType.PROPERTY)
public String getFullName() {
return this.name.toUpperCase();
}

public void setFullName(String fullName) {
this.name = fullName.toLowerCase();
}
}


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

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


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


Смешанный доступ:

Позволяет гибко настраивать доступ к данным, используя AccessType.FIELD для одних атрибутов и AccessType.PROPERTY для других.

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

import java.math.BigDecimal;

public class Task070325 {
public static void main(String[] args) {
int a = 5;
double b = 10.5;
float c = 3.5f;
BigDecimal d = new BigDecimal("3.5");
int e = (int) (a + b + c + d);
System.out.println(e);
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
18%
22
21%
23
15%
23.5
46%
Ошибка компиляции
Оптимизация процессов в действии 🤪

https://t.me/Java_for_beginner_dev

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

Какой цикл используется для перебора элементов массива неизвестной длины?
Anonymous Quiz
0%
switch
43%
while
15%
do-while
43%
for
Аннотации @AttributeOverride и @AttributeOverrides

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

@AttributeOverride: Используется для переопределения маппинга одного атрибута.
@AttributeOverrides: Используется для переопределения маппинга нескольких атрибутов.

@AttributeOverride
Аннотация @AttributeOverride принимает два параметра:
name: Имя атрибута встроенного объекта, маппинг которого нужно переопределить.
column: Аннотация
@Column, которая определяет новый маппинг для атрибута.

Пример использования:
@Embedded
@AttributeOverride(name = "street", column = @Column(name = "home_street"))
private Address address;


@AttributeOverrides
Аннотация @AttributeOverrides принимает массив из @AttributeOverride и используется для переопределения маппинга нескольких атрибутов.

Пример использования:
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "home_street")),
@AttributeOverride(name = "city", column = @Column(name = "home_city"))
})
private Address address;


Если аннотации @AttributeOverride или @AttributeOverrides не указаны, JPA использует маппинг, определенный во встроенном классе.

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

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


Кастомизация маппинга:

Если требуется более сложная кастомизация маппинга, можно использовать аннотацию @Embeddable для определения встроенных объектов и @AttributeOverride для их переопределения.

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

@Embeddable
public class Address {
private String street;
private String city;
}

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

@Embedded
@AttributeOverrides({
@AttributeOverride(name = "street", column = @Column(name = "home_street")),
@AttributeOverride(name = "city", column = @Column(name = "home_city"))
})
private Address homeAddress;

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


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

Уважаемые девушки, которые есть в нашем канале -
с 8 Марта Вас!
💐

Желаю Вам всегда оставаться обворожительными и желанными, чтобы все Ваши программы компилировались без ошибок, а баги фиксились сами 😍

А нам мужики, нужно сегодня порадовать свои вторые половинки, написать им самое лучшее приложение которое будет по шедулеру раз в 10 минут генерировать и отправлять им уникальные комплименты
🏝

Всем хорошего солнечного дня!
😊
Please open Telegram to view this post
VIEW IN TELEGRAM
Ребят!

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

Заранее всем спасибо! 🤝

https://t.me/boost/Java_for_beginner_dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Еще раз привет! 🖖

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

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

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

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

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

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

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

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

Всем хорошего настроения и терпения при просмотре! 🍸
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