Olá Guj's!
Estive pensando em uma possível arquitetura para usar ActiveRecord, mas quero que as classes que serão utilizadas na view não tenham acesso algum aos métodos de persistencia.
O camada de controle por exemplo seria mais ou menos assim:
public Team createTeam(Team team) {
TeamAr teamAr = TeamAr.valueOf(team);
teamAr.save();
return teamAr;
}
As classes Team e TeamAR seriam mais ou menos assim:
public class Team {
private Long id;
private String name;
private String trainer;
private Date foundationDate;
private Set<Player> players = new HashSet<Player>();
/* construtores */
/* getters and setters */
/* equals, hashcode and toString */
}
public abstract class TeamAR extends Team implements ActiveRecord {
private TeamRepository teamRepository;
/* persistence methods */
public void save() {
repository.save(this);
}
public static Set<Team> listAll() {
return teamRepository.listAll();
}
public static Set<Team> listTeamsByChampionship(Championship championship) {
return teamRepository.listTeamsByChampionship(championship);
}
/* fabrica de objeto AR */
public static TeamAR valueOf(Team team) {
// aqui converto um objeto team em um objeto AR
return teamAr;
}
}
Assim, toda injeção de dependência será feita no TeamAR. A classe Team fica simples. Está meio crú esta idéia, mas eu queria saber o que vocês acham. Alguma opinião, melhoria ou críticas? Será que estou viajando na maionese e escrevendo código desnecessário?
