Proljetne bilješke podataka

Ovaj je članak dio niza: • Proljetne temeljne bilješke

• Proljetne web bilješke

• Bilješke proljetnog pokretanja

• Bilješke o proljetnom rasporedu

• Bilješke proljetnih podataka (trenutni članak) • Bilješke proljetnih zrna

1. Uvod

Spring Data pruža apstrakciju nad tehnologijama za pohranu podataka. Stoga naš kôd poslovne logike može biti puno neovisniji od temeljne implementacije ustrajnosti. Također, Spring pojednostavljuje rukovanje detaljima pohrane podataka koji ovise o implementaciji.

U ovom uputstvu vidjet ćemo najčešće napomene projekata Spring Data, Spring Data JPA i Spring Data MongoDB.

2. Zajedničke proljetne bilješke podataka

2.1. @Transational

Kad želimo konfigurirati transakcijsko ponašanje metode, možemo to učiniti sa:

@Transakcijska nevažeća plaća () {}

Ako ovu bilješku primijenimo na razini klase, tada radi na svim metodama unutar klase. Međutim, njegove učinke možemo nadvladati primjenom na određenu metodu.

Ima mnogo mogućnosti konfiguracije, koje možete pronaći u ovom članku.

2.2. @NoRepositoryBean

Ponekad želimo stvoriti sučelja spremišta s jedinim ciljem pružanja zajedničkih metoda za podređena spremišta.

Naravno, ne želimo da Spring stvori grah ovih spremišta, jer ih nećemo nigdje ubrizgati. @NoRepositoryBean čini upravo ovo: kada označimo podređeno sučelje org.springframework.data.repository.Repository, Proljeće neće stvoriti grah od toga.

Na primjer, ako želimo Izborni findById (ID ID) metodom u svim našim spremištima, možemo stvoriti osnovno spremište:

@NoRepositoryBean sučelje MyUtilityRepository proširuje CrudRepository {Izborno findById (ID ID); }

Ova napomena ne utječe na podređena sučelja; stoga će Spring stvoriti grah za sljedeće sučelje spremišta:

@Repository sučelje PersonRepository proširuje MyUtilityRepository {}

Primijetite da gornji primjer nije potreban od Spring Data verzije 2 koja uključuje ovu metodu koja zamjenjuje stariju T findOne (ID ID).

2.3. @Param

Pomoću možemo proslijediti imenovane parametre našim upitima @Param:

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

Imajte na umu da se parametar pozivamo s :Ime sintaksa.

Za daljnje primjere posjetite ovaj članak.

2.4. @Iskaznica

@Iskaznica označava polje u klasi modela kao primarni ključ:

razred Osoba {@Id Long id; // ...}

Budući da je neovisan o implementaciji, čini klasu modela jednostavnom za upotrebu s više motora za pohranu podataka.

2.5. @Prijelazno

Ovom bilješkom možemo označiti polje u klasi modela kao prolazno. Stoga mehanizam spremišta podataka neće pročitati ili zapisati vrijednost ovog polja:

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

Kao @Iskaznica, @Prijelazno je također neovisan o implementaciji, što ga čini prikladnim za upotrebu s više implementacija spremišta podataka.

2.6. @Napravio, @LastModifiedBy, @CreatedDate, @LastModifiedDate

Ovim bilješkama možemo revidirati naše klase modela: Proljeće automatski popunjava anotirana polja glavnicom koja je kreirala objekt, zadnji put ga izmijenila te datumom izrade i zadnjom izmjenom:

javna klasa Osoba {// ... @CreatedBy User creator; @LastModifiedBy Modifikator korisnika; @CreatedDate Datum kreiranjaAt; @LastModifiedDate Datum promjeneAt; // ...}

Imajte na umu da ako želimo da Spring napuni principale, trebamo koristiti i Spring Security.

Za detaljniji opis posjetite ovaj članak.

3. Proljetni podaci JPA Bilješke

3.1. @Query

S @Query, možemo pružiti JPQL implementaciju za metodu spremišta:

@Query ("SELECT COUNT (*) FROM Person p") long getPersonCount ();

Također, možemo koristiti imenovane parametre:

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

Osim toga, možemo koristiti izvorne SQL upite ako postavimo nativeQuery argument za pravi:

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

Za više informacija posjetite ovaj članak.

3.2. @Postupak

S Spring Data JPA lako možemo pozvati pohranjene procedure iz spremišta.

Prvo, moramo deklarirati spremište na klasi entiteta koristeći standardne JPA bilješke:

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

Nakon toga možemo se na njega pozvati u spremištu s imenom koje smo deklarirali u Ime argument:

@Procedure (name = "count_by_name") long getCountByName (@Param ("name") Ime niza);

3.3. @Lock

Način zaključavanja možemo konfigurirati kada izvršimo metodu upita za spremište:

@Lock (LockModeType.NONE) @Query ("SELECT COUNT (*) FROM Person p") long getPersonCount ();

Dostupni načini zaključavanja:

  • ČITATI
  • PISATI
  • OPTIMISTIČNA
  • OPTIMISTIC_FORCE_INCREMENT
  • PESSIMISTIC_READ
  • PESSIMISTIC_WRITE
  • PESSIMISTIC_FORCE_INCREMENT
  • NITKO

3.4. @Modificiranje

Podatke možemo modificirati metodom spremišta ako ih označimo s @Modificiranje:

@Modifying @Query ("AŽURIRANJE osobe p SET p.name =: name WHERE p.id =: id") void changeName (@Param ("id") long id, @Param ("name") Ime niza);

Za više informacija posjetite ovaj članak.

3.5. @EnableJpaRepositories

Da bismo koristili JPA spremišta, moramo ga naznačiti Springu. To možemo učiniti s @EnableJpaRepositories.

Imajte na umu da ovu bilješku moramo koristiti s @Konfiguracija:

@Configuration @EnableJpaRepositories klasa PersistenceJPAConfig {}

Spring će tražiti spremišta u potpaketima ovog @Konfiguracija razred.

To ponašanje možemo promijeniti s basePackages argument:

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

Također imajte na umu da Spring Boot to radi automatski ako pronađe Spring Data JPA na putu predavanja.

4. Proljetni podaci Mongo bilješke

Spring Data znatno olakšava rad s MongoDB-om. U sljedećim odjeljcima istražit ćemo najosnovnije značajke Spring Data MongoDB-a.

Za više informacija posjetite naš članak o Spring Data MongoDB.

4.1. @Dokument

Ova napomena označava klasu kao objekt domene koji želimo zadržati u bazi podataka:

Korisnik klase @Document {}

Omogućuje nam i odabir naziva kolekcije koju želimo koristiti:

@Document (collection = "user") klasa Korisnik {}

Imajte na umu da je ova napomena mongoški ekvivalent @ Entitet u JPA.

4.2. @Polje

S @Polje, možemo konfigurirati ime polja koje želimo koristiti kada MongoDB nastavi s dokumentom:

@Document class Korisnik {// ... @Field ("email") String emailAddress; // ...}

Imajte na umu da je ova napomena mongoški ekvivalent @Stupac u JPA.

4.3. @Query

S @Query, možemo pružiti upit pretraživača za metodu MongoDB spremišta:

@Query ("{'name':? 0}") Popis findUsersByName (naziv niza);

4.4. @EnableMongoRepositories

Da bismo koristili MongoDB spremišta, moramo ga naznačiti Springu. To možemo učiniti s @EnableMongoRepositories.

Imajte na umu da ovu bilješku moramo koristiti s @Konfiguracija:

@Configuration @EnableMongoRepositories klasa MongoConfig {}

Spring će tražiti spremišta u potpaketima ovog @Konfiguracija razred. Ovo ponašanje možemo promijeniti s basePackages argument:

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

Također imajte na umu da Spring Boot to radi automatski ako pronađe Spring Data MongoDB na putu predavanja.

5. Zaključak

U ovom smo članku vidjeli koje su najvažnije napomene potrebne za općenito bavljenje podacima koristeći Spring. Osim toga, pregledali smo najčešće JPA i MongoDB napomene.

Kao i obično, ovdje su dostupni primjeri na GitHub-u za uobičajene i JPA bilješke, a ovdje za MongoDB bilješke.

Sljedeći » Bilješke proljetnog graha « Prethodne napomene o zakazivanju proljeća