Me gustaría guardar objetos persistentes en el sistema de archivos utilizando Hibernate sin la necesidad de una base de datos SQL.Es posible guardar objetos persistentes en el sistema de archivos
¿Esto es posible?
Me gustaría guardar objetos persistentes en el sistema de archivos utilizando Hibernate sin la necesidad de una base de datos SQL.Es posible guardar objetos persistentes en el sistema de archivos
¿Esto es posible?
Hibernate funciona en la parte superior de JDBC, por lo que lo único que necesita es un controlador JDBC y un dialecto Hibernate coincidente.
Sin embargo, JDBC es básicamente una abstracción de SQL, así que cualquier cosa que use se verá, caminará y graznará como una base de datos SQL; también podría usar uno y ahorrarse muchos dolores de cabeza. Además, cualquier solución de este tipo será comparable en tamaño y complejidad a las bases de datos ligeras Java como Derby.
Por supuesto, si no insiste absolutamente en el uso de Hibernate, hay muchas otras opciones.
¿Qué pasa con sqlite, que se acerca bastante a los datos persistentes en el sistema de archivos, aunque se hace como una base de datos SQL. –
@bjarkef: sí, pero está escrito en C, por lo que si quisiera usarlo en una aplicación Java, habría perdido la independencia de la plataforma (o tendría que incluir varias copias). –
@Michael Borgwardt: en realidad existen controladores JDBC para SQLite, e incluso hay un dialecto de Hibernate para él. Sin embargo, no se recomienda: la implementación es extremadamente lenta en comparación con otras bases de datos integradas. – parasietje
Por supuesto que esto es posible, sólo tiene que utilizar Archivo io características de Java, siguiendo los pasos son necesarios: -
java.util.Scanner
.Tenga en cuenta que su objeto debe implementar la interfaz Serializable
. See following link,
Creo que la idea detrás de la pregunta es hacerlo a través de Hibernate API. –
Lo he intentado recientemente en mi proyecto, pero de alguna manera no pude encontrar una solución para esto, así que tuve que usar mis conceptos básicos de core java. Hibernate admite lectura desde un archivo plano, pero aún no se admite la escritura de objetos en un archivo o no pude encontrar ninguno ... – aProgrammer
Estimados downvoters ... ¡se atreven a comentar! – aProgrammer
Parece que podría ser técnicamente posible si utiliza un controlador de texto sin formato JDBC; sin embargo, no he visto ninguno de código abierto que brinde acceso de escritura; el que encontré en sourceforge es de solo lectura.
También está Ashpool, que utiliza archivos XML: http://wiki.robrohan.com/Ashpool.html – greyfairer
No sé exactaly su necesidad, pero tal vez es uno de abajo:
1 - Si su necesidad es sólo huir de SQL, se puede utilizar una base de datos NoSQL.
Hibernate lo soporta a través de Hibernate OGM (http://www.hibernate.org/subprojects/ogm). Hay algunas bases de datos como Cassandra, MongoDB, CouchDB, Hadoop ... Tiene algunas sugerencias Here .
2 - Ahora, si no desea utilizar un servidor de base de datos (con un proceso de servicio ejecutándose siempre), puede utilizar Apache Derby. Es un DB al igual que cualquier otro SQL, pero no es necesario un servidor. Utiliza un archivo singular para guardar datos. Puede transportar fácilmente toda la base de datos con su programa.
Echa un vistazo: http://db.apache.org/derby/
3 - Si realmente quieres un archivo plano de texto, puedes hacerlo como dijo Michael Borgwardt. Pero no sé si Hibernate sería una buena idea en este caso.
Ya tiene un modelo de entidad, supongo que no desea perder esto ni las relaciones que contiene. Se dirige un modelo de entidad para que se traduzca a una base de datos relacional.
Hibernate y cualquier otro proveedor de JPA (EclipseLink) traducen este modelo de entidad a SQL. Usan un controlador JDBC para proporcionar una conexión a una base de datos SQL. Esto, debes quedarte también.
La pregunta correcta es: ¿alguien sabe embedded Java SQL database
, que se puede iniciar desde Java? Hay un montón de ellos, se menciona en este tema:
he utilizado HyperSQL en un proyecto de datos pequeños y Apache Derby para un proyecto con grandes bases de datos (2 GB y más) Apache Derby funciona mejor en estas enormes bases de datos.
Bueno, como la pregunta todavía está abierta y el OP dijo que está abierto a nuevos enfoques/sugerencias, aquí está el mío (un poco tarde, pero está bien).
¿Conoces Prevayler? Es una implementación Java Prevalence que mantiene todos tus objetos comerciales en RAM y mantiene instantáneas/registros de cambios en el sistema de archivos, de esta manera es extremadamente rápido y confiable, ya que si hay algún bloqueo, restaurará su último estado y volverá a aplicar cada cambio a eso.
Además, es muy fácil de instalar y ejecutar en su aplicación.
Suena realmente interesante gracias: D – Corvusoft
¿Quiere decir que no utiliza Hibernate en una base de datos SQL? – everton
@EvertonAgner OP parece querer usar la API de Hibernate para persistir en un sistema de archivos, no en una base de datos SQL. – mcfinnigan
Hibernate es fundamentalmente una herramienta de mapeo relacional de objetos. Si no quieres la parte relacional, ¿por qué quieres usar Hibernate? – skaffman