11Usando Objectify com VRaptor
por Otávio Scherer Garcia
Para trabalhar de forma simples no VRaptor com a Objectify é necessário criar uma classe que inicie a instância da ObjectifyFactory. Como precisamos apenas de uma única instância esta classe pode possuir escopo de aplicação:
@Component
@ApplicationScoped
public class ObjectifyFactoryCreator
implements ComponentFactory<ObjectifyFactory> {
private final ObjectifyFactory instance = new ObjectifyFactory();
@PostConstruct
public void create() {
instance.register(MyFirstEntity.class);
instance.register(MySecondEntity.class);
}
public ObjectifyFactory getInstance() {
return instance;
}
}
Após criamos a classe que vai ser responsável por criar as intâncias de Objectify. Como precisamos de uma única instância para cada requisição, o escopo deste componente será request.
@Component
@RequestScoped
public class ObjectifyCreator
implements ComponentFactory<Objectify> {
private final ObjectifyFactory factory;
private Objectify ofy;
public ObjectifyCreator(ObjectifyFactory factory) {
this.factory = factory;
}
@PostConstruct
public void create() {
ofy = factory.begin();
}
public Objectify getInstance() {
return ofy;
}
}
Para utilizar a Objectify basta injetá-la no construtor conforme o exemplo abaixo:
public class MyController {
private final Objectify ofy;
public MyController(Objectify ofy) {
this.ofy = ofy;
}
public void anything() {
ofy.get(new Key<MyFirstEntity>(MyFirstEntity.class, 1L));
}
}