I am using OrientDb 2.2 and the TinkerPop FramedGraph. I am using FramedGraph for the ease with which I interact with object models instead of doing setProperty("name", "bob") 
One thing that I dont understand with FramedGraph is why do I have interface DAO objects that cant be implemented? Due to the above constrained I have duplication of objects: tinkerpop DAO interface and model objects.
interface UserNode {
   private String firstName;
   private String lastName;
}
class User {
   private String firstName;
   private String lastName;
}
This arises major overheads when writing to and reading back large chunks of data.
List<User> fetchAllUsers() {
   Iterable<UserNode> userNodes = graph.query().vertices(UserNode.class);
   List<User> users = new ArrayList<>(); 
   for (UserNode userNode: userNodes) {
      User user = new User();
      user.setFirstName(userNode.getFirstName());
      user.setLastName(userNode.getLastName());
      users.add(user);
   }
}
Is there a way to avoid the above inefficiency?