Try ORM for HBase with DataNucleus hbase plugin

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

你可能感兴趣的:(Try ORM for HBase with DataNucleus hbase plugin)