====== Checkpoint 2 ====== Odevzdává se ZIP archiv obsahující: * výslednou fungující aplikaci splňující tyto podmínky (projekt kompilovatelný Mavenem): * Vyhovuje SRS vytvořené v rámci [[cp1|checkpointu 1]], * Používá persistentní vrstvu, navrženou a schválenou v rámci [[cp1|checkpointu 1]], obohacenou o alespoň tři z následujících technik/funkcí: * Ordering (uspořádání kolekce podle atributu - ''@OrderBy''), * Pojmenované dotazy (''@NamedQuery''), * Kaskádní persist/update/merge/remove, * Složené primární klíče, * Mapování výsledků JPQL/native dotazu (''@SqlResultSetMapping''), * Criteria API, * Metamodel API. * Kompletní CRUD části datového modelu. Tento CRUD musí být netriviální, tedy přes více entit spojených vazbami, * Využít transakční zpracování, * Prezentační vrstva, komunikující s backendem pomocí REST služeb, * Používáte-li pro prezentaci technologii, která není založena na REST komunikaci (např. JSF, JSP), výše uvedený bod se na vás nevztahuje, * Použít security podporu (autentifikace, autorizace, omezení přístupu k metodám beany, funkcionalita aplikace podle role uživatele), * Bonusové body za použití dalších souvisejících technologií (WebSockets, klientská mapová vizualizace např. pomocí Google Maps, použití Criteria API vč. statického metamodelu, použití rich domain modelu, použití JSON-LD ve webových službách, integrace s REST rozhraním jiné aplikace, více scope pro beany BL, atp.), * zprávu o projektu (cca 1 A4) * popis aplikace a její struktury. * návod, jak aplikaci nainstalovat (stručný, ale kompletní, včetně případného vytvoření testovacích dat a konfigurace aplikačního serveru), * **místo popisu typu "Když chcete uložit objednávku, klikněte na tlačítko uložit objednávku" vypíchněte spíše zkušenosti získané během této SP - "Vyzkoušel jsem si tu a tu technologii a má tyto výhody/nevýhody oproti jiné technologii." , nebo "Měl jsem ty a ty neočekávané problémy a řešil jsem je tak a tak.", apod.**