JPA @Basic Анотация

1. Общ преглед

В този бърз урок ще разгледаме анотацията JPA @Basic . Също така ще обсъдим разликата между @Basic и @Column JPA анотации.

2. Основни типове

JPA поддържа различни типове данни на Java като постоянни полета на обекта, често известни като основни типове.

Основният тип се преобразува директно в колона в базата данни. Те включват Java примитиви и техните класове обвивки, String , java.math.BigInteger и java.math.BigDecimal , различни налични класове за дата и час, изброявания и всеки друг тип, който реализира java.io.Serializable .

Hibernate, както всеки друг доставчик на ORM, поддържа регистър на основните типове и го използва за разрешаване на конкретния org.hibernate.type.Type на колона .

3. Основна анотация

Можем да използваме анотацията @Basic, за да маркираме свойство от основен тип:

@Entity public class Course { @Basic @Id private int id; @Basic private String name; ... }

С други думи, на @Basic анотацията на поле или А означава собственост, че това е основен тип и Hibernate трябва да използвате стандартната картографиране за неговото постоянство.

Имайте предвид, че това е незадължителна анотация. И така, можем да пренапишем нашия обект на курса като:

@Entity public class Course { @Id private int id; private String name; ... }

Когато не посочим анотацията @Basic за атрибут на основен тип, тя по подразбиране се приема и се прилагат стойностите по подразбиране на тази анотация.

4. Защо да използвам @Basic Annotation?

В @Basic анотацията има две качества, избор и донесе . Нека разгледаме по-отблизо всеки един.

В допълнителен атрибут е булев параметър, който определя дали маркираната област или собствеността позволява нула . По подразбиране е вярно . Така че, ако полето не е примитивен тип, основната колона се приема за нулирана по подразбиране.

В четенето атрибут приема за член на изброяването Изважда , който указва дали маркираната област или имуществото трябва да се лениво зарежда или с нетърпение пресилено. По подразбиране е FetchType.EAGER , но можем да разрешим мързеливо зареждане, като го зададем на FetchType.LAZY.

Мързеливото зареждане ще има смисъл само когато имаме голям сериализуем обект, картографиран като основен тип, тъй като в този случай разходите за достъп до полето могат да бъдат значителни.

Имаме подробен урок, обхващащ Eager / Lazy loading в Hibernate, който се задълбочава в темата.

Сега, нека да кажат не искат да се даде възможност нули за нашия курс е име и искате да лениво натоварване тази собственост, както добре. След това ще определим нашия обект на курса като:

@Entity public class Course { @Id private int id; @Basic(optional = false, fetch = FetchType.LAZY) private String name; ... }

Трябва изрично да използваме анотацията @Basic, когато желаем да се отклоним от стойностите по подразбиране на незадължителните и извличащите параметри. Можем да посочим един или и двата атрибута, в зависимост от нашите нужди.

5. JPA @Basic срещу @Column

Нека да разгледаме разликите между анотациите @Basic и @Column :

  • Атрибутите на анотацията @Basic се прилагат към JPA обекти, докато атрибутите на @Column се прилагат към колоните на базата данни
  • Незадължителният атрибут на @Basic пояснение дефинира дали полето на обекта може да бъде нула или не; от друга страна, @column поясненията може да се анулира атрибутите уточнява дали съответната колона база данни може да бъде нула
  • Можем да използваме @Basic, за да посочим, че полето трябва да бъде лено заредено
  • В @column анотация ни позволява да укажете името на картографирани колона на базата данни

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

В тази статия научихме кога и как да използваме анотацията @Basic на JPA . Също така говорихме за това как се различава от анотацията @Column .

Както обикновено, примери за кодове са налични в Github.