I'm using the supported PersistableAdapter to update attribute information. 
You need to checkout the object before updating the object. 
 
CREATE
PersistableAdapter obj = new PersistableAdapter("com.acme.AcmePart",null,null);
obj.load("name","number");
obj.set("name","my name");
obj.set("number","12345");
obj.persist();
 
10.1 Create with Folder information
LWCNormalizedObject obj = new LWCNormalizedObject("WCTYPE|wt.part.WTPart",null,null); 
obj.load("name","containerReference","folder");
obj.set("name", "TestPart");
obj.set("containerReference", "OR:wt.pdmlink.PDMLinkProduct:1234"");
obj.set("folder", "/Default/Design/");
obj.persist();
 
10.2 Create with Folder information
PersistableAdapter obj = new PersistableAdapter("WCTYPE|wt.part.WTPart",null,null);
obj.load("name","containerReference","folder");
obj.set("name", "TestPart");
obj.set("containerReference", "OR:wt.pdmlink.PDMLinkProduct:1234"");
obj.set("folder.id", "/Default/Design/");
obj.persist();
 
Retrieve
PersistableAdapter obj = new PersistableAdapter(my_persistable,null,null,null);
obj.load("name","number","booleanValue");
Object nameValue = obj.get("name");
Object numberValue = obj.get("number");
Boolean booleanValue = (Boolean) obj.get("booleanValue");
 
Retrieve Multi Value Attribute
Object value = obj.get(attributeName);
if (value instanceof Object[]) {
 Object values[] = (Object[]) value;

} else {
 objValue = value;
}
 
UPDATE
PersistableAdapter obj = new PersistableAdapter(my_persistable,null,Locale.US,new UpdateOperationIdentifier());
obj.load("attributeA","attribtueB");
obj.set("attributeA",new Boolean(true));
obj.set("attribtueB","PURPLE");
obj.apply();
...
PersistenceHelper.manager.modify(my_persistable);
