Base de datos en Java

Buenas,

Estoy aprendiendo Java y me gustaría saber como crear, conectar e ingresar datos en esta base de datos a partir de un programa en Java. Hay algún manual, tutorial, que explique bien como hacerlo?

Muchas gracias!
Quédate con la cara de este chino:

http://www.mkyong.com/tutorials/jdbc-tutorials/

En general busca información sobre Hibernate, que es un framework bastante común que simplifica todas las llamadas entre la aplicación Java y la BBDD, relacionando Beans (objetos simples que sólo tienen atributos y métodos getter y setter para acceder a esos atributos) y tablas de la base de datos.
Vale, revisaré esta información.

Muchas gracias!
Armin Tamzarian escribió:Quédate con la cara de este chino:

http://www.mkyong.com/tutorials/jdbc-tutorials/

En general busca información sobre Hibernate, que es un framework bastante común que simplifica todas las llamadas entre la aplicación Java y la BBDD, relacionando Beans (objetos simples que sólo tienen atributos y métodos getter y setter para acceder a esos atributos) y tablas de la base de datos.


Vas a liar al chaval si le pones un tuto de JDBC y luego le dices que busque de hibernate [+risas]

@drokz10 , la cosa es que hay múltiples formas de hacer lo que tu quieres.

1) La mas antigua, mas "a pelo" y quizas la mejor para empezar si simplemente estas cacharreando y no haciendo nada profesional, es JDBC directo. Con JDBC "a pelo" tu te abres manualmente una conexion contra la base de datos, haces tus selects y tus inserts y luego la cierras.

2) Como lo anterior es un infierno cuando empiezas con mil accesos concurrentes, la peña se ha picado frameworks que te simplifican un montonazo de cosas. Y uno de los mas usados es Hibernate (que por debajo usa JDBC pero tu te olvidas de eso). Lo malo es que configurarlo la primera vez no es tarea facil. Lo bueno es que te olvidas de gestionar el numero de conexiones abiertas, te olvidas de gran parte de los problemas relacionados con los commit y los rollbacks y otro monton de cosas que hay que tener en cuenta cuando montas un sistema de verdad.

3) Para rizar el rizo, Hibernate se usa normalmente junto con Spring, que es OTRO framework que te simplifica otro monton de historias pero que nuevamente es un follon configurar cuando llegas de novato.

Yo te diria que si estas empezando con Java empieces por JDBC normalito con los tutos que te han indicado. Y luego ya pases a spring-hibernate.

Si quieres una base de datos muy ligera y sencilla de montar en tu PC en plan cacharreo, te recomiendo Oracle Express. Los defensores del Open Source me odiaran por recomendarla, pero para empezar esta guay porque montarte unas tablas de ejemplo para cacharrear es puro "siguiente, siguiente, siguiente" sin necesidad de saber nada de bases de datos :)
http://www.oracle.com/technetwork/datab ... index.html
He estado ya metiendo codigo y la cosa ya funciona. Lo que me comentas al apartado 2 digamos que es como una clase que no hace falta estar todo el rato abriendo y cerrando no?

Es como los archivos en .txt que tienes que primero crear la variable y siempre hacer el tipico fichero.close();

Me ha servido mucho la informacion. Muchas gracias!
Yo no me metería a Hibernate sin controlar JDBC. Al menos no si quieres llegar a controlar Hibernate para un uso profesional, pudiendo entender lo que hace.
Como el compañero también te recomiendo Oracle Express como bbdd.

Para empezar lo normal es que uses JDBC que lo único que hace es enviar sentencias SQL a la base de datos.

Hibernate te permite trabajar con objetos en vez de con filas de base de datos. Para que funcione hay que crear entidades que relacionan tablas de bbdd con clases de Java. Todo esto está normalizado en la especificación JPA. Hibernate es una implementación de JPA. Hay muchos más frameworks que funcionan igual. Lo interesante es que puedes cambiar de uno a otro sin modificar tu programa.

Saludos
Hibernate es un framework (palabra que le encanta a todo el mundo porque framework es una palabra que vale para llamarle a casi cualquier cosa) orientado a cambiar el paradigma de programación de persistencia de datos sustituyendo el lanzar queries por guardar objetos, y que la generación de las queries (si, porque Hibernate lanza JDBC) se haga automáticamente.

Lo que ocurre es que claro, esa generación automática de queries se hace por magia negra y sólo los chamanes del África tropical la entienden. Y los pobres infelices que no saben de chamaneo sólo se rascan la calva pensando "oh, no funcionar".

Y bueno, yo que considero que controlo bastante de Hibernate y Spring te puedo decir que en Hibernate aplica el "sólo sé que no sé nada". Cuanto más sabes de Hibernate más te das cuenta lo inmensamente complejo que es. Y en Spring, mucho más.

Por cierto, si alguien te dice que con JDBC hay que gestionar accesos concurrentes y con Hibernate no hay que hacerlo, es porque nunca ha tenido la necesidad real de gestionarlos. De hecho, podría apostar a que nunca ha llegado a dominar mínimamente lo que es JDBC.

Otra cuestión. Hibernate implementa JPA. Pero te puedo decir que poca gente usa exclusivamente el API JPA de Hibernate porque es sustancialmente menos potente y menos flexible que el API propia de Hibernate.

Más cosas. Olvídate de Spring por el momento. Es más magia negra para entender todavía menos.

En resumen, como consejo, construye tus conocimientos desde los cimientos. Aprende JDBC. Aprende cómo lanzar queries, lo que es una transacción, una conexión, un commit y un rollback. Lo que son los niveles de aislamiento. Lo que es un pool de conexiones y cuales son sus parámetros de configuración más habituales. Y cuando lo tengas MUY claro, métete a aprender Hibernate. Y siempre con el hibernate.showSQL=true. Y si Hibernate no hace lo que tú quieres, aprende cómo cambiar el comportamiento por defecto de Hibernate. Porque Hibernate se equivoca. Y mucho.

Por cierto, en grandes sistemas ( de verdad ) basados en Hibernate, las consultas que requieren de rendimiento o de un gran nivel de control se escriben directamente en SQL pasándose por el forrete todo el mapeo objetorelacional.

Otro consejo. Para hacer pruebas de juguete tienes una opción mucho más sencilla. HSQL. Es una base de datos en memoria hecha en Java que se incluye con un jar en tu aplicación y que persiste la información en queries. O si quieres una BBDD al uso, vete a MySQL. Que no te mareen instalando Oracle (Express) y sus instalaciones de cientos de megas ( o gigas ) y sus disparatados consumos de memoria.
ummm y nadie habla de neodatis?

Yo la uso para mis desarrollos de java y por ahora no me ha dado ningún tipo de problemas, la uso sobre todo en dispositivos móviles, y por pruebas que se han hecho es más rápida que sqllite (y al igual que esta no necesita de un servidor)

Es una base de datos Orentado a Objeto con lo cual te ahorras todo el tema de sentencias sql y es mucho más intuitivo (si no has trabajado con sql) basicamente te creas una clase objeto con las propiedades (ejemplo clase producto con id, nombre, descripción , ect) te creas un objeto con los datos y lo añades a la base de datos con un simple add

La verdad es que no se porque no oigo más de esta bd para proyectos sencillos igual tiene algun tipo de error o problema que no conozco XD (y que no he encontrado todavia)
Es la primera vez que escucho neodatis.

Seguramente será porque en el mundo empresarial (sobre todo en programas de gestión) el modelo imperante es el relacional y no se suelen usar muchas bbdd orientadas a objetos.

Saludos.
Es lo que me suponia, pero no deja de parercerme curioso como se usa frameworks para trabajar de forma Objeto-relacional y sin embargo no usa (o se desarrolla más) una bd que directamente es Orientada a Objetos
Hombre... Pues hay NoSQL. Y está de moda. Como los datos grandes.
11 respuestas