gembin

OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

HBase, Hadoop, ZooKeeper, Cassandra

Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

About Me

 

Try ORM for HBase with DataNucleus hbase plugin

 
Try ORM for HBase with DataNucleus HBase datastore

suppose you have read the last blog entry or you have already setup the env for hbase

1. download required jars datanucleus-core-2.0.0.m1.jar and datanucleus-hbase-1.0.1.jar
      hadoop-0.19.1-core.jar
      hbase-0.19.3.jar
      jdo2-api-2.3-eb.jar
      commons-logging-1.0.4.jar
      commons-cli-1.2.jar
     
     datanucleus.properties
     javax.jdo.option.ConnectionURL=hbase
     javax.jdo.option.ConnectionUserName=
     javax.jdo.option.ConnectionPassword= 


2. create a data model
     

package net.blogjava.gembin.hbase.model;

import java.util.Date;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;

@PersistenceCapable(identityType 
= IdentityType.APPLICATION)
public class Entry {

    @Persistent(primaryKey 
= "true", valueStrategy = IdGeneratorStrategy.UUIDHEX)
    
private String id;
    @Persistent
    
private String title;
    @Persistent
    
private String content;
    @Persistent
    
private String description;
    @Persistent
    
private Date postDate;

    
public String getId() {
        
return id;
    }

    
public void setId(String id) {
        
this.id = id;
    }

    
public String getTitle() {
        
return title;
    }

    
public void setTitle(String title) {
        
this.title = title;
    }

    
public String getContent() {
        
return content;
    }

    
public void setContent(String content) {
        
this.content = content;
    }

    
public String getDescription() {
        
return description;
    }

    
public void setDescription(String description) {
        
this.description = description;
    }

    
public Date getPostDate() {
        
return postDate;
    }

    
public void setPostDate(Date postDate) {
        
this.postDate = postDate;
    }

    
public String toString() {
        
return new StringBuilder()
        .append(
"{id=")
        .append(id 
+ "\n")
        .append(
"title=")
        .append(title 
+ "\n")
        .append(
"content=")
        .append(content 
+ "\n")
        .append(
"postDate=")
        .append(postDate 
+ "\n")
        .append(
"description=")
        .append(description 
+ "\n}")
        .toString();
    }
}


3. create persistence service

package net.blogjava.gembin.hbase.service;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.jdo.Extent;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.PersistenceManagerFactory;
import javax.jdo.Query;
import javax.jdo.Transaction;

import net.blogjava.gembin.hbase.model.Entry;

public class EntryPersistenceService {
    
private static final String DATANUCLEUS_PROPERTIES = "datanucleus.properties";
    
static PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory(DATANUCLEUS_PROPERTIES);
    
private PersistenceManager persistenceManager;

    
public EntryPersistenceService() {
        persistenceManager 
= pmf.getPersistenceManager();
    }
    
/**
     * 
     * 
@param entry
     
*/
    
public void saveEntry(Entry entry) {
        Transaction tx 
= persistenceManager.currentTransaction();
        
try {
            tx.begin();
            persistenceManager.makePersistent(entry);
            tx.commit();
        } 
finally {
            
if (tx.isActive()) {
                tx.rollback();
            }
        }
    }
    
    
/**
     * 
     * 
@param entry
     
*/
    
public void removeEntry(Entry entry){
        Transaction tx 
= persistenceManager.currentTransaction();
        
try {
            tx.begin();
            persistenceManager.deletePersistent(entry);
            tx.commit();
        } 
finally {
            
if (tx.isActive()) {
                tx.rollback();
            }
        }
    
    }
    
/**
     * 
     * 
@param id
     * 
@return
     
*/
    
public Entry getEntry(String id){
        Transaction tx 
= persistenceManager.currentTransaction();
        Entry e
=null;
        
try {
            tx.begin();
            e
= persistenceManager.getObjectById(Entry.class,id);
            tx.commit();
        } 
finally {
            
if (tx.isActive()) {
                tx.rollback();
            }
        }
        
return e;
    }
    
/**
     * 
     * 
@return
     
*/
    
public Collection<Entry> getEntries() {
        Collection
<Entry>entries = new ArrayList<Entry>();
        Transaction tx 
= persistenceManager.currentTransaction();
        
try {
            tx.begin();
            Extent
<Entry>extent = persistenceManager.getExtent(Entry.class);
            Query q 
= persistenceManager.newQuery(extent);
            Collection
<Entry> c = (Collection<Entry>) q.execute();
            
if (c == null)
                
return null;
            Iterator
<Entry> iter = c.iterator();
            
while (iter.hasNext()) {
                Entry p 
= iter.next();
                entries.add(p);
            }
            tx.commit();
        } 
finally {
            
if (tx.isActive()) {
                tx.rollback();
            }
        }
        
return entries;
    }
    
/**
     * 
     
*/
    
public void close() {
        
if (pmf != null && !pmf.isClosed())
            pmf.close();
        
if (persistenceManager != null && !persistenceManager.isClosed())
            persistenceManager.close();
    }
    
}



4. create test client

persist a Entry
        EntryPersistenceService mp=new EntryPersistenceService();
        Entry entry
=new Entry();
        entry.setTitle(
"first entry");
        entry.setPostDate(
new Date());
        entry.setDescription(
"it's first entry!!");
        entry.setContent(
"It's first content of this entry");
        mp.saveEntry(entry);


retrieve entries
        EntryPersistenceService mp=new EntryPersistenceService();
        Collection
<Entry> entries=mp.getEntries();
        Iterator
<Entry>it=entries.iterator();
        
while(it.hasNext()){
            System.out.println(it.next());
        }

output:
{id=4aea47a52328c7a0012328c7a0380000
title=first entry
content=It's first content of this entry
postDate=Mon Aug 17 22:34:14 CST 2009
description=it's first entry!!
}


 enjoy it!!!

how to setup hbase env: http://www.blogjava.net/gembin/archive/2009/08/16/291290.html

posted on 2009-08-17 23:33 gembin 阅读(2378) 评论(1)  编辑  收藏 所属分类: Databasehbase

评论

# re: Try ORM for HBase with DataNucleus hbase plugin 2009-08-18 09:51 99读书人

不错哦  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(6)

随笔分类(440)

随笔档案(378)

文章档案(6)

新闻档案(1)

相册

收藏夹(9)

Adobe

Android

AS3

Blog-Links

Build

Design Pattern

Eclipse

Favorite Links

Flickr

Game Dev

HBase

Identity Management

IT resources

JEE

Language

OpenID

OSGi

SOA

Version Control

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

free counters