Buenas pessoal, para exercitar um pouco o java (estou aprendendo…), resolvi fazer
um pequeno mecanismo de persistencia, para tanto tenho:
* uma superClasse abastrata que representa as entidades com operações proprias
(creio que isso não é o mais correto, mas a questão não é essa agora)
public abstract class Entity implements Serializable{
private DaoGeneric dao = null;
public DaoGeneric getDaoGeneric(){
if (dao==null) {
dao = new DaoGeneric();
}
return dao;
}
public void insert() throws Exception{
getDaoGeneric().insert(this);
}
public void update() throws Exception{
getDaoGeneric().update(this);
}
public void delete() throws Exception{
getDaoGeneric().delete(this);
}
public void findById() throws Exception{
getDaoGeneric().findById(this);
}
public List<Entity> findByCriteria(String aCriteria) throws Exception{
return getDaoGeneric().findByCriteria(this, aCriteria);
}
}
* Uma Interface IDao, para que o Dao Generico siga essas regras…
public interface IDao {
void insert(Entity e) throws Exception;
void update(Entity e) throws Exception;
void delete(Entity e) throws Exception;
void findById(Entity e) throws Exception;
List<Entity> findByCriteria(Entity e, String aCriteria) throws Exception;
}
* Meu Dao Generico que realiza as operações com o DB
public class DaoGeneric implements IDao {
public void delete(Entity e) throws Exception {
//Implementar...
}
public void findById(Entity e) throws Exception {
//Implementar...
}
public void insert(Entity e) throws Exception {
//Implementar...
}
public void update(Entity e) throws Exception {
//Implementar...
}
public List<Entity> findByCriteria(Entity e, String aCriteria) {
//Implementar...
}
}
- E aí um Bean Cidade que extende a Entity normalmente…
public class Cidade extends Entity {
private Integer id;
private String cep;
private String nome;
//Get and Set omitidos...
}
* Com essa estrutura, posso utilizar facilmente da segunte forma:
public static void main(String[] args) {
Cidade c = new Cidade();
c.setCep("85950-000");
c.setNome("Palotina");
c.setId(1);
try {
//Cidade
c.insert();
c.update();
c.delete();
} catch (Exception e) {
e.printStackTrace();
}
}
[color=red]Agora a dúvida:[/color]
Caso eu queira extender um Bean de Entity mas não quero permitir-lhe, por exemplo, a exclusão, como faço?
- sim, foi muito código apenas para uma paergunta, mas conforme vo implementando, usarei os mesmos códigos para outras dúvidas…



