cvičení 08
 
    Spring server a JPA
Spring server
Použijte https://start.spring.io (Spring initializer) a vytvořte nový maven projekt web server.
Pří vytváření zvolte:
- Maven
- verzi 3.4.4
- Group, artifact, name, package name - zvolte nějaké smysluplné hodnoty (ne demo a example)
- Packaging JAR
- Java version 21
- Hodnoty důležité pro úspěšné provedení testů
	- Group: cz.vsb.fei
- Artifact: java2-lab08
- Name: java2-lab08
- Package name: cz.vsb.fei.java2.lab08 (ne podtržítko ale tečku, jinak neprojdou testy v Kelvinu)
 
Do závislostí přidejte (pomocí tlačítka "ADD DEPENDENCIES...")
- Lombok
- Spring Web
- Thymeleaf
- Spring Data JPA
- H2 Database
Projekt vygenerujte (stáhněte) a do pom.xml přidejte do závislostí:
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-jpamodelgen</artifactId>
            <scope>provided</scope>
            <version>6.6.11.Final</version>
        </dependency>
    
Do pom.xml přidejte do /project/build/plugins/plugin(maven-compiler-plugin)/configuration/annotationProcessorPaths/:
                        <path>
                            <groupId>org.hibernate</groupId>
                            <artifactId>hibernate-jpamodelgen</artifactId>
                            <version>6.6.11.Final</version>
                        </path>
    
Do pom.xml přidejte do /project/build/plugins/plugin(maven-compiler-plugin)/:
                <executions>
                    <execution>
                        <id>process</id>
                        <phase>generate-sources</phase>
                    </execution>
                </executions>
    
Do pom.xml přidejte do /project/build/plugins/:
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>3.6.0</version>
                <executions>
                    <execution>
                        <id>add-source</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                        </goals>
                        <configuration>
                            <sources>
                                <source>target/generated-sources/annotations</source>
                            </sources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    
Implementujte
- Vytvořte entitu Player se jménem, příjmením a datem narození (firstName, lastName, dayOfBirth)
- Vytvořte JPA repository pro Player
- Vytvořte REST controller s metodami pro CRUD operace (dodržte pravidla REST api) a pro vygenerování většího počtu objektů hráč.
- Vytvořte vlastní metodu s využitím anotace @Query a pro ni nějaké URL na vyvolání (napři pro nejmladší nebo nejstarší hráče)
- Vytvořte vlastní třídu CustomPlayerRepository s vlastní metodou a k ni nějaké URL na vyvolání.
Projekt spusťte jako běžnou java aplikaci a otestujte zda se na adrese http://localhost:8080 oběví vámi zvolený text.
Pokud chcete pro testování Swagger UI stačí přidat závislost:
Projekt spusťte jako běžnou java aplikaci a otestujte zda se na adrese http://localhost:8080 oběví vámi zvolený text.
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.8.6</version>
        </dependency>
    
Řešení
Řešení najdete v https://gitlab.vsb.cz/jez04-vyuka/java2/labs/java2lab08v1/-/tree/solution?ref_type=heads ve větvi solution.
https://gitlab.vsb.cz/jez04-vyuka/java2/labs/java2lab08v2/-/tree/solution?ref_type=heads
https://gitlab.vsb.cz/jez04-vyuka/java2/labs/java2lab08v3/-/tree/solution?ref_type=heads
Způsob odevzdání
Řešení domácího úkolu odevzdejte do systému Kelvin jako úlohu "Java 1 - domácí úkol z 3. cvičení". Do systému nahrejde celý obsah složky src a soubor pom.xml (prípadně run skript). Postupujte dle níže přiloženého vide.
Následně bude projekt zkompilován a provedou se Unit Testy. Vzhledem k povaze projektu a prozatímnímu testovacímu využití systému Kelvin v předmětu Java 2 v případě selhání nezoufejte.
Jedná se o pomocný test, vše bude ještě hodnoceno ručně. Důležité je nahrát soubory aby bylo možno vše vyhodnotit a provést analýzu na plagiáty. Věřím, že je to je formalita a všichni z Vás tvoří vlastní kód.
 David Ježek
        David Ježek
        



