您的位置:首页 > 编程语言

公开SNS社区即时找朋友链的源代码和部署方案(续七)

2012-04-23 00:00 99 查看
Versant数据库的对象查询

Versant数据库可以支持SQL查询和NOSQL查询两种模式,以下为在查到第一个目标对象,之后采用NOSQL方式,自动执行朋友圈子遍历的例子:

VQLQuery q = new VQLQuery(

session,

DistributedDatabaseManager.getInstance().HPC_DEMO_NETWORK_NAME,

"select selfoid from com.versant.domain.Person where firstName='AAF1' and lastName='AAL1'");

//"select * from com.versant.domain.Person");

System.out.println("About to execute query, and load root object.");

VEnumeration results = q.execute();

// 创建已经走过的朋友路径,避免回环

System.out

.println("--------------------------------------------------------------------------");

long middleTime = System.currentTimeMillis();

HashSet<Person> friendSet = new HashSet<Person>();

if (results.hasMoreElements()) {

Person person = (Person) results.nextElement();

friendSet.add(person);

System.out.println("Start Person found:" + person.getFirstName()

+ "/" + person.getLastName()

+ ", about to print friend path.");

Iterator ite = person.getFriends().iterator();

System.out.print("<<< -> " + person.getFirstName() + "/"

+ person.getLastName());

while (ite.hasNext()) {

Person aFriend = (Person) ite.next();

if (!inFriendCircle(aFriend, friendSet)) {

System.out.print("--> " + aFriend.getFirstName() + "/"

+ aFriend.getLastName());

printFriendPath("--> ", aFriend, friendSet);

}

}

System.out.println(" >>>");

} else {

System.out.println("No root person found.");

}

long endTime = System.currentTimeMillis();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: