Annotation based model factory for Java