DB modell generálása

Fórumok

Hoi,

Adott egy nezet/lekerdezes/tabla, amit meg akartok jeleniteni, akkor Java-ban az ehhez szukseges modellt mivel generaljatok? Ez legtobbszor eleg statikus dolog. Qt es Visual Studioban-ban megadod a lekerdezest es gyonyoruen a komplett MVC-t megcsinalja magatol. Egy tablas nezet eseteben meg a foreign keyekhez tartozo ertekek is megjelennek legordulo comboboxban.

Valami ilyesmire gongoltam: http://sql2java.sourceforge.net/
Legjobb persze egy Eclipse/NetBeans plugin lenne, connect to database -> execute query -> generate model.

udv,
Gabor

Hozzászólások

Igazabol az a bajom, hogy egy lekerdezes attributumainak a tipusa egyreszt nem valtozik, masreszt az elejetol fogva egyertelmu, h milyen java tipusoknak felel meg. Eleg unalmas mindig kezzel legeneralni a hozza tartozo TableModel-eket.

--
The Net is indeed vast and infinite...
http://gablog.eu

Valóban, nem akarok komolyabb sémákat, se XML perzisztenciát, se UML -> [adatbázis, osztály, modell] átalakítást. Közvetlenül szeretném továbbra is a relációs adatbázist használni.

Olyat szeretnék, mind amit a Visual Studio DataSet-je tud: felveszek egy dataset-et, ami később MVC-ben egy modell motorja tud lenni.
És megadok neki egy lekérdezést, pl. select * from A join B on x , aminek eredménye lesz [a,x,b] oszlopokból álló tábla. Ezeknek az oszlopoknak a típusa nem változik, így azonnal generálható belőle a modell. Ha a lekérdezés pedig csak egy táblára/írható nézetre vonatkozik, akár updatelhető modell is rögtön generálható.

Vagy mint Qt-ben a QSqlQueryModel, ami egy lekérdezés eredményével felparaméterezhető, és kapásból megvalósítja a modellt és a hozzá tartozó interfacet. Valami ilyesmire gondoltam: http://www.java2s.com/Code/Java/Database-SQL-JDBC/RowSetModelbasedonTab… , de kicsit szofisztiáltabbra.

Nem bonyolult dolog, de ha sok táblát akar az ember használni, elég unalmas kézzel csinálni a sémát. Redundáns a sémát az adatbázisban és a programban is definiálni. Ha pedig a séma bonyolultabb, akkor még mindig lehet kézzel hackelni, vagy származtatni/proxy patternt használni, ha mondjuk szűkíteni akarjuk az elfogadott elemeket.

Pl. qt -ben:


(...)
QSqlQuery query("select * from A join B on x");
m = new QSqlQueryModel(this);
m->setQuery(query);
table->setModel(m);
(...)

--
The Net is indeed vast and infinite...
http://gablog.eu

volt uegy a hibernate, joval az ejb3 spec elott.

aztan sok jo otlet volt ORM szinten benne, a Sun meg szerette volna ha jokis ORM van a refimp melle. igy a JPA1.0 az nagyjabol ~hibernate, a glassfish melle (ami meg a java ee 5 refimp) meg odacsomagoltak az oracle toplink cuccanak butitott valtozatat (toplink essentials).

oracle megunta, hogy ket agat kell karbantartania, igy kidobta az egesz suite kodjat, es odaadta az eclipse projektnek (de egy Dave nevu oracles srac vezeti most is a projektet) - ez lett az eclipselink.

aztan azota hivatalosan az a JPA2.0 referenciaimplementacio.. :)

amugy ez hitvallas kerdese... spring vs ejb, jboss vs glassfish, hibernate vs akarmimas:)