|
|
|
|
Strumenti |
30-10-2009, 17:41 | #1 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
[JAVA] ORM leggeri, avete provato questi?
Salve,
mi chiedevo se qualcuno degli utenti del forum che programma in Java avesse per caso usato uno di questi ORM, e se sì se può cortesemente postare le sue impressioni, perchè sto cercando un ORM che abbia le caratteristiche di essere il più semplice e meno "pervasivo" possibile, a configurazione-zero o quasi, da utilizzare solo per applicazioni desktop stand-alone di piccole e medie dimensioni. Naturalmente l'affidabilità è un requisito. Gli ORM in questione sono i seguenti: SimpleORM Ammentos Persist pBeans Ben vengano consigli di altri ORM non elencati che rientrano nella casistica descritta sopra. Grazie in anticipo per qualsiasi contributo
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
31-10-2009, 13:24 | #2 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22459
|
avevo scoperto l'ultimo, ma non ero riuscito a trovare la documentazione e quindi non ne avevo fatto di nulla.
io comunque, a dir la verità nel mio ultimo progetto ho usato un sistema un po' in "diverso": in java mi sono appoggiato alla libreria xstream (che fa lo stesso lavoro delle XMLDecoder/XMLEncoder, ma più veloce) per serializzare un oggetto, salvando poi l'xml corrispondente in un database (ho usato il postgres), usando come chiave quella dell'oggetto stesso,tutto "nascosto" in una classe che implementa Map. Le prestazioni sono più che soddisfacenti se la mole di dati non è eccessiva, coprendo con estrema semplicità per il programmatore il campo che questi orm si contendono : applicazioni semplici, con entità semplici magari senza la necessità (e soprattuto il tempo uomo) per fare 2500 file di configurazioni. in questo campo secondo me sono interessanti anche le BerkeleyDB della Oracle
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
31-10-2009, 13:51 | #3 |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Degli ORM che hai indicato tu devo confessare di non conoscerne nemmeno uno.
Dato che anch'io ho un'antipatia profonda per gli ORM 'standard', avevo trovato un'isola felice in ActiveObjects: https://activeobjects.dev.java.net/ Configurazione zero, semplice, basilare. Detto questo, probabilmente se dovessi cominciare un progetto da zero adesso non credo userei un db relazionale, ma qualcosa document-oriented tipo tokyo cabinet o simili...
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
31-10-2009, 18:19 | #4 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22459
|
gli ho dato un occhiata veloce, mi ricorda vagamente cloud db... sto sparando qualche boiata?
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
02-11-2009, 09:26 | #5 | |
Senior Member
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
|
Quote:
Tokyo Cabinet sostanzialmente è una grossa hashtable... che poi non è cosi, ma fai prima a leggere la documentazione.
__________________
-> The Motherfucking Manifesto For Programming, Motherfuckers |
|
02-11-2009, 10:50 | #6 | ||||
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Vi ringrazio per i vostri interventi.
Quote:
Quote:
Il che significa che dovrei prima informarmi meglio e vedere quanto costa e cosa comporta, e se il gioco vale la candela. Questo a prescindere dalla qualità del prodotto (che comunque mi sembra ottima). Quote:
Peccato che non sia ancora abbastanza maturo, però vale la pena approfondire. Quote:
Vi ringrazio ancora per i vostri interventi.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||||
02-11-2009, 11:06 | #7 |
Member
Iscritto dal: Mar 2005
Messaggi: 250
|
Ma Hibernate non ti piace?
__________________
Membro dell'Hardware Upgrade Aerospace Group |
02-11-2009, 11:43 | #8 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Non è una questione di piacere o non piacere.
I motivi e il senso della mia richiesta sono esplicitati nel mio primo post.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
02-11-2009, 13:52 | #9 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4400
|
Quote:
...ciao Andrea... |
|
02-11-2009, 14:12 | #10 | |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3963
|
Quote:
Non so per gli altri ORM, ma Hibernate/Nhibernate ti permettono di crearti una tua ID laddove non ci sia nella tabella corrispondente. L'unica cosa che dovrai fare oltre che definirla nell'entità che rappresenti, assegnarle come generator il valore 'assigned': Codice:
<id name="NomeId" column="columnId" type="Int32" unsaved value=0> <generator class="assigned"</generator> </id>
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek |
|
02-11-2009, 14:16 | #11 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Ad esempio, da questo punto di vista, per quel che ho visto fin'ora, Ammentos non mi sta soddisfando: è di semplicissimo utilizzo, ma mi costringe a pensare e disegnare in dettaglio prima le tabelle del db, per poi creare le entità Java. Io invece vorrei fare proprio l'opposto: progettare il mio modello delle entità in termini OO e poi lasciare il più possibile all'ORM l'incombenza di realizzare una mappatura coerente in termini di tabelle di database relazionale. Comunque, leggendo qua, di primo acchito direi di che non serve, e che si crea da solo la colonna per la chiave primaria: https://activeobjects.dev.java.net/basic-concepts.html
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 02-11-2009 alle 14:27. |
|
02-11-2009, 14:18 | #12 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4400
|
Quote:
...ciao Andrea... Ultima modifica di ally : 02-11-2009 alle 14:39. |
|
02-11-2009, 14:24 | #13 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
il problema non è se esite un qualsiasi framework ORM che faccia questo & quello: Hibernate poi, in particolare, è famosissimo e penso che quasi tutti lo conoscano. Il problema che mi ero posto era un'altro: devo scrivere una semplice applicazione di questo tipo: - stand alone desktop application - di piccole, al massimo medie, dimensioni - sto programmando OO (almeno: ci provo ) in Java Esiste un ORM (libreria o framework) che soddisfi questi vincoli: - semplice da integrare con il codice - a configurazione-zero (no tonnellate di XML per definire le mappature) - manipola in modo trasparente al programmatore lo schema del db basandosi interamente sulle entità definite nel codice - mi permette quindi di progettare le entità in modo OO, le tabelle del db a me non interessano (che le definisca l'ORM) Capito che cerco? Perchè è già passato qualcun'altro prima a chiedermi perchè non mi piacesse Hibernate
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
02-11-2009, 14:30 | #14 | ||
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3963
|
Quote:
Quote:
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek |
||
02-11-2009, 14:33 | #15 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4400
|
Quote:
Codice:
CREATE TABLE person ( id INTEGER AUTO_INCREMENT NOT NULL, firstName VARCHAR(255), lastName VARCHAR(255), PRIMARY KEY (id) ); Codice:
public interface Person extends Entity { public String getFirstName(); public void setFirstName(String name); public String getLastName(); public void setLastName(String name); } ...ciao Andrea... |
|
02-11-2009, 14:34 | #16 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ma figurati, sei sempre il benvenuto
Però ho colto al balzo l'occasione per ripetere i requisiti di quel che cerco, così chi incappa nel thread non rischia di capire "pan per polenta" e confondersi.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
02-11-2009, 14:40 | #17 | ||
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Evidentemente quando esegui un save() della tua entità, se è una nuova nel database viene generato un nuovo record e un nuovo valore per la primary key, se invece stai facendo il save() di un'entità recuperata già presente, farà solo l'UPDATE. Non so dirti altro: devo prima testarlo. Ma se hai dubbi postrsti provarlo direttamente e poi farci sapere Quote:
In tal caso, man mano che provo gli ORM, posso postare pure io le mie impressioni; potrebbe venirne fuori un thread utile.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
||
02-11-2009, 14:54 | #18 | |
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4400
|
Quote:
Codice:
java.sql.SQLException: Unknown column 'id' in 'field list' at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666) at com.mysql.jdbc.Connection.execSQL(Connection.java:2994) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:936) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1030) at net.java.ao.EntityManager.find(EntityManager.java:682) at net.java.ao.EntityManager.find(EntityManager.java:607) at net.java.ao.EntityManager.find(EntityManager.java:555) at it.ally.activeobject.ActiveObjectTest.main(ActiveObjectTest.java:27) ...ciao Andrea... |
|
02-11-2009, 14:59 | #19 |
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22459
|
sarebbe molto molto interessante visto e considerato che mi trovo molto spesso nella condizione di realizzare piccoli/piccolissimi gestionali, in cui ogni un orm alla topLink sono veramente troppo
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
02-11-2009, 15:58 | #20 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Attenzione: non è un ORM, ma un "Prevalent system": in pratica tiene in memoria gli oggetti business e tutte le transazioni vengono loggate per tenere aggiornato lo stato del sistema ai successivi riavvii. Io non l'ho considerato perchè il progetto hostato su dev.java.net non viene più aggiornato da 21 mesi... Però l'autore di space4j ha preso l'idea da Prevayler Prova a darci un occhio: promette libertà completa da SQL, tabelle e database engine, tutto in una botta (lo valuterò anche io)
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 02-11-2009 alle 16:01. |
|
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:42.