Skip to content

3 ObjectDB

Introducción

ObjectDB es un administrador de sistemas de base de datos orientada a objetos (ODBMS), de software propietario, pero que ofrece una versión gratuita limitada para su estudio.

Una de las ventajas de este sistema es que ofrece JPA como interfaz para el programador y dispone de un entorno gráfico para consultar y actualizar los datos. Este entorno gráfico, admite la realización de consultas con JPQL.

Proyecto ObjectDB

Para comenzar, configuramos el pom.xml de la siguiente manera:

<!-- ... -->
    <repositories>
        <repository>
            <id>objectdb</id>
            <name>ObjectDB Repository</name>
            <url>https://m2.objectdb.com</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.objectdb</groupId>
            <artifactId>objectdb</artifactId>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>javax.persistence</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
            <version>1.1</version>
        </dependency>
    </dependencies>
<!-- ... -->

Creamos nuestra clase POJO:

@Entity
public class Point implements Serializable {
    @Id @GeneratedValue
    private long id;

    private int x;
    private int y;

    public Point(){}
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public long getId() {
        return id;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    @Override
    public String toString() {
        return "Point{" +
                "id=" + id +
                ", x=" + x +
                ", y=" + y +
                '}';
    }
}

Y nuestro main:

public class Main {
    public void show() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("p2.odb");
        EntityManager em = emf.createEntityManager();

        // Guardar punto
        em.getTransaction().begin();
        em.persist(new Point(10, 10));
        em.getTransaction().commit();

        // Query
        Query q = em.createQuery("SELECT p FROM Point p", Point.class);
        System.out.println(q.getResultList());
    }

    public static void main(String[] args) {
        new Main().show();
    }
}

Como se puede observar no ha sido necesario crear un archivo de configuración persistence.xml, ya que no necesito decirle al proveedor la relación de clases. Únicamente indico el fichero odb donde se almacenará los datos.