2014. június 2., hétfő

Property-k kezelése Java-ban, BeanWrapper nélkül ;-)

Elkezdtem írogatni érdekességből egy saját ORM rendszert, ami pont azt tudja majd, ami nekem kell, sem többet, sem kevesebbet: konvertál osztályt táblára, objektumot rekordra, rekordot objektumra. Mivel meg akarok valósítani embeddelést ("a.b.c" property-ből legyen "b_c" SQL oszlop az "a" táblában), ezért szükségem van hasonló működésre, mint amit a múltkor bemutattam a BeanWrapper-rel.

Azonban egy picit másfajta működésre is szükségem van, használnom kell közvetlenül a Reflection-t, mert kezelek annotációkat, illetve kényelmesebb így kilistázni egy osztály property-jeit, mint BeanWrapper-rel. És hamár így szoros együttműködésbe fogtam a Reflection-nel, gondoltam megírom a saját BeanWrapper-emet, amely tudja a 2 múltkor bemutatott funkciót: getProperty és setProperty. Sikerült is, és több előnye is van a BeanWrapper-el szemben! :-)

Egyrészt villámgyors, másrészt pedig nem kellenek neki getter/setter metódusok, csak egy üres konstruktor. Plusz nem kell neki 1MB-nyi 3rd party lib, tisztán core Java az egész. :-)

[Szerk:] Felraktam GitHub-ra, picit tuningolva, korrekt dokumentációval, és szép, olvasható példákkal, unit teszttel. :) Jelenleg getter, setter és lister metódusai vannak.

Persze lehet ezt még tuningolni, pl. egy osztályból csinálni egy Map<String,Property> adathalmazt, ahol a kulcs a property név, az érték pedig a property mindenféle tulajdonsága, pl. a típusa (Class) hasznos lehet, meg akár az annotációi felsorolva (List<Annotation>).

Remélem, hasznára lesz valakinek. :-)

[english version]

Nincsenek megjegyzések: