JPA a asynchronní logování

JPA, metoda toString() a asynchronní logování dokázaly vykouzlit situaci, která nám dala chvilku zabrat.

Jak lépe na abstract entity v JPA

Absolvoval jsem svůj doposud nejlepší technický pohovor (ne, v Google přijímací pohovor rozhodně lepší nebyl). Nikdo nedělal ramena s asymptotickou složitostí apod. Ba právě naopak to bylo velmi inspirující. Kromě toho, že jsem pochytil takové drobnosti jako unixový příkaz tree, jsem se hlavně přiučil, jak psát lépe abstract entity v JPA. SoftWare...

Postřehy z online kurzu MongoDB

Zapojil jsem se do online kurzu MongoDB, který pořádají přímo jeho autoři z 10gen. Aktuálně je kurz ve svém třetím týdnu (ze sedmi) takže už k němu mám pár postřehů.

DB žurnál pomocí Hibernate interceptoru

Na mnoha projektech je třeba řešit databázový žurnál aplikace, který zaznamenává události v systému včetně dat, která při těchto událostech byla změněna či jen čtena. Zákazníci často požadují u událostí, které mění data, žurnálovat jak staré tak i nové hodnoty záznamu.Implementace takového mechanismu přímo na DAO vrstvě by byla pracná a hlavně...

Trápení s MySql JDBC driverem

MySQL logo
MySql databázi používáme jako standardní řešení datové vrstvy už hodně let. Prošli jsme si už pěknou řádku verzí JDBC ovladačů, ale jedna věc mě dostala vážně do kolen. Tak se pohodlně usaďte, protože dnešní příběh bude vážně dlouhý Žil byl v jedné firmě programátor starající se malou generickou knihovnu pracující s JDBC. Jednoho krásného rána se...

Trapenie s Hibernate proxy (Trapenie s Hibernate proxy)

Kratke vysvetlenie vzniku hibernate proxy a popis toho ake problemy moze sposobit ak je pouzity lazy loading v pripade hierarchickych objektov.

Vyšel Ujorm verze 0.93

Byla uvolněna nová verze open-source ORM frameworku Ujorm 0.93 navrženého zejména pro rychlý vývoj Java aplikací nad relační databází. Framework nabízí typovou kontrolu při sestavování databázového dotazu a odhalí tak většinu překlepů ještě před spuštěním aplikace. S výhodou lze využívat code-completion vašeho IDE....

Commons DBCP industriální standard s chybami

Apache Commons
V rámci zátěžových testů, které jsem v minulém týdnu prováděl, jsem přišel na jednu zajímavou věc. Při velké zátěži došlo k “zaseknutí” Tomcatu, ze kterého se systém již nedokázal zotavit. Průvodním jevem byly otevřené konekce na databázi, přes které neprocházely žádné dotazy (tj. databáze nic nedělala), nulové zatížení...

Do pranice: Vhodnost ORM

Dvakrát se mi v poslední době stalo, že jsem se snažil někoho přesvědčit o nevhodnosti použití Hibernate a obecně ORM nástrojů pro přístup do databáze. ORM přístup má svoje výhody, ale i věci, které činí jeho použití obtížné.

Import velkých dat do MySQL

MySQL
Ještě něž jsem zahájil svou dovolenou, jsme při dokončování projektu narazili na výkonnostní problém při velkém importu dat do MySQL databáze. V našem případě se jednalo o cca 30 tisíc záznamů do tří tabulek navzájem provázaných cizími klíči. Úvodní verze importního algoritmu trvala cirka 50 minut, po dvou dnech jsme se dostali na jednotky...

Využití UJO v Hiberante

Tento článek se zabývá využitím UJO objektů v prostředí ORM frameworku Hibernate.Jaký může být důvod nahradit klasické POJO objekty invazivnější alternativou?

iBatis 3.0 preview - část druhá

iBatis
V předchozím článku jsme si ukázali vylepšení iBatisu v souvislosti s XML deklaracemi. Tento navazující článek rozebírá novinky v oblasti Java API. Základem pro toto rozšíření se staly vlastnosti dostupné od verze Javy 1.5 - tedy generiky a anotace. Jednou z velkých kritik původního iBatisu bylo množství XML, které bylo nutné psát. Našlo se...

iBatis 3.0 preview - část první

iBatis
Po letech jsme se konečně dočkali třetí verze populární knihovny iBatis. Nová verze přináší velkou řadu novinek a jedná se o kompletní rewrite, který využívá generik, anotací a dalšího API Javy 1.5. iBatis je prozatím ve verzi Beta 1 (doposud ještě není dostupný ani v Maven repository), ale doufejme že nebude dlouho trvat a dočkáme se...

Nové ORM 8x rychlejší než Hibernate

Dovoluji si představit Vám nový ORM framework českého původu s názvem UJO-ORM, který je postaven na architektuře UJO objektů. Nové ORM řešení vzniklo ve snaze usnadnit vývoj perzistentní vrstvy, nicméně výkonnostní testy ukazují, že dotazy typu SELECT jsou osmkrát rychlejší ve srovnání s Hibernate.

Hibernate: přistupovat pomocí polí nebo vlastností?

O co jde? Když mapuji entity, můžu si vybrat, jak bude Hibernate k objektům přistupovat. Mohu například napsat takovouto třídu. V takovémto případě bude při načítání z databáze Hibernate data zapisovat přímo do polí. To znamená, že například pro ID nemusíme mít vůbec set metodu, Hibernate nebo jiný JPA poskytovatel to tam magicky zapíše. Nebo mohu...

Podcast: Záznam z přednášky iBatis SqlMaps

Tento týden proběhla na Univerzitě v Hradci Králové přednáška na téma iBatis SqlMaps. V přednášce jsem se snažil projít všemi základními funkcionalitami iBatisu a porovnat jej krátce s několika dalšími přístupy k implementaci datové vrstvy (plain JDBC, JPA / Hibernate) a podívat se co nového nás čeká v nové verzi iBatis číslo 3. Kvůli...

iBatis 3 žije!

Nedávno jsem diskutoval s Jirou jestli se stále ještě můžeme těšit na iBatis verze 3. Je tomu poměrně dávno, co se nějakým výraznějším způsobem modifikoval iBatis 3 Whiteboard a nenašel jsem žádnou další stopu kdy a zda-li vůbec bude iBatis 3 vydán. V projektovém issue trackeru je k 3.x verzi velmi malá aktivia, ačkoliv v Subversion existují nějaké...

Pozvánka na přednášku na UHK iBatis SqlMaps

Po relativně krátké době se chystá nová přednáška na Univerzitě Hradec Králové - tentokrát o knihovně iBatis, která řeší objektově relační mapování tak trochu jiným způsobem než jde JPA a Hibernate. A to způsobem, který vyhovuje nejen nám, ale i tisícům vývojářů po celém světě. iBatis je řešením, které leží někde mezi JDBC a JPA - na jednu...

Jak selektivně podle třídy mazat objekty z Hibernate session

Moje honba za LazyInitializationException byla úspěšná (musím se přiznat, že velkým pomocníkem mi byl Eclipse Memory Analyzer, který mi pomohl zjistit, kdo se na objekt odkazuje). Problém byl v tom, že jsem chtěl vymazat objekty ze Sessiony, ale protože jsem neznal jednotlivé instance, zavolal jsem metodu clear a znova zaasocioval to co jsem si...

Překlad výjímek z databáze při použití Hibernate

hibernate logo
Kdo používá Hibernate, ten možná již tuší, kam budu dnešním příspěvkem mířit. Jde o to, že chyby, které detekuje Hibernate se snaží do výjimky dávat jméno třídy a atributu, který chybu vyvolal. Ovšem pokud vám chybu vyhodí databáze, pak vás Hibernate nechá ve štichu a předhodí vám výjimku datábáze a dělejte si s ní co chcete.Toto chování se mi...

jOpenSpace 2008 - ORM - Hibernate a klientská aplikace

Klientské aplikace napsané v AWT, Swingu nebo SWT mají jedno velké specifikum oproti aplikacím webovým. Tím specifikem je jednovláknovost těchto knihoven. Tj. kód, který přistupuje k UI tak musí činit z UI vlákna (ve webové aplikaci má každý request své vlákno - skoro vždy). Z tohoto vlákna tedy není vhodné provádět náročné akce, protože dojde...

Optimalizujeme Hibernate

hibernate logo
Při vývoji s Hibernate můžete narazit na výkonnostní problémy. Tento fakt je způsoben především tím, že Hibernate přidává další abstraktní vrstvu a pokud Vám jeho funkčnost není zcela známa, můžete narazit na problémy.Chtěl bych zde osvětlit postupy, které my používáme při vývoji aplikací, abychom dosáhli co nejvyššího výkonu.

Generické DAO pro Hibernate/JPA

hibernate logo
Nečekejte žádnou raketovou vědu, ale jenom takový malý tip ;-). Na pár projektech jsem se setkal s tim, že pro každou entitu bylo ručně vytvořeno a nebo vygenerováno DAO. Většina těchto DAO objektů však obsahovala pouze metody pro CRUD operace (Create, Update, Delete) pro danou entitu. To vedlo k často se opakujícímu kódu, který rozhodně nebyl...

Hibernate - práce s kolekcemi, ManyToMany vazba

hibernate logo
S Hibernatem dělám již celkem dlouho, ale i tak pořád narážím na nové a nové věci (to bude asi tím, že jsem manuál k Hibernate celý ještě nečetl a vždy se učím až za pochodu). Teď naposledy jsem řešil celkem intenzivně kolekce a asociace. Hibernate z pohledu kolekcí rozlišuje tři základní implementace...

Reverse Ajax s DWR, Spring, iBatis

Před nějakým časem se v Avedyi rozjížděl nový projekt. Jednalo se o klasický webový chat. Vytvořil jsem tehdy jednoduchý prototyp. Použil jsem DWR a technologii reverse ajax. Pro tento článek jsem původní prototyp trochu rozšířil a zapojil jsem Spring Framework a jako DAO vrstvu jsem vybral iBatis.

Výkonnost PreparedStatementu

Zakořeněným názorem je, že by se měly při práci s JDBC používat PreparedStatementy namísto obyčejných Statementu. Důvody jsou na bíledni, a to větší výkonnost a bezpečnost. Tyto argumenty Vám omlátí o hlavu kde kdo. Otázkou je jak je to s výkonností. Dlouhou dobu jsem si žil s názorem, že využití PreparedStatementu má opodstatnění až při...

Pracujeme s Java Persistence API - tutoriál

Java Persistence API je špecifikácia, ktorá sa snaží štandardizovať objektovo-relačné mapovanie - teda mapovanie objektov na databázové tabuľky. Jej hlavným zdrojom inšpirácie je Hibernate a práve na tomto nástroji si ukážeme jeho použitie. Obsiahly tutoriál prináša popis základných tried, filozofie práce a značné množstvo príkladov...

Nadišla jar v krajine DAO alebo použitie Spring JDBC

JDBC (Java Database Connectivity) je štandardný spôsob, akým možno pristupovať z jazyka Java k databázovým systémom. V článku si popíšeme, ako je možné zredukovať množstvo opakujúceho sa JDBC kódu použitím tried JdbcTemplate a RowMapper.

Simple JDBC template

SimpleJdbcTemplate nám umožňuje snadno a elegantně pracovat s JDBC. Podporuje pojmenování parametrů, generika atp. Pokud nepotřebujete ORM, stojí za to se na SimpleJdbcTemplate podívat.

Jaký používáte nástroj pro persistency?

Inspirován článkem Is Hibernate the best choice? jsem se rozhodl udělat si malý průzkum, jak je to s čtenáři mého blogu a jimi používanými frameworky pro persistency. Já osobně jsem si prošel přes používání JDBC, iBatisu až po Hibernate a musím říci, že bych se již zpět nevracel.

Hibernate a optimalizace

Častým argumentem proti používání Hibernate je, že ruční psaní dotazů umožní mít efektivnější a rychlejší program. Chtěl bych vám proto popsat naše zkušenosti s Hibernate a jeho optimalizací pro výkon. Následující článek vám přiblíží některé vlastnosti Hibernate ovlivňující výkon. Budeme předpokládat, že nás zajímá efektivita z pohledu SQL...

iBatis SqlMaps - tak trochu opomíjený ORM

Nedá mi to, abych nenapsal něco o frameworku iBatis. Někteří jej možná znáte, někteří jste možná o něm už slyšeli, ale dle trafficu na java.cz konferenci bych řekl, že jej většina z vás přehlíží. Zůstal nepovšimnut i v našem krají protřelém CZ podcastu číslo 8. Myslím, že je to škoda a proto jsem se rozhodl o malou osvětovou, nebo-li, jak by řekl...

Hibernate a jednosměrné one-to-many vztahy

Dnes nebudu psát nic světoborného. Jen bych uvedl na pravou míru chybu, které jsem se dopustil v minulém článku. Není pravda, že Hibernate neumí jednosměrné one-to-many vztahy bez použití join tabulky, naopak je to docela snadné.

Hibernate a paralelní kolekce

Malý experiment s optimlizací načítání kolekcí pomocí Hibernate.

JDBC 4.0 - příjemné novinky

Připravovaná Java 6.0 sebou kromě jiného přinese i JDBC 4.0. Na co se tedy můžeme těšit?

JDBC memory leak za 5,50-

Je libo dát si malý, únik paměti, který ve výsledku povede k pádu aplikace na java.lang.OutOfMemory? Budeme potřebovat tyto ingredience: kód pracující s databází přes JDBC, poolování databázových připojení a následující konstrukci...

Návrhový vzor Template method a jeho aplikace v prostředí JDBC

Tento článek by mohl klidně nést podtitul Efektivní práce s databází v Jave: stop nadbytečnému kódu. Hodně často se diskutuje práce s JDBC, což je javovské rozhraní pro práci s databází. Bohužel už méně často se diskutuje o tom jak psát JDBC kód efektivně. V tomto článku si ukážeme jak na to za pomoci návrhového vzoru Template method.

Databázové scénáře pro integrační a jednotkové (unit) testy

Pokud máte aplikaci, která je výhradně závislá na databázi, a chcete psát jednotkové a nebo integrační testy, pak jste postaveni před dva problémy. Za prvé, nastavení testovacích dat alias uvedení databáze do výchozího stavu a za druhé možnost kontroly dat v databázi v rámci testu. Na základě těchto požadavků, jsem připravil jednoduchý framework...

JTDS driver – pozor na nastavení pro MSSQL 2000

JTDS driver je v podstatě skoro jediný nekomerční driver použitelný pro MSSQL 7.0 a 2000. Právě jeho původní určení pro MSSQL 7.0 pravděpodobně zanechalo pozůstatek v defaultním nastavení driveru, které může na MSSQL 2000 způsobit vážné výkonnostní problémy. Celá blamáž se točí kolem převodu textových parametrů na UNICODE. Objasnění problému a...

Microsoft uvolnil zbrusu nový JDBC driver

Když jsem dnes zpětně koukal na TheServerSide a hledal zprávičky, které mě zaujaly, narazil jsem na novou zprávu Microsoft releases a new JDBC Driver for SQL Server. Pokud si myslíte, že se Microsoft chytil za nos a usoudil, že není úplně košer mít špatný JDBC driver k vlastnímu produktu, pak se mýlíte.

 
strana 1/1celkem 40 položek