java - ¿Alternativa ligera a Hibernate?
database sqlite (14)
Tengo un programa java de usuario único que me gustaría tener datos almacenados en una base de datos liviana como Derby o Sqlite. Me gustaría utilizar una capa de abstracción de datos en mi programa. Hibernate parece requerir mucha configuración y es excesivo para lo que necesito. ¿Cuáles son alternativas ligeras a Hibernate?
El marco ORMAN también es bueno. https://github.com/ahmetalpbalkan/orman
Documentación: https://github.com/ahmetalpbalkan/orman/wiki
Comparación: https://github.com/ahmetalpbalkan/orman/wiki/Why-orman-is-better-than-other-orms-for-you%3F
Es posible que desee echar un vistazo a prevayler (en sourceforge). Un enfoque de persistencia algo más ligero. ¿O estabas pensando en hacer reportes contra el DB?
Hibernate requiere configuración próxima a cero si usa anotaciones. ¡Incluso puede descubrir automáticamente frijoles mapeados en el classpath! No veo ninguna alternativa desde el punto de vista de la simplicidad y el poder.
También puede exponerse como JPA, que es (en mi humilde opinión) aún más simple.
Kiteframework es también un framework orm muy ligero. Proporciona casi todas las operaciones de DB con configuraciones mínimas.
http://deipakgarg.github.com/Kite-ORM/
Divulgación: soy el autor de este proyecto
Mi biblioteca ORMLite es una de esas alternativas. Es compatible con MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB y Sqlite, y se puede extender fácilmente a otros. Utiliza anotaciones para configurar clases, buena compatibilidad con Spring, generador de consultas flexible, etc.
Podría llegar un poco tarde a la fiesta, pero ActiveJDBC en 2010, que es una implementación ORM del patrón ActiveRecord, es más de 10 veces más ligero que Hibernate en dependencias, al menos dos veces más rápido en tiempo de ejecución y no requiere configuración o anotaciones
Puedes echar un vistazo a Ebean ORM . - Sin sesiones - la carga diferida solo funciona - API más simple para usar y aprender.
Puedo proponer apache empire-db. http://incubator.apache.org/empire-db/
Apache Empire-db es un componente de persistencia de datos relacionales de código abierto que permite la definición de consultas dinámicas independientes del proveedor de bases de datos, así como la recuperación y actualización de datos segura y simple. Comparado con la mayoría de las otras soluciones, como las implementaciones Hibernate, TopLink, iBATIS o JPA, Empire-db toma un enfoque considerablemente diferente, con un enfoque especial en seguridad en tiempo de compilación , redundancias reducidas y productividad mejorada del desarrollador.
Un ejemplo:
// Define the query
DBCommand cmd = db.createCommand();
DBColumnExpr EMPLOYEE_FULLNAME= db.EMPLOYEES.LASTNAME.append(", ")
.append(db.EMPLOYEES.FIRSTNAME).as("FULL_NAME");
// Select required columns
cmd.select(db.EMPLOYEES.EMPLOYEE_ID, EMPLOYEE_FULLNAME);
cmd.select(db.EMPLOYEES.GENDER, db.EMPLOYEES.PHONE_NUMBER);
cmd.select(db.DEPARTMENTS.NAME.as("DEPARTMENT"));
cmd.select(db.DEPARTMENTS.BUSINESS_UNIT);
// Set Joins
cmd.join(db.EMPLOYEES.DEPARTMENT_ID, db.DEPARTMENTS.DEPARTMENT_ID);
// Set contraints and order
cmd.where(EMP.LASTNAME.length().isGreaterThan(0));
cmd.orderBy(EMP.LASTNAME);;
Si el uso de una base de datos relacional no es obligatoria, pruebe db4o.
Todavía requiere configuración XML, pero eche un vistazo a MyBatis (anteriormente iBatis) .
Cayenne me ha servido bien. Relativamente fácil de entender y ponerlo en funcionamiento. Encuentro la parte de ingeniería inversa particularmente encantadora. La configuración se puede hacer con una GUI.
Apache Commons DBUtils toma gran parte de la rutina repetitiva de la programación de JDBC. Requiere poca configuración y es fácil de aprender. No es un marco ORM (en la forma en que Hibernate y otros marcos mencionados aquí) pero automatiza la asignación de columnas SELECT a los campos miembros de Java, así como otras tareas de programación JDBC repetitivas. Sin duda es liviano.
sormula como alternativa a los ORM pesados. Está preparado para CRUD, es compatible con POJO, es fácil de usar, configurar y comprender. El uso de configuración cero es posible. www.sormula.org
jOOQ se envía con un DSL fluido que simula SQL directamente en Java como un efecto colateral para sus objetivos principales que son:
- Generación de código fuente
- Soporte completo para SQL estándar, incluidas las características del lenguaje SQL, como UNION, SELECT anidados, todos los tipos de JOIN, aliasing (por ejemplo, para autocombinaciones), etc.
- Amplia compatibilidad con SQL no estándar, incluidos UDT, procedimientos almacenados, funciones específicas del proveedor, etc.
Lea acerca de jOOQ en este artículo: http://java.dzone.com/announcements/simple-and-intuitive-approach , o visite el sitio web directamente: http://www.jooq.org
(Descargo de responsabilidad, trabajo para la compañía detrás de jOOQ)