Search

2.3. Caching and Retrieving Data

download PDF
Next, lets use the Cache API to access a Node in the cache and then do some simple reads and writes to that node.
   // Let's get a hold of the root node.
   Node rootNode = cache.getRoot();

   // Remember, JBoss Cache stores data in a tree structure.
   // All nodes in the tree structure are identified by Fqn objects.
   Fqn peterGriffinFqn = Fqn.fromString("/griffin/peter");

   // Create a new Node
   Node peterGriffin = rootNode.addChild(peterGriffinFqn);

   // let's store some data in the node
   peterGriffin.put("isCartoonCharacter", Boolean.TRUE);
   peterGriffin.put("favoriteDrink", new Beer());

   // some tests (just assume this code is in a JUnit test case)
   assertTrue(peterGriffin.get("isCartoonCharacter"));
   assertEquals(peterGriffinFqn, peterGriffin.getFqn());
   assertTrue(rootNode.hasChild(peterGriffinFqn));

   Set keys = new HashSet();
   keys.add("isCartoonCharacter");
   keys.add("favoriteDrink");

   assertEquals(keys, peterGriffin.getKeys());

   // let's remove some data from the node
   peterGriffin.remove("favoriteDrink");

   assertNull(peterGriffin.get("favoriteDrink");

   // let's remove the node altogether
   rootNode.removeChild(peterGriffinFqn);

   assertFalse(rootNode.hasChild(peterGriffinFqn));
The Cache interface also exposes put/get/remove operations that take an Section 2.4, “ The Fqn Class ” as an argument, for convenience:
   Fqn peterGriffinFqn = Fqn.fromString("/griffin/peter");

   cache.put(peterGriffinFqn, "isCartoonCharacter", Boolean.TRUE);
   cache.put(peterGriffinFqn, "favoriteDrink", new Beer());

   assertTrue(peterGriffin.get(peterGriffinFqn, "isCartoonCharacter"));
   assertTrue(cache.getRootNode().hasChild(peterGriffinFqn));

   cache.remove(peterGriffinFqn, "favoriteDrink");

   assertNull(cache.get(peterGriffinFqn, "favoriteDrink");

   cache.removeNode(peterGriffinFqn);

   assertFalse(cache.getRootNode().hasChild(peterGriffinFqn));

2.3.1. Organizing Your Data and Using the Node Structure

A Node should be viewed as a named logical grouping of data. A node should be used to contain data for a single data record, for example information about a particular person or account. It should be kept in mind that all aspects of the cache - locking, cache loading, replication and eviction - happen on a per-node basis. As such, anything grouped together by being stored in a single node will be treated as a single atomic unit.
Red Hat logoGithubRedditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat Documentation

We help Red Hat users innovate and achieve their goals with our products and services with content they can trust.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2024 Red Hat, Inc.