AbelBueno:
O primeiro passo é você descobrir o que atrapalha sua produtividade:
-
Teve que escrever o mesmo código várias vezes?
Será que não dá pra isolar pontos comuns e dá próxima vez reaproveitar?
-
Faltam recursos na linguagem para fazer o que você quer?
Será que não tem um padrão dentro da linguagem para atingir esse resultado?
-
Você não sabe como implementar a solução de certos problemas?
Será que não precisa estudar Java mais a fundo?
No meu caso até agora eu consegui implementar a solução para todos os problemas q tive.
Até o momento não faltaram recursos q eu precisasse(que a linguagem não tinha) para fazer algo.
O que realmente acontece é que acho q escrevo código repetido demais, eu uso template(facelets) e acho q já consegui reduzir bastante a duplicação de código das minhas views, porém ainda acho q escrevo código repetido nos meus ManagedBeans, e não sei como fazer para reaproveitar.
Eis um exemplo de dois managedBeans que uso para fazer o 2 cruds diferentes
Posse.java
@ManagedBean
@ViewScoped
public class GravaPosse implements CRUD, Serializable{
private Posse posse;
public GravaPosse() {
PesquisaTudo.setSuaListaPesquisa(null);
posse = new Posse();
}
public void editar() {
String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
Session sessao = HibernateUtil.getSession();
//seleciona cidade baseada no id
Posse listagem_query = (Posse) sessao.get(Posse.class, new Integer(id));
posse.setPos_id(listagem_query.getPos_id());
posse.setPos_nom(listagem_query.getPos_nom());
sessao.close();
}
private transient Session sessao;// = CriadorDeSessaoNovo.getSession();
private transient Transaction tx;// = sessao.beginTransaction();
public List<Posse> getPosses(){
Session sessao = HibernateUtil.getSession();
Criteria listagem_query = sessao.createCriteria("br.salesianos.modelo.Posse").
addOrder(Order.asc("pos_nom"));
List<Posse> lista = (listagem_query.list());
sessao.close();
return lista;
}
public void gravar() {
sessao = HibernateUtil.getSession();
tx = sessao.beginTransaction();
if(posse.getPos_id()==0){
posse.setPos_id(null);
}
try {
sessao.saveOrUpdate(posse);
tx.commit();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Informações gravadas com sucesso!"));
Limpar.refresh();
} catch (Exception erro) {
System.out.println("Problema : " + erro);
tx.rollback();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Falha ao gravar informações!"));
}
}
public void excluir() {
sessao = HibernateUtil.getSession();
tx = sessao.beginTransaction();
try {
//pais.setPai_id(getPai_id());
sessao.delete(posse);
tx.commit();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Informações excluídas com sucesso!"));
Limpar.refresh();
} catch (Exception erro) {
System.out.println("Problema : " + erro);
tx.rollback();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Falha ao excluir informações!"));
}
}
Atividade.java
@ManagedBean
@ViewScoped
public class GravaAtividade implements CRUD, Serializable{
private Atividade atividade;
public GravaAtividade() {
PesquisaTudo.setSuaListaPesquisa(null);
atividade = new Atividade();
}
private transient Session sessao;
private transient Transaction tx;
public List<Atividade> getAtividades(){
sessao = HibernateUtil.getSession();
Criteria listagem_query = sessao.createCriteria("br.salesianos.modelo.Atividade").
addOrder(Order.asc("ati_nom"));
List<Atividade> lista = (listagem_query.list());
sessao.close();
return lista;
}
public void editar() {
String id = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
Session sessao = HibernateUtil.getSession();
//seleciona cidade baseada no id
Atividade listagem_query = (Atividade) sessao.get(Atividade.class, new Integer(id));
atividade.setAti_id(listagem_query.getAti_id());
atividade.setAti_nom(listagem_query.getAti_nom());
sessao.close();
}
public void verificar(){
System.out.println(""+atividade.getAti_id()+"---"+atividade.getAti_nom());
}
public void gravar() {
sessao = HibernateUtil.getSession();
tx = sessao.beginTransaction();
if(atividade.getAti_id()==0){
atividade.setAti_id(null);
}
try {
sessao.saveOrUpdate(atividade);
//HibernateDAO<Atividade> dao=new HibernateDAO<Atividade>(Atividade.class, sessao);
//dao.salvar(atividade);
tx.commit();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Informações gravadas com sucesso!"));
Limpar.refresh();
} catch (JDBCException erro) {
System.out.println("Problema : " + erro);
tx.rollback();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Falha ao gravar informações!"));
} catch (Exception erro) {
System.out.println("Problema : " + erro);
tx.rollback();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:gravar", new FacesMessage("Falha ao gravar informações!"));
}
}
public void excluir() {
sessao = HibernateUtil.getSession();
tx = sessao.beginTransaction();
try {
sessao.delete(atividade);
tx.commit();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Informações excluídas com sucesso!"));
Limpar.refresh();
} catch (Exception erro) {
System.out.println("Problema : " + erro);
tx.rollback();
sessao.close();
FacesContext.getCurrentInstance().addMessage("Form:excluir", new FacesMessage("Falha ao excluir informações!"));
}
}
/**
* @return the atividade
*/
public Atividade getAtividade() {
return atividade;
}
/**
* @param atividade the atividade to set
*/
public void setAtividade(Atividade atividade) {
this.atividade = atividade;
}
ps:eu havia perguntado sobre outas linguagens, pois já ouvi falar que Ruby é capaz de criar cruds básicos rapidamente, enquanto eu levo muito tempo pra fazer isso em java