style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

JPA vs JDBC

Hola que tal javamexico tiempo sin pasar por aqui :P, bueno ultitamente he estado metido en Java EE 6 y leyendo por hay me intereso el JPA en el cual ultimamente he migrado muchos de mis proyectos que anterior para comunicacion con la base de dats usaba JDBC, pero he notado en algunos de estos que el rendimiento ha aumentado pero mientras tanto en otros no se decrementa, a mi parecer JPA consume muchos mas recursos que JDBC pero es mucho mas simple trabajar con JPA ya que puedo manipular la base de datos como si fueran objetos. Que opinan ustedes es mejor JPA ó JDBC?

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de luxspes

Mejor... para que?

Que opinan ustedes es mejor JPA ó JDBC?

Mejor... para que? Las cosas no son mejores o peores en el vacio. Son mejores peores en relacion a una circunstancia:

Si tu aplicacion es tipo OLTP, interactiva, con un patron de utilizacion que se beneficiaria de cosas como el cache multi nivel de Hibernate, o la integracion RMI multi-capa de EclipseLink y tienes que poder instalarla en muchas bases de datos distintas, es mejor JPA.

Si por otro lado tu aplicacion va mas del lado OLAP, mostrando informacion solo lectura o disparando procesos batch pesados en el servidor, o si tu aplicacion es solo para correr sobre una based e datos en particular (la portabilidad "instantanea" no es necesaria) entonces es mejor JDBC.

En otras palabras.. depende.

Imagen de neko069

Bien podrías dar algún

Bien podrías dar algún ejemplo, mencionando algún proyecto que hayas migrado de JDBC a JPA y dar algún comentario acerca del incremento/decremento de rendimiento, como dice @luxspes todo es relativo, pero bien se pueden dar ejemplos concretos, como tus experiencias al respecto.

Opinión dividida

La opinión está dividida, muchos dicen que el rendimiento de consultas SQL + JDBC superior al de HIbernate o cualquier otro ORM, ya que los ORM se apoyan sobre JDBC (es decir, las conexiones y todo lo que manejas manualmente a "bajo" nivel lo hace el ORM)...Por otra parte cómo bien comenta @luxspes un ORM te permite o te ofrece algunas ventajas, qué quizás cuesten rendimiento, aunque claro que actualmente los ORM están pero que si optimizados.

Otra cosa es la productividad, francamente creo que es mucho más rápido tener algo cómo:

public static void saveCustormer(String name, String lastname, String address, int age){
----Customer customer = new Customer(name, lastname, address, age);
----if(customer.valid()){
--------customer.save() /*Qué este método save tu sepas que existe, más no lo tuviste que crear gracias al ORM ;)*/
----} else {
--------//Puedes enviar cómo respuesta una excepción, o
--------//un mensaje de: "Porfavor, ingresa los campos obligatorios"
----}
}

En lugar de que el método save sea algo cómo:

public void save(String name, String lastname, String address, int age){
----if(valid()){
--------Connection connection = ConexionUtil.getConnection(); /*Suponiendo que no queremos tener que crear la conexión cada rato.*/
--------PreparedStatement preparedStatement = connection.prepareStatement("INSERT INTO customer VALUES(0, ?, ?, ?, ?)");
--------preparedStatement.setString(1, this.name);
--------preparedStatement.setString(2, this.lastname);
--------preparedStatement.setString(3, this.address);
--------preparedStatement.setString(4, this.age);
--------preparedStatement.executeUpdate();
----}else{
--------//El mensaje de error bla bla bla
----}
}

Quizás el método save creado por el ORM contenga más cosas, sin embargo tu no lo tuviste que crear, lo que se traduce cómo ahorro de tiempo.

Y de nuevo citando a @luxspes: "En otras palabras.. depende"

mi experiencia con JPA

He trabajado con ambos métodos y me quedo con los ORM, uso JPA y me da un nivel de objetos muy bueno, trabajo con mayor velocidad y es más fácil el mantenimiento. Además el Servidor de aplicaciones maneja el acceso al la BD y no tengo que preocuparme por eso. Ahora estoy incursionando en jdeveloper y veo que ha subido un escalon más arriba en cuanto a los ORM.
saludos

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">