public static void main(String[] args) throws IOException {

    DB db = DBMaker.newMemoryDB().make();
    //
    // TreeMap has build in support for lazily loaded values.
    // In that case each value are not stored inside node,
    // but in separate record.
    //
    // use DB.createTreeMap to create TreeMap with non-default parameters

    Map map = db.createTreeMap("name").valuesOutsideNodesEnable().make();
    map.put("key", "this string is loaded lazily with 'map.get(key)' ");

    //
    // Other option for lazily loaded record is to use Atomic.Var.
    // In this case you have singleton record with name.
    // As bonus you can update reference in thread-safe atomic manner.
    //
    Atomic.Var<String> record = db.createAtomicVar("lazyRecord", "aaa", db.getDefaultSerializer());

    record.set("some value");
    System.out.println(record.get());

    // Last option is to use low level Engine storage directly.
    // Each stored record gets assigned unique recid (record id),
    // which is latter used to get or update record.
    // Your code should store only recid as reference to object.
    // All MapDB collections are written this way.

    // insert new record
    long recid = db.getEngine().put("something", SerializerBase.STRING_NOSIZE);

    // load record
    String lazyString = db.getEngine().get(recid, SerializerBase.STRING_NOSIZE);

    // update record
    db.getEngine().update(recid, "new value", SerializerBase.STRING_NOSIZE);

    // I hope this example helped!
    db.close();
  }