2012-03-12 20 views
12

¿Cuál puede ser la mejor solución para los programadores como http://vimeo.com/28885655Alternativas a hibernar

La gente que creó el video creen

  1. En muchos casos Hibernate es una exageración
  2. SQL básico es un buen lenguaje que hiberna abstrae a mucho

Escuché sobre algunas otras implementaciones de ORM como

me gustaría oír cómo se comparan y cuáles son las ventajas/desventajas de cada uno.

+0

¿Desea tener la solución ORM? – MJM

+0

Video muy gracioso :-) – assylias

+1

Quiero un orm ligero basado en sql –

Respuesta

5

Here puede encontrar una extensa lista de ORM de Java y soluciones de persistencia. No todos los enfoques Hibernate/JPA se aproximan, algunos de ellos son bastante fáciles de diseñar.

Por supuesto, hay soluciones que no figuran en ese sitio, es decir, Spring JDBC with templates, etc.. Y esta es mi elección personal para proyectos que requieren acceso JDBC rápido y fácil de construir y que ya están usando Spring.

En general, para mí, al menos, es un poco temprano para decir que Hibernate es malo y creció a lo grande. Sirve su propósito bastante bien, pero crecido para adaptarse a muchos zapatos. Mi opinión personal es que se mantendrá como está, pero las soluciones NoSQL probablemente darán lugar a una nueva generación de soluciones de mapeo de datos Java, como Spring Data. Es necesario crear un enfoque simple para interactuar con los datos de las aplicaciones, pero no creo que haya un consenso sobre cómo llegar ... todavía.

+0

Intenté hacer una comparación de los frameworks ORM livianos que no son JPA actualmente populares https://github.com/bwajtr/java-persistence-frameworks-comparison –

3

Si desea controlar el SQL utilizado y permanecer cerca de JDBC en general, puede interesarle MyBatis, que le permite escribir sus propias consultas y proporciona un marco para mapear "automáticamente" ResultSets a POJO basados ​​en XML- o metadatos basados ​​en anotaciones.

Un selecto se vería así en XML:

<select id="selectUsers" parameterType="int" resultType="my.User"> 
select id, username, password 
from users 
where id = #{id} 
</select> 

Esto se asigna a un usuario de esta manera:

<resultMap id="userResultMap" type="my.User"> 
    <id property="id" column="id" /> 
    <result property="username" column="user_name"/> 
    <result property="password" column="hashed_password"/> 
</resultMap> 

Con las propiedades son las propiedades del bean en el POJO My.User

5

El presentador es un buen ejemplo de que algunos marcos son demasiado complicados. El gran número de bibliotecas ORM parece ser un indicador de que una buena solución es difícil de alcanzar.

Github, bitbucket, source forge tienen cientos de proyectos ORM. Wikipedia tiene una buena lista también.

Inventé sormula como una alternativa ligera a frameworks complicados como JPA. Consulte sormula site para obtener una lista de características y ejemplos.

También contiene un paquete que implementa el patrón de registro activo para aquellos que les gusta ese enfoque, pero no es necesario.