Vrácení pouze některých sloupců při vytvoření dotazu pomocí entity manažera

Pokud vytváříte dotaz pomocí entity manažera (viz příspěvek Spring Data a vytvárení dotazů pomocí entiy managera) můžete omezit sloupce, které daným dotazem budete vracet. V tomto případě používám tabulku t_order se sloupci id, identifier a sum, která je v představována entitou Order.

Číst dálVrácení pouze některých sloupců při vytvoření dotazu pomocí entity manažera

Spring Data a získání metod pro základní operace nad tabulkou

Spring Data poskytuje rozhraní CrudRepository<T, ID>, takže pokud chceme získávat data z databázové tabulky, stačí nám vytvořit vlastní rozhraní, který bude rozšiřovat CrudRepository a určit typ entity, kterou tabulka obsahuje. Jednoduchý příklad to objasní. Pokud budeme mít entitu Order

import java.math.BigDecimal
import java.util.*
import javax.persistence.*

@Entity
@Table(name = "t_order")
@SequenceGenerator(name = "t_order_seq_gen", sequenceName = "t_order_seq", allocationSize = 1)
class Order(

        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "t_order_seq_gen")
        var id: Long = 0L,

        var identifier: UUID = UUID.randomUUID(),

        var sum: BigDecimal = BigDecimal.ZERO
)

vytvoří se nám (volba spring.jpa.generate-ddl: true v application.properties) tabulka t_order. Pro operace s daty této tabulky vytvoříme rozhraní OrderRepository, které bude rozšiřovat CrudRepository.

import cz.vitfo.springdata.entity.Order
import org.springframework.data.repository.CrudRepository

interface OrderRepository : CrudRepository<Order, Long>

Toto stačí, abychom měli k dispozici sadu základních metod (count, delete, deleteAll, deleteById, existsById, findAll, findAllById, findById, save, saveAll) a další metody mohli jednoduše vytvářet použitím jmenné konvence – findByUuid, findByUuidAndSum, …

Spring Data a vytváření dotazů pomocí entity manažera

To jak Spring Data zjednodušuje práci s databází jsem ukázal v příspěvku Spring Data a získání metod pro základní operace nad tabulkou. V tomto příspěvku si ale ukážeme jak vytvářet sql příkazy pomocí entity manažera (EntityManager).

Vytvoříme si třídu s názvem OrderRepository a označíme ji jako repository anotací @Repository (org.springframework.stereotype.Repository).

Číst dálSpring Data a vytváření dotazů pomocí entity manažera

Spuštění kódu při startu Springu

Pokud potřebujete spusti určitý kód po naběhnutí Springu, můžete použít CommandLineRunner. Je to rozhraní, které indikuje beanu, která má být spuštěna jakmile je ve Spring aplikaci.

Interface used to indicate that a bean should run when it is contained within a SpringApplication. Multiple CommandLineRunner beans can be defined within the same application context and can be ordered using the Ordered interface or Order @Order annotation.

Zde je jednoduchý příklad, kdy si vytvoříme konfigurační třídu s názvem SpringDataConfig.

Číst dálSpuštění kódu při startu Springu

Co znamená WIP v názvu větve

Pokud v rámci GitLabu nebo GitHubu nazvete větev s prefixem WIP a mezerou, půjde na tuto větev udělat merge request, ale nebude ji možné mergnout. WIP v tomto případě znamená Work In Progress. Tato vlastnost má výhodu v tom, že můžete ukázat aktuální stav ve své větvi tak, aby ostatní viděli vaše změny (diff), ale nechcete, aby tyto změny byly sloučeny (merge). Pokud byste vytvořili merge request a pouze tam přidali komentář, je možné, že by si ho někdo z kolegů nevšiml, a vaši práci mergnul.

Zdroj: stackoverflow.com/…/github-what-is-a-wip-branch