Rozdiely medzi spôsobmi zamykania JPA entít (Differences in JPA entity locking modes )

Nedávno som na stackoverflow narazil na otázku o rozdieloch medzi rôznymi zámkami v JPA. Pri písaní odpovede ma napadlo, že je to vhodná téma na obšírnejší blogový zápis. Pre tých, ktorí sa v tom ešte neorientujú, vysvetľujem, prečo je vôbec zamykanie potrebné, kedy je vhodný optimistický a pessimistický prístup, ako ich použiť v JPA a dokonca ako...

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.

Jak funguje Ujorm?

Při příležitosti uvolnění nové verze ORM frameworku Ujorm 0.94 vznikla dokumentace v českém jazyce, která obsahuje například témata:stavy perzistentního objektu lazy loading session cache DDL support dědičnost entitZ nových funkcí stojí za zmínku podpora uložených procedur, zjednodušené mapování obecných datových typů na VARCHAR a řada...

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.

Používame Hibernate - stostranový tutoriál v slovenskom preklade

Hibernate je de facto štandardom pre implementáciu objektovo-relačného mapovania (ORM) v Jave. Gary Mak zverejnil sériu článkov, ktorá obsiahlym a vyčerpávajúcim spôsobom ukazuje základnú filozofiu Hibernate a princípy ORM a na praktických príkladoch ukazuje typické postupy mapovania a použitie v Java kóde. Vyše sto strán...

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...

Dočasné tabulky uvnitř transakce v MySQL aneb magie implicitního commitu

Narazil jsem na zajímavý a velmi zvláštní problém. Psal jsem transakční test ve Springu, který otvírá transakci na začátku a rollbackuje ji na konci testu. První část testu prováděla kupu INSERT a UPDATE SQL příkazů a potom jsem ověřoval provedení příkazu zpětným nahráním dat zpět z databáze. Test jako takový mi procházel, nicméně když jsem jej...

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.

Java a Caché X: Caché objekty jako Enterprise JavaBeans

cache logo
Dnes se zaměříme na možnosti Caché při spolupráci s architekturou Enterprise JavaBeans.EJB zná dva druhy beanů - a to beany s vlastní správou persistence - BMP (Bean Managed Pesistency) a beany, jimž persistenci obstarává příslušný kontejner v němž jsou provozovány - CMP (Container Managed Persistency). Zatímco BMP beany jsou obecně výkonnější než...

Java a Caché IX: Práce s dotazy

cache logo
Náš model aplikace je již dost rozsáhlý na to, abychom nad jeho třídami mohli začít provádět dotazování. Dnes si tedy ukážeme, jaké nám Caché nabízí možnosti práce s dotazy na data, vracející sady záznamů. Jedním z častých dotazů v účetních aplikacích je přehled zůstatků na účtech syntetické evidence, nebo přehled pohybů na účtech - deník. Ukážeme...

Java a Caché VIII: Pokročilé typy vlastností Caché tříd, kolekce a jejich projekce do Javy

cache logo
Dnes si ukážeme práci s pokročilými typy vlastností Caché tříd a kolekcemi a jejich projekci do Javy.K tomu si upravíme v Caché Studiu třídu ucto.demo.Denik; přidáme následující dvě vlastnosti /// seznam oprávněných osob, které smí provádět účetní zápisy v dané úč. jednotce Property opravneniUzivatele As list Of %String(JAVATYPE =...

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...

Java a Caché VII: První řádky kódu v prostředí Caché - pokračování

cache logo
Dnes si ukážeme druhý scénář aplikace z minulého dílu. Pro připomenutí: tvořili jsme Java projekci Caché persistentních tříd a nad výslednými proxy Java třídami jsme prováděli operace projekce z třídy s aplikační logikou, vytvořenou v Caché. Použijeme tedy stejné persistentní třídy jako minule, včetně jejich projekce do Javy. Ovšem aplikační...

Java a Caché VI: První řádky kódu v prostředí Caché

cache logo
Určitě jako správní programátoři dáváte přednost psaní kódu před nudným čtením manuálů. Po poněkud méně záživném minulém díle se dnes dostaneme k tvůrčí práci. Pokud jste se při jeho čtení ošívali, vězte že to bylo napsáno pro vaše dobro. Dnes nás totiž čeká napsání prvních řádek kódu v prostředí Caché (ne, nebojte se, není to nic složitého a...

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 Synchronizer - pozor na UserType

Upozornění na problém, který souvisí s používáním vlastních typů (UserTypes) v Hibernatu a generováním POJOs pomocí Hibernate Synchronizeru.

Java a Caché V: Tvorba funkčně bohatých objektově orientovaných databázových Java aplikací

cache logo
Po hektickém závěru první sekce našeho seriálu o Javě a Caché, popisující tvorbu persistentních Caché tříd z prostředí Javy, nastal čas trochu si odpočinout a zvolnit tempo. V následujících dílech seriálu si podrobně ukážeme, jak můžeme využít možnosti nabízené databázovým strojem Caché pro tvorbu funkčně bohatých objektově...

Java a Caché IV: Manipulace s objekty

cache logo
Ve třetím díle seriálu jsme vytvořili jednoduchou Java třídu, ke které jsme v díle předchozím vytvořili zrcadlový obraz - persistentní Caché třídu. Jak definice Caché třídy vypadá, jsme měli možnost již vidět, nicméně pro nás v tomto okamžiku není její znalost podstatná. S Caché totiž nebudeme pracovat přímo, ale prostřednictvím objektů Javy. A o...

Java a Caché III: Vytvoření definic Caché tříd pomocí průvodce

cache logo
V minulém dílu našeho seriálu jsme se seznámili s použitím Caché anotací. Jenom krátká poznámka k minulému dílu; není nutno definovat anotace ke každé vlastnosti nebo ke třídě jako celku, stačí je definovat pouze tam, kde potřebujeme jít nad rámec čistých objektů (např. anotace pro indexy apod.), nebo tam kde chceme systému vnutit jiné nežli...

Java a Caché II: Práce s Java Anotacemi.

cache logo
Představte si situaci, kdy ve vaší účetní aplikaci pracujete s třídou ucto.faktura, definovanou v Javě třeba takto: package ucto;// vystavene faktury public class faktura {public String cislo_faktury;public Date datum_vystaveni;public ArrayList<polozka> polozky; // reference na tridu ucto.polozkapublic String prijemce;public Boolean...

Java a Caché I: Úvodem

cache logo
Seriál o programování s databázovou platformou Caché od InterSystems v JAVA Jazyk Java si za zhruba 15 let své existence vydobyl jedno z čelných míst v oblibě mezi vývojáří aplikací. Jeho hlavní devizou je skutečnost, že je nezávislý na operačním systému a tudíž s ním lze vyvíjet aplikace, které lze nasadit v podnicích preferujících různá...

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...

Professional Oracle Programming - recenze publikace

0764574825
Databázový stroj Oracle je špičkový nástroj. Tato kniha vám umožní učinit si představu o jeho možnostech, a to podle mne velmi podařenou formou. Dozvíte se reálné informace o tom, co má Oracle navíc proti jiným databázovým strojům a k čemu by to mohlo být dobré vývojářům aplikací nad touto databází.Kniha je psána pro středně pokročilé zájemce, ale...

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.

jTDS JDBC Driver 1.1

Byla uvolněna nová verze 1.1 jTDS --- JDBC driver pro databáze MS SQL a Sybase.

Návrh specifikace JDBC 4.0 (JSR 221: JDBC 4.0 API Specification)

Na stránkách JCP se objevil návrh specifikace JDBC 4.0. Autoři se chtějí zaměřit především na následující oblasti:Správa ovladačůSpráva připojeníMechanizmy persistence a aktualizaceLepší práce s SQL dotazy a jejich výsledkyZabezpečení zpětné kompatibility

Configuring Database Access in Eclipse 3.0 with SQLExplorer

SQLExplorer is an Eclipse IDE database plugin that may be used to connect to a database from Eclipse. The SQLExplorer plugin adds a graphical user interface (GUI) to access a database with SQL. With SQLExplorer, you can display the tables, table structure, and data in the tables, and retrieve, add, update, or delete table data. SQLExplorer can...

 
strana 1/1celkem 58 položek