Tavaszi adatjegyzetek

Ez a cikk egy sorozat része: • Tavaszi magjegyzetek

• Tavaszi internetes kommentárok

• Tavaszi indítójegyzetek

• Tavaszi ütemezési kommentárok

• Tavaszi adatjegyzetek (aktuális cikk) • Tavaszi babjegyzetek

1. Bemutatkozás

A Spring Data az adattárolási technológiák absztrakcióját nyújtja. Ezért üzleti logikai kódunk sokkal függetlenebb lehet a mögöttes kitartás megvalósításától. Ezenkívül Spring egyszerűsíti az adattárolás megvalósításfüggő részleteinek kezelését.

Ebben az oktatóanyagban megnézzük a Spring Data, a Spring Data JPA és a Spring Data MongoDB projektek leggyakoribb megjegyzéseit.

2. Közös tavaszi adatjegyzetek

2.1. @ Tranzakció

Amikor akarjuk konfigurálja a módszer tranzakciós viselkedését, meg tudjuk csinálni:

@Transactional void pay () {}

Ha ezt az annotációt osztály szinten alkalmazzuk, akkor az az osztályon belüli összes módszerrel működik. Ennek hatásait azonban felülírhatjuk, ha egy adott módszerre alkalmazzuk.

Számos konfigurációs lehetőséggel rendelkezik, amelyek ebben a cikkben találhatók.

2.2. @NoRepositoryBean

Néha tárházi interfészeket akarunk létrehozni azzal az egyetlen céllal, hogy közös módszereket biztosítsunk a gyermektárak számára.

Természetesen nem akarjuk, hogy a Spring létrehozzon egy babot ezekből az adattárakból, mivel nem adjuk be őket sehova. @NoRepositoryBean pontosan ezt teszi: amikor megjelöljük a gyermek interfészét org.springframework.data.repository.Repository, Spring nem hoz létre babot belőle.

Például, ha egy Opcionális findById (ID azonosító) módszerrel az összes tárunkban létrehozhatunk egy alaptárat:

@NoRepositoryBean felület A MyUtilityRepository kiterjeszti a CrudRepository {Opcionális findById (ID id); }

Ez a megjegyzés nem érinti a gyermek interfészeit; ezért a Spring létrehoz egy babot a következő adattár interfészhez:

@Repository interfész A PersonRepository kiterjeszti a MyUtilityRepository {}

Ne feledje, hogy a fenti példa nem szükséges, mivel a Spring Data 2. verziója tartalmazza ezt a módszert a régebbi helyett T findOne (azonosító azonosító).

2.3. @Param

A megnevezett paramétereket átadhatjuk lekérdezéseinknek a segítségével @Param:

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

Ne feledje, hogy a paraméterrel a :név szintaxis.

További példákért keresse fel ezt a cikket.

2.4. @Id

@Id egy modellosztály mezőjét jelöli meg elsődleges kulcsként:

osztály Személy {@Id Hosszú azonosító; // ...}

Mivel megvalósítástól független, a modellosztályt könnyen kezelhetővé teszi több adattároló motorral.

2.5. @ Átmeneti

Használhatjuk ezt az annotációt arra, hogy egy modellosztályban egy mezőt tranziensnek jelöljünk. Ezért az adattároló motor nem olvassa vagy írja be ennek a mezőnek az értékét:

osztály Személy {// ... @Transient int age; // ...}

Mint @Id, @ Átmeneti emellett megvalósítástól független, ami megkönnyíti a használatát több adattároló megvalósítással.

2.6. @Készítette, @LastModifiedBy, @Létrehozás dátuma, @LastModifiedDate

Ezekkel a kommentárokkal ellenőrizhetjük modellosztályainkat: Spring automatikusan feltölti a feljegyzett mezőket a fővel, aki az objektumot létrehozta, utoljára módosította, valamint a létrehozás és az utolsó módosítás dátumát:

public class Személy {// ... @CreatedBy Felhasználó alkotója; @LastModifiedBy Felhasználó módosító; @CreatedDate A létrehozás dátuma; @LastModifiedDate módosított dátum; // ...}

Ne feledje, hogy ha azt akarjuk, hogy a Spring népesítse be az igazgatókat, akkor a Spring Security-t is használnunk kell.

Alaposabb leírásért kérjük, látogassa meg ezt a cikket.

3. Tavaszi adatok JPA-kommentárok

3.1. @Lekérdezés

Val vel @Lekérdezés, JPQL megvalósítást tudunk biztosítani egy repository módszerhez:

@Query ("SELECT COUNT (*) FROM személy p") hosszú getPersonCount ();

Használhatunk megnevezett paramétereket is:

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

Emellett használhatunk natív SQL lekérdezéseket is, ha beállítjuk a nativeQuery érv arra igaz:

@Query (value = "SELECT AVG (p.age) FROM person p", nativeQuery = true) int getAverageAge ();

További információkért kérjük, olvassa el ezt a cikket.

3.2. @Procedure

A Spring Data JPA segítségével könnyedén felhívhatjuk a tárolt eljárásokat a tárakból.

Először is be kell jelentenünk a lerakatot az entitásosztályon a szokásos JPA-kommentárok használatával:

@NamesStoredProcedureQueries ({@NamedStoredProcedureQuery (név = "szám_neve", eljárásNév = "személy.szám_neve"), paraméterek = {@ TároltProcedureParameter (mód = ParameterMode.IN, név = "név", típus = String.osztály), @ = ParameterMode.OUT, name = "count", type = Long.class)})}) class Person {}

Ezek után hivatkozhatunk rá a tárban azzal a névvel, amelyet a név érv:

@Procedure (name = "count_by_name") long getCountByName (@Param ("name") karakterlánc neve);

3.3. @Zár

Konfigurálhatjuk a zárolási módot, amikor egy lerakat lekérdezési módot hajtunk végre:

@Lock (LockModeType.NONE) @Query ("SELECT COUNT (*) FROM Személy p") hosszú getPersonCount ();

A rendelkezésre álló zárolási módok:

  • OLVAS
  • ÍR
  • OPTIMISTA
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • PESSIMISTIC_FORCE_INCREMENT
  • EGYIK SEM

3.4. @ Módosító

Adatokat egy adattár módszerrel módosíthatunk, ha azzal annotáljuk @ Módosító:

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

További információkért kérjük, látogassa meg ezt a cikket.

3.5. @EnableJpaRepositories

A JPA tárházainak használatához jeleznünk kell Springnek. Ezt megtehetjük @EnableJpaRepositories.

Ne feledje, hogy ezt a jelölést együtt kell használnunk @ Konfiguráció:

@Configuration @EnableJpaRepositories osztály PersistenceJPAConfig {}

A tavasz ennek az alcsomagjaiban fogja keresni az adattárakat @ Konfiguráció osztály.

Ezt a viselkedést a basePackages érv:

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

Vegye figyelembe azt is, hogy a Spring Boot ezt automatikusan elvégzi, ha a Spring Data JPA-t megtalálja az osztályúton.

4. Tavaszi adatmongo kommentárok

A Spring Data sokkal könnyebbé teszi a MongoDB-vel való munkát. A következő szakaszokban a Spring Data MongoDB legalapvetőbb jellemzőit tárjuk fel.

További információkért kérjük, olvassa el a Spring Data MongoDB cikket.

4.1. @Dokumentum

Ez a megjegyzés egy osztályt olyan objektumként jelöl meg, amelyet fenn akarunk tartani az adatbázisban:

@Document osztály felhasználó {}

Ez lehetővé teszi számunkra, hogy kiválasszuk a használni kívánt gyűjtemény nevét is:

@Document (gyűjtemény = "felhasználó") osztály Felhasználó {}

Ne feledje, hogy ez az annotáció a mongo megfelelője @Entity a JPA-ban.

4.2. @Terület

Val vel @Terület, konfigurálhatjuk egy olyan mező nevét, amelyet használni akarunk, amikor a MongoDB továbbra is fennáll a dokumentummal:

@Document osztály Felhasználó {// ... @Field ("email") Karakterlánc emailAddress; // ...}

Ne feledje, hogy ez az annotáció a mongo megfelelője @Oszlop a JPA-ban.

4.3. @Lekérdezés

Val vel @Lekérdezés, kereső lekérdezést nyújthatunk egy MongoDB repository módszerről:

@Query ("{'name':? 0}") List findUsersByName (karakterlánc neve);

4.4. @EnableMongoRepositories

A MongoDB adattárak használatához jeleznünk kell Springnek. Ezt megtehetjük @EnableMongoRepositories.

Ne feledje, hogy ezt a jelölést együtt kell használnunk @ Konfiguráció:

@Configuration @EnableMongoRepositories osztály MongoConfig {}

A tavasz ennek az alcsomagjaiban fogja keresni az adattárakat @ Konfiguráció osztály. Ezt a viselkedést a basePackages érv:

@Configuration @EnableMongoRepositories (basePackages = "com.baeldung.repository") osztály MongoConfig {}

Vegye figyelembe azt is, hogy a Spring Boot ezt automatikusan elvégzi, ha a Spring Data MongoDB-t megtalálja az osztályúton.

5. Következtetés

Ebben a cikkben azt láttuk, hogy melyek a legfontosabb megjegyzések, amelyekkel általában az adatokkal kell foglalkoznunk, a Spring segítségével. Ezenkívül megvizsgáltuk a leggyakoribb JPA és MongoDB kommentárokat.

Szokás szerint itt a GitHub-on találhatók példák a közös és a JPA-jelölésekhez, itt pedig a MongoDB-jelölésekhez.

Következő » Tavaszi babjegyzetek « Korábbi tavaszi ütemezési kommentárok

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