Jaiberdroid

Jaiberdroid es una librería de mapeo de objetos Java con tablas de base de datos (ORM) para aplicaciones Android que utilizan SQLite. ¿Esto qué quiere decir? Que se podrá trabajar con bases de datos abtrayéndonos del funcionamiento de la misma. Con Jaiberdroid tan sólo hay que definir lo que conocemos como objetos entidad y establecer unos pocos parámetros de configuración para comenzar a trabajar.

De momento está en una fase temprana de desarrollo, por lo que sólo existen las consultas genéricas. Podéis leer una guía rápida para iniciaros en el uso de la librería llamada: Jaiberdroid en 5 minutos.

Descarga directa

Mirrors


Ejemplo de uso

Una clase entidad tendría este formato:

@Table(name = "product")
public class Product {
  @Column(primary = true, nullable = false)
  private int _id;
  @Column(nullable = false, unique = true)
  private String name;
  @Column(nullable = false)
  private float price;
  @Column()
  private String description;
  ...
}

Como se puede observar, tan sólo tenemos que poner una etiqueta Table a nuestra clase, y luego etiquetas Column a cada atributo, además, lo más importante es tener métodos get y set de cada elemento. Ahora veamos como serán las clases Query:

public class ProductQuery extends GenericQuery<Product> {
  ...
}

En este caso es más sencillo. Con simplemente heredar de la clase GenericQuery, ya es posible realizar las consultas de creación y eliminación de tabla, obtención de todos los datos, obtención de filas por id, inserción y actualización de elementos, comprobación de que un elemento existe, obtención del número de filas de la tabla, borrado de uno y borrado de todos los elementos.

Finalmente, un ejemplo de su uso sería:

public class MainActivity extends Activity {
...
  // Inicializa la instancia de Jaiberdroid.
  JaiberdroidInstance.createInstance(this);
  JaiberdroidInstance.start();

  // Obtiene una consulta para product. En este ejemplo, y ya que no vamos a
  // incluir consultas nuevas, podríamos haber instanciado directamente la
  // clase genérica para utilizarla:
  // final GenericQuery<Product> query = new GenericQuery<Product>();
  final ProductQuery query = new ProductQuery();

  // Genera un producto a insertar en la base de datos.
  Product product = new Product();
  product.setName("Mi Book");
  product.setPrice(15.95);
  product.setDescription("This is my first book.");

  query.insert(product);

  // Obtiene todos los productos almacenados en base de datos.
  final List<Product> products = query.getAll();
  for (Product current : products) {
    ...
  }

  // Busca un producto, y si lo encuentra actualiza su precio.
  product = query.findByPk(oneId);
  if (null =! product) {
    product.setPrice(14.95);
    query.update(product);
  }

  // Elimina un producto.
  query.remove(otherId);

  // Detiene la instancia de Jaiberdroid.
  JaiberdroidInstance.stop();
...
}

Cambios versión 0.5 27/10/2013

  • Se ha corregido un problema que aparecía con los tipos de datos double y float.
  • Se ha incluido el uso de valores booleanos.
  • Se ha incluido el uso de valores Date.
  • Optimizaciones y mejoras de código.
  • Se ha suprimido la carga de valores por defecto cuando el campo es nulo.

Cambios versión 0.5 beta 27/05/2013

  • Configuración de depuración de Jaiberdroid y depuración de consultas.
  • Se añade la etiqueta de valor por defecto.
  • Corregido un problema al actualizar la base de datos.
  • Ejecución de consultas personalizadas (ver ejemplos).
  • Los métodos de actualización y eliminación devuelven el número de filas afectadas.
  • Corregido un problema en las consultas de eliminación.
  • Se añade la etiqueta de índice.
  • Mejora en el sistema de carga de configuración.

Enlaces