Anotácie jarných údajov

Tento článok je súčasťou série: • Jarné základné anotácie

• Jarné webové anotácie

• Jarné anotácie

• Anotácie jarného plánovania

• Jarné anotácie údajov (aktuálny článok) • Jarné fazuľové anotácie

1. Úvod

Spring Data poskytuje abstrakciu nad technológiami ukladania dát. Preto môže byť náš kód obchodnej logiky oveľa nezávislejší od základnej implementácie vytrvalosti. Jar tiež zjednodušuje spracovanie podrobností úložiska údajov závislých od implementácie.

V tomto tutoriáli uvidíme najbežnejšie anotácie projektov Spring Data, Spring Data JPA a Spring Data MongoDB.

2. Bežné anotácie údajov z jari

2.1. @ Transakčné

Keď chceme nakonfigurovať transakčné správanie metódy, môžeme to urobiť s:

@Transactional void pay () {}

Ak použijeme túto anotáciu na úrovni triedy, potom bude fungovať na všetkých metódach vo vnútri triedy. Jeho účinky však môžeme potlačiť uplatnením na konkrétnu metódu.

Má veľa možností konfigurácie, ktoré nájdete v tomto článku.

2.2. @NoRepositoryBean

Niekedy chceme vytvoriť rozhrania úložiska s jediným cieľom poskytnúť spoločné metódy pre podradené úložiská.

Samozrejme, nechceme, aby Spring vytvoril zrnko týchto úložísk, pretože ich nikam nevstrekneme. @NoRepositoryBean robí presne toto: keď označíme podradené rozhranie org.springframework.data.repository.Repository, Jar z toho nevytvorí fazuľu.

Napríklad, ak chceme Voliteľné findById (ID id) vo všetkých našich úložiskách môžeme vytvoriť základné úložisko:

@NoRepositoryBean rozhranie MyUtilityRepository rozširuje CrudRepository {voliteľné findById (ID id); }

Táto anotácia nemá vplyv na podradené rozhrania; teda Spring vytvorí fazuľu pre nasledujúce rozhranie úložiska:

@Repository rozhranie PersonRepository rozširuje MyUtilityRepository {}

Upozorňujeme, že vyššie uvedený príklad nie je potrebný, pretože verzia Spring Data 2, ktorá obsahuje túto metódu nahradzujúcu staršiu T findOne (ID id).

2.3. @Param

Môžeme odovzdať pomenované parametre do našich dotazov pomocou @Param:

@Query ("FROM Person p WHERE p.name =: name") Person findByName (@Param ("name") String name);

Upozorňujeme, že na parameter odkazujeme s :názov syntax.

Ďalšie príklady nájdete v tomto článku.

2.4. @Id

@Id označí pole v triede modelu ako primárny kľúč:

osoba triedy {@Id Long id; // ...}

Pretože je nezávislý na implementácii, umožňuje ľahké použitie modelovej triedy s viacerými motormi na ukladanie údajov.

2.5. @ Prechodné

Túto anotáciu môžeme použiť na označenie poľa v triede modelu ako prechodné. Preto modul pre ukladanie údajov nebude čítať ani zapisovať hodnotu tohto poľa:

trieda Osoba {// ... @Transient int age; // ...}

Páči sa mi to @Id, @ Prechodné je tiež nezávislý na implementácii, čo umožňuje jeho pohodlné použitie s viacerými implementáciami úložiska údajov.

2.6. @Vytvoril, @LastModifiedBy, @CreatedDate, @LastModifiedDate

Pomocou týchto anotácií môžeme auditovať naše modelové triedy: Jar automaticky vyplní anotované polia principálom, ktorý vytvoril objekt, naposledy ho upravil, a dátumom vytvorenia a poslednej úpravy:

public class Person {// ... @CreatedBy User creator; @LastModifiedBy Užívateľský modifikátor; @CreatedDate Dátum createdAt; @LastModifiedDate Dátum modifiedAt; // ...}

Všimnite si, že ak chceme, aby Spring naplnil principálov, musíme tiež použiť Spring Security.

Podrobnejší popis nájdete v tomto článku.

3. Anotácie JPA jarných údajov

3.1. @Dopyt

S @Dopyt, môžeme poskytnúť implementáciu JPQL pre metódu úložiska:

@Query („VYBERTE POČET (*) OD OSOBY p“) dlho getPersonCount ();

Môžeme tiež použiť pomenované parametre:

@Query ("FROM Person p WHERE p.name =: name") Person findByName (@Param ("name") String name);

Okrem toho môžeme použiť natívne dotazy SQL, ak nastavíme nativeQuery argument k pravda:

@Query (hodnota = "VYBERTE AVG (strana) od osoby p", nativeQuery = true) int getAverageAge ();

Ďalšie informácie nájdete v tomto článku.

3.2. @ Postup

S Spring Data JPA môžeme ľahko volať uložené procedúry z úložísk.

Najprv musíme deklarovať úložisko v triede entít pomocou štandardných anotácií JPA:

@NamedStoredProcedureQueries ({@NamedStoredProcedureQuery (name = "count_by_name", procedureName = "person.count_by_name", parameters = {@StoredProcedureParameter (mode = ParameterMode.IN, name = "name", type = String.class), @StoredProcedureParure) = ParameterMode.OUT, name = "count", type = Long.class)})}) trieda Osoba {}

Potom to môžeme v úložisku odkázať na meno, ktoré sme deklarovali v názov argument:

@Procedure (name = "count_by_name") dlho getCountByName (@Param ("name") názov reťazca);

3.3. @Lock

Režim uzamknutia môžeme nakonfigurovať, keď vykonáme metódu dotazu na úložisko:

@Lock (LockModeType.NONE) @Query ("VYBERTE POČET (*) OD OSOBY p") dlho getPersonCount ();

Dostupné režimy uzamknutia:

  • ČÍTAŤ
  • NAPÍŠTE
  • OPTIMISTICKÝ
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • PESSIMISTIC_FORCE_INCREMENT
  • ŽIADNE

3.4. @ Úpravy

Dáta môžeme upraviť pomocou metódy úložiska, ak ich anotujeme @ Úpravy:

@Modifying @Query ("UPDATE Person p SET p.name =: name WHERE p.id =: id") void changeName (@Param ("id") long id, @Param ("name") String name);

Ďalšie informácie nájdete v tomto článku.

3.5. @EnableJpaRepositories

Ak chcete používať archívy JPA, musíme to označiť pre Spring. Môžeme to urobiť pomocou @EnableJpaRepositories.

Upozorňujeme, že musíme použiť túto anotáciu s @ Konfigurácia:

@Configuration @EnableJpaRepositories trieda PersistenceJPAConfig {}

Jar bude hľadať úložiská v čiastkových balíkoch tohto balíka @ Konfigurácia trieda.

Toto správanie môžeme zmeniť pomocou basePackages argument:

@Configuration @EnableJpaRepositories (basePackages = "com.baeldung.persistence.dao") trieda PersistenceJPAConfig {}

Pamätajte tiež, že Spring Boot to robí automaticky, ak nájde Spring Data JPA na ceste triedy.

4. Spring Data Mongo Annotations

Spring Data výrazne uľahčuje prácu s MongoDB. V nasledujúcich častiach preskúmame najzákladnejšie vlastnosti Spring Data MongoDB.

Viac informácií nájdete v našom článku o Spring Data MongoDB.

4.1. @Dokument

Táto anotácia označuje triedu ako doménový objekt, ktorý chceme uchovať v databáze:

Používateľ triedy @Document {}

Umožňuje nám tiež zvoliť si názov zbierky, ktorú chceme použiť:

@Document (collection = "user") trieda User {}

Upozorňujeme, že táto anotácia je ekvivalentom jazyka Mongo @Entity v JPA.

4.2. @Lúka

S @Lúka, môžeme nakonfigurovať názov poľa, ktoré chceme použiť, keď MongoDB zachová dokument:

@Document class User {// ... @Field ("email") Reťazec emailAddress; // ...}

Upozorňujeme, že táto anotácia je ekvivalentom jazyka Mongo @ Stĺpec v JPA.

4.3. @Dopyt

S @Dopyt, môžeme poskytnúť vyhľadávací dotaz na metódu úložiska MongoDB:

@Query ("{'name':? 0}") List findUsersByName (názov reťazca);

4.4. @EnableMongoRepositories

Aby sme mohli používať úložiská MongoDB, musíme to označiť pre Spring. Môžeme to urobiť pomocou @EnableMongoRepositories.

Upozorňujeme, že musíme použiť túto anotáciu s @ Konfigurácia:

@Configuration @EnableMongoRepositories trieda MongoConfig {}

Jar bude hľadať úložiská v čiastkových balíkoch tohto balíka @ Konfigurácia trieda. Toto správanie môžeme zmeniť pomocou basePackages argument:

@Configuration @EnableMongoRepositories (basePackages = "com.baeldung.repository") trieda MongoConfig {}

Pamätajte tiež, že Spring Boot to robí automaticky, ak nájde Spring Data MongoDB na ceste triedy.

5. Záver

V tomto článku sme videli, ktoré sú najdôležitejšie anotácie, ktoré potrebujeme pre prácu s dátami všeobecne, pomocou Spring. Okrem toho sme sa pozreli na najbežnejšie anotácie JPA a MongoDB.

Ako obvykle sú príklady k dispozícii na GitHube tu pre bežné a JPA anotácie a tu pre MongoDB anotácie.

Ďalšie » Anotácie jarných bôbov « Predchádzajúce jarné poznámky k plánovaniu

$config[zx-auto] not found$config[zx-overlay] not found