Hi
How can I save my pojo class as vertex in Graph API. (I know, how to do in
object and from command operations) looking only from Graph API.
*public* *class* *Customer* *implements* Serializable {
@OId
*private* String rid;
@OVersion
*private* Long version;
*private* String firstName;
*private* String lastName;
}
I want how directly I can save this pojo ?
I know this also.
OrientGraph graph = new OrientGraph("remote:localhost/test", "admin",
"admin");
graph.createVertexType("Customer");
Vertex cust = graph.addVertex("class:Customer");
cust.setProperty("firstName", "John");
cust.setProperty("lastName", "Smith");
is there any API that directly save pojo as vertex. Pls let me know
On Wednesday, 22 May 2013 14:04:38 UTC+5:30, Lvc@ wrote:
>
> TinkerPop Frames: https://github.com/tinkerpop/frames/wiki
>
> Lvc@
>
>
>
> On 22 May 2013 07:17, Ranqi Zhu <[email protected] <javascript:>> wrote:
>
>> What is Blueprints' similar API?
>>
>>
>> On Saturday, June 30, 2012 7:40:22 PM UTC-4, Lvc@ wrote:
>>
>>> Hi,
>>> you could create your vertex and edge POJOs and this is what we did 1
>>> years ago but today that API is deprecated because:
>>>
>>> - users need speed avoiding the beauty of having just some POJOs
>>> - Blueprints already provides such similar API
>>>
>>> Lvc@
>>>
>>> On 26 June 2012 20:38, Mich Geni <[email protected]> wrote:
>>>
>>>>
>>>> Or put it more simple:
>>>>
>>>> Can we add Object (POJOs) mapping to Graph DB (OGraphDatabase) API?
>>>>
>>>> The OGraphDatabase is fast and light. Just adding one more layer on
>>>> top of it (like Frames on top of Gremlin and Blueprints) for object
>>>> mapping
>>>> and manipulation in native way, will make things much convenient.
>>>>
>>>> For example, the blind way as used by OGraphDatabase.
>>>> createVertex().field() can be taken over by Java types and business
>>>> logic constraints etc.
>>>>
>>>> And that a Course -> assigned-to -> Student kind of things can be done
>>>> conveniently.
>>>>
>>>>
>>>> Regards.
>>>>
>>>>
>>>> On Monday, June 25, 2012 2:04:16 PM UTC+5, Mich Geni wrote:
>>>>
>>>>>
>>>>> Sorry, I didn't mention version. I am using svn trunk r5926.
>>>>>
>>>>>
>>>>> On Monday, June 25, 2012 1:31:03 PM UTC+5, Mich Geni wrote:
>>>>>
>>>>>>
>>>>>> hi,
>>>>>>
>>>>>> OrientDB provides a very rich API and query language to do a variety
>>>>>> of things we can think as a DB.
>>>>>>
>>>>>> But I see a small effort needs to be done to use it in a more
>>>>>> powerful and convenient way. e.g. use Java native classes (POJOs) as
>>>>>> first
>>>>>> class Documents and also Vertices and Edges of Graph.
>>>>>>
>>>>>> I was doing a small test to do this. Kindly consider the code below:
>>>>>>
>>>>>> OObjectDatabaseTx db = OObjectDatabasePool.global().a
>>>>>> cquire("remote:localhost:2424/graphtest1", "admin", "admin");
>>>>>> db.getEntityManager().registerEntityClass(Profile.class);
>>>>>> db.getEntityManager().registerEntityClass(Knows.class);
>>>>>>
>>>>>> OGraphDatabase graph = OGraphDatabasePool.global().ac
>>>>>> quire("remote:localhost:2424/graphtest1", "admin", "admin");
>>>>>>
>>>>>> try {
>>>>>> db.begin(TXTYPE.OPTIMISTIC);
>>>>>>
>>>>>> // One person's profile
>>>>>> Profile suan = db.newInstance(Profile.class);
>>>>>> suan.setName("Suan Jua");
>>>>>> suan.setLanguage("en");
>>>>>>
>>>>>> suan.setEmail("[email protected]");
>>>>>>
>>>>>>
>>>>>> db.save(suan);
>>>>>>
>>>>>> // Another person's profile
>>>>>> Profile nikito = db.newInstance(Profile.class);
>>>>>> nikito.setName("Nikito Jamahona");
>>>>>> nikito.setLanguage("Japanese");
>>>>>>
>>>>>> nikito.setEmail("[email protected]");
>>>>>>
>>>>>>
>>>>>> db.save(nikito);
>>>>>>
>>>>>> // RID is temporary before a transaction is
>>>>>> committed.
>>>>>> //System.out.println("RID: " +
>>>>>> db.getRecordByUserObject(suan, false).getIdentity().toString());
>>>>>>
>>>>>> db.commit();
>>>>>>
>>>>>> // RID is actual after a transaction is committed.
>>>>>> System.out.println("RID: " + db.getRecordByUserObject
>>>>>> (suan, false).getIdentity().toString());
>>>>>> System.out.println(db.getRecordByUserObject(nikito,
>>>>>> false).toJSON());
>>>>>>
>>>>>> graph.begin(TXTYPE.OPTIMISTIC);
>>>>>>
>>>>>> //graph.createEdgeType("Knows");
>>>>>> ODocument e = graph.createEdge(db.getRecordB
>>>>>> yUserObject(suan, false).getIdentity(),
>>>>>> db.getRecordByUserObject(nikito, false).
>>>>>> getIdentity(), "Knows");
>>>>>> e = e.save();
>>>>>>
>>>>>> graph.commit();
>>>>>>
>>>>>> System.out.println("-----------: " + e.getIdentity
>>>>>> ());
>>>>>>
>>>>>> // Method 1:
>>>>>> List<Knows> suanKnowsnikitoList = db.query(new
>>>>>> OSQLSynchQuery<Knows>("select from " + e.getIdentity().toString()));
>>>>>>
>>>>>> Knows suanKnowsnikito = suanKnowsnikitoList.get(0);
>>>>>>
>>>>>> suanKnowsnikito.setKnowHow("peers");
>>>>>>
>>>>>> Calendar cal = Calendar.getInstance();
>>>>>> cal.set(Integer.parseInt("2010"), Integer.parseInt(
>>>>>> "06"), Integer.parseInt("21"));
>>>>>> suanKnowsnikito.setSince(cal.getTime());
>>>>>>
>>>>>> db.save(suanKnowsnikito);
>>>>>>
>>>>>> System.out.println("-----------: pojo= " +
>>>>>> suanKnowsnikito.getKnowHow());
>>>>>>
>>>>>> // Method 2:
>>>>>> Object o = db.getUserObjectByRecord(e, null);
>>>>>>
>>>>>> Knows k = (Knows)o;
>>>>>>
>>>>>> k.setKnowHow("friend");
>>>>>>
>>>>>> db.save(k); // Without a transaction.
>>>>>>
>>>>>> System.out.println("-----------: pojo= " + k.
>>>>>> getKnowHow());
>>>>>>
>>>>>> } catch (Exception e) {
>>>>>> e.printStackTrace();
>>>>>> db.rollback();
>>>>>> } finally {
>>>>>> db.close();
>>>>>> graph.close();
>>>>>> }
>>>>>>
>>>>>>
>>>>>>
>>>>>> NOTE:
>>>>>>
>>>>>> - Many of the Exceptions have been ignored for easiness
>>>>>> - The graph.rollback was ignored for simplicity (as it is in the
>>>>>> same try-catch-finally block as the db)
>>>>>>
>>>>>>
>>>>>> My questions are:
>>>>>>
>>>>>>
>>>>>> 1. I want to use both OObjectDatabaseTx and OGraphDatabase
>>>>>> *together* and *interchangeably*. Any *recommended* and
>>>>>> *convenient* practices for this? Do we need some additional
>>>>>> convenience API in core, for using them together?
>>>>>> 2. Is there a way that the connection created by OObjectDatabaseTx is
>>>>>> also used by OGraphDatabase? Or the connection thread is provided
>>>>>> from a global pool, shared by both classes (in which case opening a
>>>>>> connection in instantiating both of them *does not* create a *new*
>>>>>> connection
>>>>>> for each)?
>>>>>> 3. Is there a method to do all the operations in a single
>>>>>> transaction, instead of two? (Currently a OGraphVertex object Person
>>>>>> is
>>>>>> created twice in DB in one transaction, then in another an OGraphEdge
>>>>>> object Knows is created and links of both Persons are updated in the
>>>>>> second
>>>>>> transaction) (SideNote: I did the inheritance of OGraphVertex ->
>>>>>> Person at DB level not in Java code. Since by default the
>>>>>> OGraphDatabase inserts everything in OGraphVertex object in DB.
>>>>>> To prevent this and store every POJO in its own class, I had to
>>>>>> inherit
>>>>>> every POJO class from OGraphVertex in DB)
>>>>>> 4. How to convert ODocument (returned by most of the methods of
>>>>>> OGraphDatabase) to POJOs (e.g. Knows in this specific case) and
>>>>>> vice versa?
>>>>>> 5. The statement Object o = db.getUserObjectByRecord(e, null);
>>>>>> gives runtime error: java.lang.NoSuchMethodError:
>>>>>> com.orientechnologies.orient.object.db.OObjectDatabaseTx.get
>>>>>> UserObjectByRecord(Lcom/orientechnologies/orient/core/db/
>>>>>> record/OIdentifiable;Ljava/lang/String;)Ljava/lang/Object; What
>>>>>> am I doing wrong here?
>>>>>> 6. I want to avoid the "Method 1" in favor of "Method 2". But I
>>>>>> can't do it because of point #5 above.
>>>>>> 7. What are the best practices you would like to share about the
>>>>>> code here and in implementing its intent? Which things can be cut to
>>>>>> short
>>>>>> as *convenient* and *efficient*? I hope this will be beneficial
>>>>>> for many people here.
>>>>>>
>>>>>> The list of questions is a bit long. But I am optimistic, that it
>>>>>> will answer a good set of common questions in this regard.
>>>>>>
>>>>>> Regards
>>>>>>
>>>>> --
>>>>
>>>>
>>>>
>>>>
>>>
>>> --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "OrientDB" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>>
>>
>
>
--
---
You received this message because you are subscribed to the Google Groups
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.