Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät · Oppitunti

Projektiot ja DTO:t

Valitkaa vain tarvitsemanne tiedot.

Oppitunti 2/413 vaihetta

Projektiot ja DTO:t on ilmainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 4 oppituntia.

Miksi projektiot ovat hyödyllisiä

Kokonaisten entiteettien hakeminen silloin, kun tarvitsette vain muutaman sarakkeen, tuhlaa muistia ja kaistanleveyttä.

Projektiot mahdollistavat osan kentistä valitsemisen ja palauttavat kokonaisten entiteettien sijaan kevyitä olioita.

Rajapintaprojektiot

Määritelkää rajapinta, jossa on haluamienne kenttien getterit. Spring Data toteuttaa sen proxyna.

public interface UserSummary {
    String getName();
    String getEmail();
}

Projektion palauttaminen

Käyttäkää rajapintaa kyselymetodin paluutyyppinä.

public interface UserRepository
    extends JpaRepository<User, Long> {
    List<UserSummary> findByActiveTrue();
}

Suljetut ja avoimet projektiot

Suljettu projektio näyttää vain olemassa olevat ominaisuudet (tehokas – vain kyseiset sarakkeet valitaan). Avoin projektio laskee arvoja @Value-annotaation ja SpEL:n avulla (koko entiteetti ladataan).

Esimerkki avoimesta projektiosta

Yhdistäkää kenttiä SpEL-lausekkeen avulla.

public interface UserView {
    @Value("#{target.firstName + ' ' + target.lastName}")
    String getFullName();
}

Luokkapohjaiset projektiot (DTO:t)

DTO-luokka, jolla on vastaava konstruktori, on toinen projektiotyyli. Spring Data yhdistää kyselyn sarakkeet konstruktorin parametreihin nimen perusteella.

public class UserDto {
    private final String name;
    private final String email;

    public UserDto(String name, String email) {
        this.name = name;
        this.email = email;
    }
    // getters
}

DTO:n palauttaminen

Käyttäkää DTO-luokkaa paluutyyppinä samalla tavoin kuin rajapintaprojektioissa.

public interface UserRepository
    extends JpaRepository<User, Long> {
    List<UserDto> findByActiveTrue();
}

DTO:t JPQL-konstruktorilausekkeissa

Kun käytätte mukautettua JPQL:ää, muodostakaa DTO:t suoraan konstruktorilausekkeen avulla.

@Query("SELECT new com.app.UserDto(u.name, u.email) "
     + "FROM User u WHERE u.active = true")
List<UserDto> findActiveSummaries();

Dynaamiset projektiot

Tehkää paluutyypistä geneerinen, jotta yksi metodi palvelee useita projektioita.

<T> List<T> findByActiveTrue(Class<T> type);

// usage
repo.findByActiveTrue(UserSummary.class);
repo.findByActiveTrue(UserDto.class);

Projektiot natiivien kyselyiden kanssa

Rajapintaprojektiot toimivat myös natiivien SQL-kyselyiden kanssa, kun sarakkeiden nimet vastaavat gettereitä.

@Query(value = "SELECT name, email FROM users",
       nativeQuery = true)
List<UserSummary> findAllSummaries();

Lähestymistavan valinta

Suosikaa suljettuja rajapintaprojektioita vain lukuun tarkoitetuissa listoissa (tehokkain vaihtoehto). Käyttäkää DTO-luokkia, kun tarvitsette toiminnallisuutta tai haluatte käyttää niitä persistenssikerroksen ulkopuolella.

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte projektiot.

Kertaus

Opitte palauttamaan kevyitä tuloksia:

  • Rajapintaprojektiot – suljetut (tehokkaat) tai avoimet (SpEL)
  • Luokkapohjaiset DTO-projektiot konstruktorikuvauksen avulla
  • JPQL-konstruktorilausekkeet mukautettuja kyselyitä varten
  • Dynaamiset projektiot geneerisen tyyppiparametrin avulla
Aloita maksutta

Opi Java tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
24
Oppitunnit
93

Usein kysytyt kysymykset

Onko oppitunti ”Projektiot ja DTO:t” ilmainen?

Kyllä – oppitunnin ”Projektiot ja DTO:t” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssin, päivitä CoddyKit PROhon. Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Projektiot ja DTO:t”?

Valitkaa vain tarvitsemanne tiedot. Harjoittelet Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Projektiot ja DTO:t”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunnilla?

Kyllä. Jokainen Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Dynaamiset kyselyt Specificationeilla
  2. Projektiot ja DTO:t
  3. Auditointi @CreatedDate-annotaatiolla
  4. Sivutus ja lajittelu
← Takaisin: Spring Boot 4 -mikropalvelut ja REST-sovellusliittymät