Рубрики
Без рубрики

Разница между @Size, @Length и)

@Size, @Length и @Column(длина) используются в Java POJO по-разному. Узнайте, что это такое.

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы рассмотрим JSR-330 ‘s @Size , Hibernate ‘ s @Length и JPA /@Column ‘s length атрибут.

На первый взгляд, они могут показаться одинаковыми, но они выполняют разные функции . Давайте посмотрим, как это сделать.

2. Происхождение

Проще говоря, все эти аннотации предназначены для передачи размера поля.

@Size и @Length похожи. Мы можем использовать любой из них для проверки размера поля. Первый-это стандартная аннотация Java , а второй – специфичный для Hibernate .

@Column , однако, является аннотацией JPA , которую мы используем для управления операторами DDL.

Теперь давайте подробно рассмотрим каждый из них.

3. @Размер

Для проверки мы будем использовать @Size , аннотацию проверки компонента. Давайте используем свойство MiddleName с аннотацией @Size для проверки его значения между атрибутами min и max:

public class User {

    // ...

    @Size(min = 3, max = 15)
    private String middleName;

    // ...

}

Самое главное, что @Size делает компонент независимым от JPA и его поставщиков, таких как Hibernate . В результате это более портативно, чем @Length .

4. @Длина

И, как мы только что сказали, @Length -это специфичная для гибернации версия @Size. Давайте применим диапазон для фамилии с помощью @Length :

@Entity
public class User {

    // ...
      
    @Length(min = 3, max = 15)
    private String lastName;

    // ...

}

5.)

@Column , однако, совсем другое дело.

Мы будем использовать @Column для указания конкретных характеристик физического столбца базы данных. Давайте использовать атрибут length аннотации @Column для указания длины столбца со строковым значением:

@Entity
public class User {

    @Column(length = 3)
    private String firstName;

    // ...

}

Следовательно, результирующий столбец будет сгенерирован как VARCHAR(3) , и попытка вставить более длинную строку приведет к ошибке SQL.

Обратите внимание, что мы будем использовать @Column только для указания свойств столбца таблицы , поскольку он не обеспечивает проверки.

Конечно, мы можем использовать @Column вместе с @Size для указания свойства столбца базы данных с проверкой компонента.

@Entity
public class User {

    // ... 
    
    @Column(length = 5)
    @Size(min = 3, max = 5)
    private String city;

    // ...

}

6. Заключение

В этой статье мы узнали о различиях между аннотацией @Size , аннотацией @Length и атрибутом @Column ‘s length . Мы рассмотрели каждый из них отдельно в пределах областей их использования.

Как всегда, полный исходный код примеров доступен на GitHub .