2023-04-07

Nový ORM framework pro Kotlin?

Pokud máte averzi na vznik nových frameworků, tohle raději dál ani nečtěte. Ostatní laskavé čtenáře upozorňuji, že zde chystám představit především návrh API pro modelování databázových dotazů v deklarativním stylu se silnou typovou kontrolou jazyka Kotlin. Implementovány jsou jen některé třídy kolem entit, napojení na databázi zatím chybí … 

 

Celý článek je zde: https://blog.root.cz/ponec/novy-orm-framework-pro-kotlin/

 


 

2021-07-06

Ujorm pro Kotlin?

 

Prototyp knihovny Kotlin pro modelování filtrů pomocí meta-modelu doménových objektů. Sestavené filtry pracují s běžnými objekty POJO. Řešení bylo inspirováno frameworkem Ujorm, ale tento kód je však zcela nový. Oblastmi použití jsou například:

  • dynamické validace
  • alerting
  • modelování podmínek pro nějaké ORM


Více informací na: https://github.com/pponec/ujormKt



Class diagram

2021-06-21

Mini webová Java aplikace s velikostí okolo 5 MB

 

Podařilo se mi sestavit webovou aplikaci s velikostí pouhých 5,18 MB. Aplikace obsahuje pouze stručný HTML  formulář s podporou jednoduchých událostí AJAX. Projekt je postaven na frameworku Javalin a webovém modulu z frameworku Ujorm.


Zdrojové kódy jsou volně dostupné na GitHub:
https://github.com/pponec/demo-ajax/tree/javalin

2021-04-04

HTML report v jazyce Java na pár řádků

Dnes vám představím jednoduchý tabulkový HTML report vytvořený pomocí pouhých třinácti řádků zdrojového kódu zapsaných do jediného příkazu jazyka Java. Předpokládejme přitom, že služba pro získání dat už existuje. Pokud budeme chtít uživatelům nabídnout také jednoduché (sekvenční) filtrování obsahu tabulky s řazením sloupců, implementace vezme ještě pár řádků kódu navíc. Řešení stojí na objektech typu Element z frameworku Ujorm ...


 
 
 
Odkaz na celý článek je zde: 

 
 
 

2021-03-08

Jednoduché webové stránky s AJAX

Framework Ujorm obsahuje od verze 1.91 nový webový modul ujo-web se třídou Element, která slouží pro sestavení HTML stránky pomocí objektového modelu. Za výhodu takového řešení považuji:

  • odolnost vůči překlepům v HTML kódu, 
  • bezpečný zápis dat včetně speciálních znaků
  • vnitřní elementy výsledného HTML kódu se automaticky odsazují mezerami
  • vybrané vlastnosti výsledné stránky lze ovlivnit konfigurací, týká se to třeba výběru znaků pro odsazování vnořených elementů, zalamování řádků, národního prostředí, kódové stránky a také možnosti registrace vlastního formatteru datových objektů,
  • zápis Java lze přiblížit strukturovanému HTML kódu - pomocí bloků try-catch, 
  • minimalistické řešení bez dalších závislostí,
  • za výhodu považuji také možnost jednoduchého připojení dalších služeb – s veškerým komfortem prostředků jazyka Java

Je dobré vědět, že objekty typu Element posílají svá data rovnou do Writeru a tak je jeho paměťová náročnost minimální (ve výchozí konfiguraci). Pro ilustraci přikládám ukázku kódu jednoduchého formuláře v těle běžného Java servletu:

 


Od veze 2.13 je podporován AJAX pomocí Javascriptu Vanilla ES6. Popis referenční implementace vyšel dnes na blogu portálu Root.cz .


2019-11-20

Ujorm 1.93 podporuje Stream

Nová verze Ujorm 1.93 umožňuje procházení výsledků SELECT pomocí objektu typu Stream. Jeho použití podporují všechny implementace rozhraní LoopingIterator včetně třídy RowIterator z modulu ujo-tools.
Podporu tedy lze využít nejen v modulu ORM, ale také při práci s JDBC, vzorové použití přikládám:

    PreparedStatement ps = dbConnection.prepareStatement("SELECT * FROM myTable");
    new RowIterator(ps).toStream().forEach((RsConsumer)(resultSet) -> {
        int value = resultSet.getInt(1);
    });
 
Nějaké další informace lze najít v jUnit testech. Pokud výslovně nepotřebujete pracovat s objektem typu Stream, tak už v předchozích verzích knihovny bylo možné sestavit výraz:

    PreparedStatement ps = dbConnection.prepareStatement("SELECT * FROM myTable");
    new RowIterator(ps).forEach((RsConsumer)(resultSet) -> {
        int value = resultSet.getInt(1);
    });


Pro Maven projekty přidáte závislost XML výrazem:
    <dependency>
        <groupId>org.ujorm</groupId>
        <artifactId>ujo-tools</artifactId>
        <version>1.93</version>
    </dependency>
 

2019-03-31

Příběh frameworku Ujorm

Na blogu Root.cz vyšel tento týden článek, který se pokouší najít odpověď na otázky týkající se produktivity vývoje s frameworkem Ujorm a zmiňuje také historické důvody jeho vzniku.

Podle měření webu Root.cz - čtenáři dnes dopoledne překročili 10 tisíc zobrazení toho článku, děkuji všem za kultivovanou diskuzi.




Odkaz na text článku přikládám:
https://blog.root.cz/ponec/pribeh-frameworku-ujorm/

2018-11-18

Ujorm verze 1.88

Je k dispozici nová verze Ujorm 1.88, změny se týkají především modulu ujo-tools, který nabízí nástroje pro formátování textových zpráv, nadstavbu JDBC k sestavení SQL dotazů umožňujících získání instance typu ResultSet a podporu tvorby DOM modelu pro generování HTML stránek. Motivační články jsem se rozhodl umístit na stránky serveru Root.cz, odkazy přikládám:


Všechny zdrojové kódy projektu Ujorm mají licenci Apache License, Version 2.0 a jsou k dispozici v repozitáři serveru GitHub


2018-03-18

Ujorm verze 1.82


Je k dispozici nová verze Ujorm 1.82 hlavní změny v ORM modulu:

  • Při provádění UPDATE lze do metody vložit původní verzi objektu pro ověření, zda-li ty modifikované hodnoty nebyly změněny v databázi nějaký konkrurenčním klientem
  • Třída Criterion implementuje metody equals() and hashCode(), které jsou požadovany například v objektu HashSet
  • SQL dialekty pro databáze PostrgreSQL a H2 využívají operátor ILIKE
  • Třídy pro formátování textu MsgFormatter a MessageService podporují datový typ Supplier, který umožnuje do parametru poslat algoritmus, který se vyhodnotí až době zpracování.
  • Třída CustomMap umí akceptovat uživatelskou definici metod equals() a hashCode() pro všechny vložené klíčové objekty.
  • Pro zobrazování tabulek v Apache Wicket frameworku lze vyžít optimalizovaný dataprovider který implementuje třída OrmDataProviderCached

Podrobnější seznam v angličtině je tady.