
#Assuming the table: CREATE TABLE FOO (ID VARCHAR(32) PRIMARY KEY, DESCRIPTION VARCHAR(1000))

#Require the library for your DBD driver
  require 'highcrest/persistence/oci8'
    ==>true

#Declare a persistent class
  class Foo
    include Highcrest::Persistence
    attr_accessor :id, :description
  end
    ==>nil

#Create and insert a new object with generated key
  begin
    foo = Foo.new
    foo.description = 'I am a Foo'
    foo.replace!
    Foo.dbh.commit
    foo
  rescue Exception => ex
    Foo.dbh.rollback
    raise ex
  end
    ==>#<Foo:0x31ad5a8 @description="I am a Foo", @id=105681042.0, @optimistic_values={"ID"=>105681042.0, "DESCRIPTION"=>"I am a Foo"}>

#Create and insert a new object with assigned key
  begin
    foo2 = Foo.new
    foo2.id = 'key'
    foo2.description = 'I am a Foo'
    foo2.insert!
    Foo.dbh.commit
    foo2
  rescue Exception => ex
    Foo.dbh.rollback
    raise ex
  end
    ==>#<Foo:0x31a1d40 @description="I am a Foo", @id="key", @optimistic_values={"ID"=>"key", "DESCRIPTION"=>"I am a Foo"}>

#Retrieve and update existing object
  begin
    foo2 = Foo.read 'key'
    foo2.description = 'I am a Foo too'
    foo2.replace!
    Foo.dbh.commit
    foo
  rescue Exception => ex
    Foo.dbh.rollback
    raise ex
  end
    ==>#<Foo:0x31ad5a8 @description="I am a Foo", @id=105681042.0, @optimistic_values={"ID"=>105681042.0, "DESCRIPTION"=>"I am a Foo"}>

#Delete an object
  begin
    foo.delete!
    Foo.dbh.commit
    foo
  rescue Exception => ex
    Foo.dbh.rollback
    raise ex
  end
    ==>#<Foo:0x31ad5a8 @description="I am a Foo", @id=105681042.0, @optimistic_values=nil>

#Search for lightweight DBI rows with partial match
  begin
    rows = Foo.search 'description'=>'I am a Foo'
  rescue Exception => ex
    Foo.dbh.rollback
    raise ex
  end
    ==>[["key", "I am a Foo too"]]
