Karta ćwiczenia laboratoryjnego

Java Spring Boot Spring Data JPA H2 Database Thymeleaf Maven

📋 Informacje podstawowe

Pole Wartość
Przedmiot Spring
Forma zajęć laboratorium
Ćwiczenie Lab. 4 / Spring Boot Web + JPA + H2
Data 09.05.2026
Nazwisko i imię studenta ......................................................
Rok/semestr Rok 3, semestr 6 [studia niestacjonarne]
Ocena ocena cząstkowa
Uwagi do ćwiczenia brak

📝 Opis zadania laboratoryjnego

Zaprojektuj system umożliwiający rejestrację pacjentów na badanie. Strona WEB powinna wyświetlać formularz (prosty), który umożliwia umówienie wizyty – wprowadzenie danych. Dane gromadzimy w bazie H2 (lub inna relacyjna = wymagany plik struktury bazy w formacie SQL). Strona powinna posiadać endpoint wyświetlający aktualny stan bazy, oraz wyświetlający pacjentów zapisanych na wybrany termin (można z poziomu kodu w Java wprowadzić od razu do bazy 2 pacjentów z pominięciem WEB UI). Rozwiązanie powinno być zrealizowane w oparciu o JPA.

📦 Wymagania

Kod programu należy umieścić w polu Kod programu tego pliku. Plik .md należy dodać do projektu.

Całość należy spakować do formatu .zip:

WSZIB_R3IN_NazwiskoImie_Spring_Lab4.zip

W miejscu NazwiskoImie należy wpisać swoje nazwisko i imię (uwaga na kolejność). Wynik pracy w formie archiwum zip powinien zawierać:

Archiwum WSZIB_R3IN_NazwiskoImie_Spring_Lab4.zip należy uzupełnić o swoje dane w nazwie i przesłać poprzez:

Upload

🎯 Ogólny opis zadania

Celem zadania jest przygotowanie aplikacji Spring Boot realizującej rejestrację pacjentów na badanie. Aplikacja udostępnia stronę WWW z formularzem rejestracyjnym, przechowuje dane w bazie H2 za pomocą JPA oraz oferuje endpointy REST/Web do przeglądania wszystkich rejestracji i pacjentów zapisanych na wybrany termin. Baza danych powinna być zainicjalizowana dwoma przykładowymi pacjentami z poziomu kodu Java.

✅ Wymagania funkcjonalne

Kod wymagania Wymaganie Poziom
WF-01 Aplikacja udostępnia stronę WWW z formularzem umożliwiającym rejestrację pacjenta na badanie (imię, nazwisko, PESEL, termin, rodzaj badania). wysoki
WF-02 Po wypełnieniu i wysłaniu formularza dane pacjenta są zapisywane do bazy danych H2 (lub innej relacyjnej) za pomocą JPA. wysoki
WF-03 Aplikacja udostępnia endpoint wyświetlający wszystkich pacjentów aktualnie zarejestrowanych w bazie danych. wysoki
WF-04 Aplikacja udostępnia endpoint wyświetlający pacjentów zapisanych na wybrany termin (parametr daty w URL). wysoki
WF-05 Przy starcie aplikacji do bazy danych wprowadzanych jest co najmniej 2 pacjentów z poziomu kodu Java. wysoki
WF-06 Konsola H2 (/h2-console) jest dostępna i umożliwia podgląd bazy danych. średni
WF-07 Encja Pacjent jest poprawnie odwzorowana na tabelę w bazie danych za pomocą adnotacji JPA (@Entity, @Id, @GeneratedValue). wysoki

🔧 Wymagania niefunkcjonalne

Kod wymagania Wymaganie Poziom
WNF-01 Aplikacja powinna wykorzystywać Spring Boot z zależnościami: spring-boot-starter-web, spring-boot-starter-data-jpa, h2. wysoki
WNF-02 Warstwa dostępu do danych powinna być realizowana przez JpaRepository (Spring Data JPA). wysoki
WNF-03 W archiwum należy umieścić plik schema.sql zawierający strukturę bazy danych w formacie SQL. wysoki
WNF-04 Struktura projektu powinna być zgodna z konwencją Spring Boot (Maven lub Gradle). średni
WNF-05 Kod Java powinien być czytelny, poprawnie sformatowany i podzielony na osobne klasy/pliki (encja, repozytorium, serwis, kontroler). średni
WNF-06 Rozwiązanie powinno być przygotowane bez wykorzystania wsparcia AI. niski
WNF-07 Archiwum .zip powinno zawierać folder Program z projektem, plik schema.sql oraz uzupełniony (ten) plik .md. wysoki

🧩 Diagram klas

classDiagram class Pacjent { -Long id -String imie -String nazwisko -String pesel -LocalDate termin -String rodzajBadania } class PacjentRepository { +findAll() List~Pacjent~ +findByTermin(LocalDate termin) List~Pacjent~ +save(Pacjent p) Pacjent } class PacjentService { +zapiszPacjenta(Pacjent p) +wszyscyPacjenci() List~Pacjent~ +pacjenciNaTermin(LocalDate termin) List~Pacjent~ } class RejestracjaController { +formularz() String +zarejestruj(Pacjent p) String +wszyscy() String +naTermin(String data) String } class DataInitializer { +run(String... args) } PacjentRepository ..> Pacjent : JPA PacjentService --> PacjentRepository : @Autowired RejestracjaController --> PacjentService : @Autowired DataInitializer --> PacjentService : @Autowired

Legenda diagramu:

Symbol Opis
──> (linia ciągła) Zależność przez wstrzykiwanie @Autowired
..> (linia przerywana) Relacja JPA — repozytorium zarządza encją Pacjent

💻 KOD PROGRAMU - REALIZACJA

JAVA (RejestracjaApplication.java)

// Wklej tutaj kod Java

JAVA (Pacjent.java)

// Wklej tutaj kod Java

JAVA (PacjentRepository.java)

// Wklej tutaj kod Java

JAVA (PacjentService.java)

// Wklej tutaj kod Java

JAVA (RejestracjaController.java)

// Wklej tutaj kod Java

JAVA (DataInitializer.java)

// Wklej tutaj kod Java

SQL (schema.sql)

-- Wklej tutaj strukturę bazy danych

HTML / Thymeleaf (formularz.html)

<!-- Wklej tutaj kod szablonu formularza -->

🏆 Ocena [wypełnia prowadzący]

Ocena kodu

Kryterium Opis Punkty (max) Punkty uzyskane
K-01 Poprawna struktura projektu Spring Boot (JPA, H2, Web) 1
K-02 Encja Pacjent z adnotacjami JPA 2
K-03 Repozytorium PacjentRepository (JpaRepository) z metodą wyszukiwania po terminie 2
K-04 Formularz WWW i endpoint rejestracji pacjenta 2
K-05 Endpoint listy wszystkich pacjentów i endpoint filtrowania po terminie 2
K-06 Inicjalizacja bazy 2 pacjentami z poziomu kodu Java oraz plik schema.sql 1
Suma 10

Ocena końcowa

Pole Wartość
Ocena (2–5)
Uwagi prowadzącego
Data wystawienia oceny
Podpis prowadzącego