如何从ConnectionPool获取OObjectDatabaseTx?

时间:2016-03-22 03:24:16

标签: orientdb

根据OrientDB官方文档,我应该使用以下代码创建带有Object API的连接池。

*.so

但是,我发现OObjectDatabasePool类已被弃用,建议使用 com.orientechnologies.orient.core.db.OPartitionedDatabasePool

但是这样,我怎样才能获得OObjectDatabaseTx对象?那是因为OPartitionedDatabasePool.acquire()只能返回ODatabaseDocumentTx对象。

希望有人知道如何解决它。

由于

1 个答案:

答案 0 :(得分:2)

使用此代码,您可以获得"对象连接到"然后进行查询等。

获取文档数据库

String remote = "remote:localhost/";
    String nameDB = "domain"; 
    String url = remote + nameDB;
    OPartitionedDatabasePool pool = new OPartitionedDatabasePool(url, "admin", "admin");
    ODatabaseDocumentTx db = pool.acquire();

    //use example 
    List<ODocument> resultset = db.query(new OSQLSynchQuery<Object>("select from ORole"));

    for(ODocument doc:resultset) {
        System.out.println(doc);
    }   
    db.close();

获取对象数据库

String remote = "remote:localhost/";
    String nameDB = "TestPartitioned2"; 
    String url = remote + nameDB;

    OServerAdmin serverAdmin = new OServerAdmin(url).connect("root", "root");
    serverAdmin.createDatabase(nameDB, "object", "plocal");
    System.out.println(" Database '"+nameDB +"' created!..");

    OPartitionedDatabasePool pool = new OPartitionedDatabasePool(url, "admin", "admin");

    //object
    OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire());

    db.getEntityManager().registerEntityClass(Person.class);
    Person personA = db.newInstance(Person.class);
    personA.setName("tennantA");
    db.save(personA);
    db.close();