JOhm este o biblioteca de cartografiere Object-Hash rapid pentru Java inspirata de minunatul Ohm. JOhm OHM este un avatar modern al vechilor ORM ca Hibernate, diferenta fiind ca nu avem de-a face cu un RDBMS aici, ci cu un rockstar NoSQL.

JOhm este o biblioteca pentru stocarea obiectelor in Redis, o baza de date persistenta cheie-valoare. JOhm este conceput pentru a fi minim invaziv si se bazeaza in intregime pe reflexie, ajutat de carlige de adnotare pentru persistenta. Ideea fundamentala este de a permite bazelor de cod mari existente sa se conecteze cu usurinta la Redis fara a fi nevoie sa extinda clasele de baza cadru sau sa furnizeze metadate de configuratie excesive.

Stocarea de date durabila este disponibila prin fisierul Redis Append-only (AOF). Strategia implicita de persistenta este Snapshotting.

Ce pot face cu JOhm?

JOhm este inca in dezvoltare activa. Urmatoarele functii sunt disponibile in prezent:

  • Persistenta atributelor de baza (sir, intreg, etc …)
  • Coduri auto-numerice
  • Referinte
  • Matrice
  • Indici
  • Stergere
  • Relatie List, Set, SortedSet si Map
  • Cautati atribute, tablouri, colectii si referinte

Stai pe aproape! Creste destul de repede!

Cum il folosesc?

Puteti descarca cea mai recenta versiune de la http://github.com/xetorthio/johm/downloads

Si acesta este un mic exemplu (getters si seters nu sunt inclusi din simplitate):

@Model class User {@Id private Long id; @Atribuie numele sirului privat; @Attribute @Indexed private int age; @Reference @Indexed Private country country; @CollectionList (of = Comment.class) @Indexed private List <Comment> comentarii; @CollectionSet (of = Item.class) @Indexed private Set <Item> achizitii; @CollectionMap (cheie = Integer.class, valoare = Item.class) @Indexed Private map <Integer, Item> favoritePurchases; @CollectionSortedSet (of = Item.class, by = “pret”) @Indexed private Set <Item> commandPurchases; @Array (of = Item.class, length = 3) @Indexed private Item [] threeLatestPurchases; } @Model class Comentariu {@Id private Long id; @Atribuie textul sirului privat; } @Model class Item {@Id private Long id; @Atribuie numele sirului privat; }

Initierea JOhm: jedisPool = new JedisPool (new Config (), “localhost”); JOhm.setPool (jedisPool);

Crearea unui utilizator si persistarea acestuia:

Utilizator someOne = Utilizator nou (); someOne.setName („Cineva”); someOne.setAge (30); JOhm.save (someOne);

Incarcarea unui utilizator persistent:

Utilizator stocatUser = JOhm.get (User.class, 1);

Stergerea unui utilizator:

Cautati toti utilizatorii cu varsta de 30 de ani:

Lista <User> utilizatori = JOhm.find (User.class, “age”, “30”);

Model cu referinta:

Utilizator someOne = Utilizator nou (); … JOhm.save (someOne); Country someCountry = new Country (); … JOhm.save (tara); someOne.setCountry (someCountry);

Model cu o lista de modele imbricate:

Utilizator someOne = Utilizator nou (); … JOhm.save (someOne); Comentariu aComentariu = comentariu nou (); … JOhm.save (aComment); someOne.getComments.add (aComment);

Model cu un set de modele imbricate:

Utilizator someOne = Utilizator nou (); … JOhm.save (someOne); Item anItem = element nou (); … JOhm.save (anItem); someOne.getPurchases.add (anItem);

Pentru mai multe exemple de utilizare verificati testele.

Si ai terminat!

Licenta

Drepturi de autor (c) 2010 Gaurav Sharma si Jonathan Leibiusky

Prin prezenta se acorda, gratuit, oricarei persoane care obtine o copie a acestui software si a fisierelor de documentare asociate („Software-ul”), pentru a tranzactiona software-ul fara restrictii, inclusiv fara limitare, drepturile de utilizare, copiere, modificare, imbinare , publica, distribuie, sublicentiaza si / sau vinde copii ale software-ului si permite persoanelor carora li se furnizeaza software-ul sa faca acest lucru, sub rezerva urmatoarelor conditii:

Notificarea privind drepturile de autor de mai sus si aceasta notificare privind permisiunea vor fi incluse in toate copiile sau partile substantiale ale software-ului.

SOFTWARE-UL ESTE OFERIT „CA ATARE”, FARA GARANTIE DE NICIUN TIP, EXPRESA SAU IMPLICITA, INCLUSIV, DAR NU LIMITAT LA GARANTIILE DE VANZABILITATE, ADECVARE PENTRU UN SCOP PARTICULAR SI NEINFRACTIONARE. In niciun caz, AUTORII SAU DETINATORII DE DREPTURI DE AUTOR NU SUNT RESPONSABILI PENTRU ORICE REVENDICARE, DAUNE SAU ALTE RESPONSABILITATI, FIE INTR-O ACTIUNE A CONTRACTULUI, TORT SAU ALTUI, REZULTATE DIN, IN LEGATURA CU SAU IN LEGATURA CU SOFTWARE-UL SAU DE UTILIZARE SAU ALTE DISCIPLUTII IN SOFTWARE.