ventajas tutorial persistencia mapeo espaƱol ejemplo desventajas datos java orm activerecord persistence active-objects

java - tutorial - orm ventajas y desventajas



Experiencias con objetos activos ORM para Java? (4)

Tenga cuidado de no adentrarse en el "síndrome de la bala de plata" ... Acabo de oír a los desarrolladores decir "convención sobre la configuración" y pensar que es algo grandioso ...

Daniel Spiewak es un programador sólido, he aprendido mucho de su blog, pero esta es una API bastante simple. Es decir, no esperes mucha experiencia con el uso de producción, trabajando en un entorno de alta carga, etc. Pero a veces, todo lo que necesitas es simple, y bueno, hay otros proyectos, como Databinder, que se integran con Active Objects. (Wicket + Databinder es un framework web bastante bueno y liviano para Java).

Pero, por ejemplo, me mantendría alejado de un marco de persistencia como este si estuviera haciendo un montón de procesamiento por lotes. Principalmente, porque quiero:

  1. Objetos inmutables por defecto, que naturalmente fluye en el procesamiento de subprocesos múltiples, porque obliga a las personas a un tipo de paradigma "eliminar / crear nuevo" en lugar de "actualizar", lo que ahorra mucho uso de disco en muchos DB.
  2. Acceso DB que considera simplificar IO mediante el uso de comandos especializados como COPY

He resuelto muchos problemas de rendimiento de DB simplemente escribiendo código SQL directo, reemplazando el uso de un ORM que no era adecuado para la tarea.

Estoy buscando ORMs para Java y Active Objects me llamó la atención. Aparentemente, fue inspirado por ActiveRecord de Rails . Basado en lo que he leído, este enfoque parece resolver muchos problemas con los ORM de Java existentes adoptando las convenciones sobre la configuración.

¿Cuál ha sido tu experiencia con eso?


Active Objects está en desarrollo activo en este momento, gracias en parte a que Atlassian lo recogió como un motor de persistencia de datos de plugins para usar con su suite de software empresarial.

El proyecto de Objetos activos ahora se encuentra en http://java.net/projects/activeobjects/pages/Home

El complemento de Atlassian que usa objetos activos se rastrea en https://studio.atlassian.com/browse/AO

En particular, tenga en cuenta que Atlassian acaba de comenzar a compilar la documentación para Active Objects Library, en https://developer.atlassian.com/display/AO/Active+Objects

El alojamiento del código se está migrando a BitBucket y el SCM de svn a mercurial. Mire bitbucket.org/activeobjects/ para el progreso en ese frente.


Aquí algunas citas de why-another-orm.txt incluidas en ActiveObjects-core: ActiveObjects está diseñado desde cero para que sea lo más fácil de usar posible, con un mínimo de configuración ... Hay una tendencia creciente en el industria hacia "convención sobre configuración". De hecho, ActiveObjects se esfuerza tanto por ser un marco de persistencia simple y fácil de usar que algunas funciones (como las transacciones distribuidas) simplemente se han omitido. El razonamiento detrás de esto es que el 99% de los casos de uso no requieren medidas tan extremas. Si su proyecto requiere un comportamiento tan complejo dentro de su ORM, debe utilizar Hibernate. Es tan simple como eso. ActiveObjects no pretende suplantar a Hibernate. Por el contrario, su objetivo es ser una alternativa más fácil y ligera para los muchos escenarios comunes que no requieren todo el increíble poder de Hibernate. En resumen, ActiveObjects intenta hacer que el desarrollo de bases de datos sea simple y divertido nuevamente.

Considere compañías como Atlassian usando ActiveObjects en JIRA.

Aquí hay un ejemplo del uso de ActiveObjects:

Repositorios:

https://maven2-repository.dev.java.net/

Use las siguientes dependencias:

<dependency> <groupId>net.java.dev.activeobjects</groupId> <artifactId>activeobjects</artifactId> <version>0.8.2</version> </dependency>

Crea los siguientes archivos:

Entity.java

import net.java.ao.RawEntity; import net.java.ao.schema.AutoIncrement; import net.java.ao.schema.NotNull; import net.java.ao.schema.PrimaryKey; public interface Entity extends RawEntity<Integer>{ @AutoIncrement @NotNull @PrimaryKey("id") Integer getExportId(); }

TestAO.java

import net.java.ao.Preload; import java.sql.Timestamp; @Preload public interface TestAO extends Entity { String getFirstName(); void setFirstName(String firstName); String getLastName(); void setLastName(String lastName); Timestamp getUpdateTimestamp(); void setUpdateTimestamp(Timestamp updateTimestamp); }

Test.java

EntityManager entityManager = EntityManager("jdbc:mysql://localhost:3306/test","test","test"); ao.migrate(TestAO.class); TestAO testAO = ao.create(TestAO.class); testAO.setFirstName("firstName"); testAO.setLastName("lastName"); testAO.save();


DESCARGO DE RESPONSABILIDAD: soy el desarrollador principal que trabaja en un proyecto llamado ActiveJDBC que comparte algunos objetivos de diseño con ActiveRecord y está activamente en desarrollo:

http://javalite.io