Lançado o MentaBean - Persistencia simples via configuração programática

235 respostas
saoj

========= Disponível para testes no jar beta e no SVN: http://www.mentaframework.org/beta/mentawai.jar

O Mentawai agora oferece uma solução simples para persistência de beans (POJOs) em banco de dados. Para fazer o mapeamento Tabela -&gt Objeto utilizamos configuração programática ao invés de XML ou Annotations.

A idéia aqui não é competir com Hibernate, JPA ou iBatis, mas sim oferecer uma solução simples, fácil e eficiente para fazer CRUDs de beans em seus projetos que utilizam o Mentawai.

Acreditamos que em muitos casos simples o MentaBean será uma mão-na-roda para vc persistir os seus Beans sem ter que depender do Hibernate/iBatis/JPA, etc e suas configurações.

Veja como é simples:

package hello;

public class User {
	
	private int id;
	
	private String name;
	
	private int age;
	
	public User(int id) {
		
		this.id = id;
	}
	
	public int getId() {
		
		return id;
		
	}
	
	public void setAge(int age) {
		
		this.age = age;
	}
	
	public int getAge() {
		
		return age;
	}
	
	public void setName(String name) {
		
		this.name = name;
	}
	
	public String getName() {
		
		return name;
		
	}
}
public void init(Context application) {

     ioc("session", MySQLBeanSession.class);

     filter(new IoCFilter());

     filter(new ConnectionFilter(connHandler));

    filter(new DIFilter("conn", Connection.class));

}

public void loadBeans() {

      bean(hello.User.class, "Users")
		.field("id", DBTypes.AUTOINCREMENT, true)
		.field("name", DBTypes.STRING)
		.field("age", DBTypes.INTEGER);

        // ou
 
        BeanConfig bc = new BeanConfig(User.class, "Users");
        bc.addField("id", DBTypes.AUTOINCREMENT, true);
        bc.addField("name", DBTypes.STRING);
        bc.addField("age", DBTypes.INTEGER);
        addBeanConfig(bc);
	
}
public class HelloMentaBean extends BaseAction {

     public String execute() throws Exception {

          BeanSession session = (BeanSession) input.getValue("session");

          User u = new User(1);

          if (session.load(u)) {

                System.out.println("Bean carregado!");

          }

          System.out.println("Username: " + u.getName());

          // update a bean...

          u.setName("Azenha");

          session.update(u);

          // delete a bean...

          session.delete(u);

          // inserindo...

          User u = new User(2);

          u.setAge(19);

          u.setName("Pedro");

          session.insert(u);

          return SUCCESS;
     }
}

Pontos importantes:

:arrow: Os updates gerados são inteligentes para fazer apenas o update nas colunas que foram alteradas, ou seja, se vc faz o load() de um bean com 20 colunas, altera uma coluna e faz um update(), apenas a coluna alterada sofrerá um update ao invés de todas.

User u = new User(1);

session.load(u); // 100 campos foram carregados aqui...

u.setAge(44);

session.update(u); // vai gerar apenas update users set age = ? where id = ? e não um update gigantesco dos 100 campos...

:arrow: Se vc deseja fazer um update num registro sem carregá-lo em memória antes, tudo que vc tem que fazer é construir um objeto, não fazer o load, setar os campo que vc deseja fazer o update, e chamar update:

User u = new User(1);

// não estamos dando load() !!!

u.setAge(44);

session.update(u); // vai gerar update users set age = ? where id = ?

:arrow: Suporta a criação de outros tipos de coluna para o banco de dados, isto é, se vc precisar vc pode criar novos tipos de dados para a inserção no seu bd isso é muito fácil de se fazer:

public class MyType extends DBType {
	
	public MyType() {
		
		super("MEUTIPO");
	}
	
	public Object getFromResultSet(ResultSet rset, int index) throws SQLException {
		
		return '&lt' + rset.getString(index) + '&gt';
	}
	
	public Class&lt? extends Object&gt getTypeClass() {
		
		return java.lang.String.class;
	}
	
	public void bindToStmt(PreparedStatement stmt, int index, Object value) throws SQLException {

		if (value instanceof String) {
			
			String s = (String) value;
		
			stmt.setString(index, s);
			
		} else {
			
			throw new IllegalArgumentException("value is not a string!");
		}		
	}
}

:arrow: Suporta AUTOINCREMENT do MySQL, ou seja, automaticamente recupera o ID gerado pelo MySQL e coloca no seu bean quando vc faz um INSERT. Suporta SEQUENCE do Oracle, ou seja, automatimcamente utiliza uma sequence do Oracle para gerar a chave primária do seu bean.

User u = new User(); // sem ID, o id será criado pelo banco...

u.setAge(33);

u.setName("Pela");

session.insert(u);

System.out.println("ID do objeto inserido: " + u.getId());

:arrow: Se o nome da variável do seu bean for diferente do nome do seu campo na tabela do banco de dados, basta fazer assim:

public void loadBeans() {

      bean(hello.User.class, "Users")
		.field("id", DBTypes.AUTOINCREMENT, "USER_ID", true)
		.field("name", DBTypes.STRING, "USER_NAME")
		.field("age", DBTypes.INTEGER, "USER_AGE")
	
}

Em muito breve:

:arrow: Suporte a tranções. Até lá vc pode simplesmente pegar a connection da session e fazer a transação com JDBC.

:arrow: Suporte a carregamento de listas de objetos, ou seja:

User u = new User();

u.setAge(33);

List users = session.loadList(u); // retorna uma lista de todos os usuários que possuem 33 anos...

235 Respostas

cv1

Simplorio, nao simples. E cade os testes?

saoj

Vc acha um saca-rolha simplório ou simples?

Tinha um eletronico vendendo aqui na televisão que sacava a rolha sem danificá-la. O furo ficava perfeito tb, bem no centro.

Estamos falando de CRUD simples de beans. Não suporta outer join nem redes neurais.

Eu fiz alguns testes aqui e funcionou ok. Mas está em beta ainda…

A

PARABENS ³

Cada dia que passa vejo que nao escolhi o framework errado!!!

Um espetaculo Sergio…

Uma dica, se esforca nesse MentaBeans, faca com que ele se possivel se torne um framework a parte do Menta… E tente encaixar logo o suporte a list, collection e etc…

Porque to vendo que vai da SAMBA!

PARABENS IRMAO!

J

Quer dizer que o Mentawai também está em beta? Ele ainda não tem testes.

A

Naoooooo

O Mentawai nao só uma versao estavel, como ja esta a mais de 2 anos no mercado e na versao 1.9!
Sendo usado por empresas profissionalmente, projetos Free Lancers, grande participacao dos usuarios / desenvolvedores no forum do Projeto e etc…

O Que o SAOJ falou que esta beta é o mentaBeans, um framework de persistence que acabou de ser lancado…

Mas se voce chegar no forum e ouvir dizer pega a versao "1.9 beta mais nova"
Quer dizer que tem tudo testado, homologado , documentado da versao 1.9(a atual ate a presente data) mas os bugs , melhorias , codereviews e etc… Adicionado apos o lancamento da 1.9.
Esperando somente a confirmacao das melhorias, adocao de novas features, documentacao, exemplos e etc…
Para sair uma nova versao…

Pois o SAOJ (Sergio) tem uma frase muito boa:
"Bug é bug! Tem que achar e matar rápido mesmo… "
Por isso é capaz de lancar a versao 1.9 hoje e daqui a 1 dia ter a versao 1.9 beta, que significa que tem a 1.9 + as correcoes de bugs e as ideias + novas que nao deu tempo ou nao apareceu antes do lancamento da versao!

[]'s

Fabio_Kung

Sérgio, eu tb gosto de configuração programática para muitos casos, contanto que você NÃO precise configurar.

Minha dica é usar um pouquinho mais de convenções. Não se ofenda nem fique nervoso, é só uma dica. Se não gostar apenas ignore.

Só acho que não adianta nada pegar um xml de N linhas e transformar em código Java de N/2 linhas, ou pior ainda transformar o mesmo xml em N anotações.

fmeyer

afsrj:
Naoooooo

O Mentawai nao só uma versao estavel, como ja esta a mais de 2 anos no mercado e na versao 1.9!
Sendo usado por empresas profissionalmente, projetos Free Lancers, grande participacao dos usuarios / desenvolvedores no forum do Projeto e etc…

Codigo sem teste unitario eh codigo inutil.

ps. isso vai ser engracado …

Paulo_Silveira

Ola Sergio.

Para efeito de comparacao, segue aqui o mesmo codigo so que para o hibernate:

A classe usuario fica:

package hello;

@Entity
public class User {
	@Id @GeneratedValue
	private int id;
	
	private String name;
	
	private int age;
      // getters e setter opcionais
	
}

Bem menor nao? Ate porque nem sempre queremos os getters e setters, talvez metodos de negocios vao mexer com os atributos (boa pratica).

E o codigo na sua action fica:

public class HelloMentaBean extends BaseAction {
     public String execute() throws Exception {
	 Session s = new AnnotationConfiguration().configure().buildSessionFactory()
		.openSession();

          User u = session.load(User.class, 1);

          System.out.println("Username: " + u.getName());
          // update a bean...
          u.setName("Azenha");
          session.update(u);
          // delete a bean...
          session.delete(u);

          // inserindo...

          User u = new User();
          u.setAge(19);
          u.setName("Pedro");
          session.save(u);

          return SUCCESS;
     }
}

Alem disso:

  • nao precisa do codigo de init do contexto
  • nao precisa do load beans
  • o hibernate tambem faz update so dos campos que esta dirty se voce quiser. tem muita gente que desconhece mesmo
  • o hibernate pode fazer update sem fazer o load. voce pode usar o merge para isso, ou usar HQL com update.
  • o hibernate suporta criacao de tipos novos, igualzinho como voce fez.
  • alem de auto increment e sequence, suporta propria tabela de sequence, hilo, genracao de id universal e possibilita voce inventar seu sistema de geracao de chaves
  • Para mudar o nome da coluna, no hibernate basta @Column(columnName=“bla”)
  • Da para fazer a configuracao TODA programaticamente, isso tem alguns anos.

E a MUITO tempo, ja tem:

  • suporte a transacao
  • suporte a listas de objetos

Se no hibernate parece ser mais simples, nao entendi o motivo do framework.

Fabio_Kung

prevejo um tópico de 5 páginas…

A

Paulo, aproveitando a onda, vc poderia explicar como configurar o hibernate para fazer este update inteligente nos objetos transientes? Procurei pelo site do hibernate e pelo google e não tive sucesso. Desculpem a fuga do tema do topico., mas esta é uma sabedoria que deve ser compartilhada. :lol:

Alberto

urubatan

Sérgio, ja que tu não vai desistir de fazer este MentaBeans (que eu achei completamente desnecessário, se seguir esta linha da demonstração)

por que em vez de fazer algo com configuraçãp programática, tu não tenta fazer algo que não precisa configurar?

pelo menos para as situações mais comuns, não deveria ser necessário configurar, isto sim seria interessante …

o que esta feito até agora é uma versão mais pobre e mais dificil de utilizar que qualquer outro framework O/R que ja existe …

em vez de fazer a mesma coisa, se tu conseguir fazer algo, que pelo menos nas situações consideradas “padrão” pelo framework, não seja necessário configurar, ai sim pode ser algo interessante …

PS.: nada contra opções, mas qual a vantagem de fazer a mesma coisa que ja existe, só que mais dificil, menos flexivel e menos poderoso?

Daniel_Quirino_Olive

Paulo Silveira:
Ola Sergio.

Para efeito de comparacao, segue aqui o mesmo codigo so que para o hibernate:

A classe usuario fica:

package hello;

@Entity
public class User {
	@Id @GeneratedValue
	private int id;
	
	private String name;
	
	private int age;
      // getters e setter opcionais
	
}

Bem menor nao? Ate porque nem sempre queremos os getters e setters, talvez metodos de negocios vao mexer com os atributos (boa pratica).

E o codigo na sua action fica:

public class HelloMentaBean extends BaseAction {
     public String execute() throws Exception {
	 Session s = new AnnotationConfiguration().configure().buildSessionFactory()
		.openSession();

          User u = session.load(User.class, 1);

          System.out.println("Username: " + u.getName());
          // update a bean...
          u.setName("Azenha");
          session.update(u);
          // delete a bean...
          session.delete(u);

          // inserindo...

          User u = new User();
          u.setAge(19);
          u.setName("Pedro");
          session.save(u);

          return SUCCESS;
     }
}

Alem disso:

  • nao precisa do codigo de init do contexto
  • nao precisa do load beans
  • o hibernate tambem faz update so dos campos que esta dirty se voce quiser. tem muita gente que desconhece mesmo
  • o hibernate pode fazer update sem fazer o load. voce pode usar o merge para isso, ou usar HQL com update.
  • o hibernate suporta criacao de tipos novos, igualzinho como voce fez.
  • alem de auto increment e sequence, suporta propria tabela de sequence, hilo, geração de id universal e possibilita você inventar seu sistema de geração de chaves
  • Para mudar o nome da coluna, no hibernate basta @Column(columnName=“bla”)
  • Dá para fazer a configuracao TODA programaticamente, isso tem alguns anos.

E a MUITO tempo, ja tem:

  • suporte a transacao
  • suporte a listas de objetos

Se no hibernate parece ser mais simples, nao entendi o motivo do framework.

Além de tudo isso que o Paulo citou, Hibernate permite que você crie desde soluções de “CRUD simples para Beans” até “persistência entre objetos com relacionamentos malucos”, ou seja, é mais flexível e não vai obrigar que eu reescreva todo meu sistema novamente porque, de repente, ele deixou de ser um simples “cadastrinho” e passou a ser um sistema um pouco mais complexo.

Além disso, este projeto vai seguir a mesma política do MTW de não ter testes unitários para quase absolutamente nada? Como você pretende garantir backward compatibility conforme sua biblioteca evolui sem testes?

Paulo_Silveira

Oi Alberto

alots_ssa:
Paulo, aproveitando a onda, vc poderia explicar como configurar o hibernate para fazer este update inteligente nos objetos transientes? Procurei pelo site do hibernate e pelo google e não tive sucesso. Desculpem a fuga do tema do topico., mas esta é uma sabedoria que deve ser compartilhada. :lol:

@org.hibernate.annotations.Entity(dynamicUpdate=true)

Rubem_Azenha

Sergio, eu vou ter que concordar com o pessoal. Realmente acho que vc exagerou um pouco na dose.

O Hibernate eh um framework cuja qualidade eh comprovada. Ele eh completo, por isso tem uma ou outra complexidade, nada que um programador relativamente competente nao consiga dominar. E uma vez configurado, eh bem tranquilo de usar (principalmente se usar Hibernate Annotations).

Quanto ao uso ou nao dos testes unitarios, temos opnioes bem distintas quanto a isso (eu particularmente acho muito importante). Mas, you are the boss…

Paulo_Silveira

microfilo:

O Hibernate eh um framework cuja qualidade eh comprovada. Ele eh completo, por isso tem uma ou outra complexidade, nada que um programador relativamente competente nao consiga dominar.

Nos casos supracitados, qual é a complexidade?

Esse é o meu ponto. o hibernate, para persistir beans, nao tem complexidade nenhuma.

cv1

Nao me venha com analogia furada. E leia o comentario do DQO de novo.

E cade esses testes que voce fez? Eu fui la olhar o repositorio, e ta aqui a versao mais recente do build.xml do Mentawai:

https://svn.sourceforge.net/svnroot/mentaframework/mentawai/build.xml

E nao tem uma mencao sequer as palavras ‘test’, ‘unit’ ou ate mesmo ‘run’. Como voce espera que eu confie no seu codigo? Lendo a porra toda?

Mauricio_Linhares

Poder dizer “Fui eu quem fiz, ó!”.

Isso realmene ultrapassou todos os níveis do absurdo. Mas bola pra frente, assim é a comunidade Java, cada um que faça o seu e o resto que se lasque.

thiagoaos

Paulo Silveira:
Oi Alberto

@org.hibernate.annotations.Entity(dynamicUpdate=true)

Desculpe fugir do tópico.
Deixar o update dinâmico (só atualizar as colunas modificas) não é uma boa pratica? porque então o default é false?

Entity.html#dynamicUpdate()

ranophoenix

Penso que o Menta deve concentrar-se no MVC e delegar outras atividades que não são de sua competência direta para outros frameworks especialistas e já consagrados no mercado.

No máximo, o Menta poderia adotar um desses frameworks especialistas como padrão e fornecer certas facilidades para se trabalhar com ele. Por exemplo, caso o Menta quisesse facilitar a vida de alguns usuários que só querem trabalhar com objetos, sem se preocupar com JDBC, Mapeamentos OR, etc, poderia usar como padrão o DB4O (só como exemplo, pois como é GPL “contamina”). Tutorial pra quem tiver curiosidade: http://www.db4o.com/about/productinformation/resources/db4o-4.5-tutorial-java.pdf.

Persistência é uma coisa que deve ser levada a sério, pois os dados são a alma de qualquer sistema e frameworks como Hibernate, Ibatis, etc, já estão maduros o suficiente para assumirem tal tarefa.

[EDITADO]
Só para acrescentar, antes que me corrijam, o db4o também possui uma licença comercial. :wink:
[/EDITADO]

saoj

fmeyer:

Codigo sem teste unitario eh codigo inutil.

ps. isso vai ser engracado …

Vc é patético. Eu trabalho numa empresa que gira milhões de dólares por dia, coloca mais de 2 milhões de ordens no mercado por dia e realiza perto de 150 mil transações em bolsa por dia.

E lá não tem um teste se quer. Zero testes unitários.

O sistema e a empresa vão muito bem, pode ter certeza disso.

Inútil são esses seus comentários…

cv1

Ate onde isso vai? “E voce eh bobo. E feio. E narigudo. Te encontro a 200m da escola, perto do ponto de onibus, e vc vai ver so!”

E isso eh pra se achar bonito? Bom, parabens, vc trabalha num puteiro onde ninguem leu nada sobre desenvolvimento de software de qualidade nos ultimos 20 anos. Ou leu, mas nao aplicou e preferiu ser cauboi, pq da pra se manter no emprego mais tempo. Eu nao tenho muito o que ver com isso, a nao ser ficar um tanto chateado em ver que a nossa profissao nao consegue evoluir desse jeito.

Nos poupe, vai?

saoj

=== Respondendo ao primeiro post do Paulo:

getter e setter não é para o framework que usa reflection e pode acessar diretaente o campo privado. getter e setter é para vc poder manipular o bean, como vc está fazendo no seu exemplo.

Realmente faltou um CoC para o MentaBean. Se o campo é string por default o tipo deveria ser String, sem necessidade de configuração. (Vou fazer isso!)

Eu não sabia disso e até pouco tempo atrás acho que não era assim, ou seja, ele fazia um update em todos os campos. Mas tudo bem, isso é importante para qualquer framework suportar. Veja o que nosso amigo falou sobre isso:

Isso é básico para qualquer framework.

Suporta até redes neurais. Acho que se já suportar os principais mecanismos dos principais bancos já está bom. (Não estou levando em conta a independencia de banco de dados aqui, por achar desnecessária em 95% dos casos. Ou vc muda o seu banco de dados toda hora?)

A idéia aqui é usar configuração programática, como o Mentawai.

Sim, já tinham me falado isso. O problema é que nínguem usa, não é documentado, ninguém dá exemplo e os próprios autores do Hibernate não encorajam, ou seja, XML e Annotations estão em todos os lugares quando o assunto é Hibernate. É como a configuraçõa programática para validação do Struts. Existe, mas é tão pouco falado/divulgado/usado/documentado que é como se não existisse.

saoj

Ate onde isso vai? “E voce eh bobo. E feio. E narigudo. Te encontro a 200m da escola, perto do ponto de onibus, e vc vai ver so!”

E isso eh pra se achar bonito? Bom, parabens, vc trabalha num puteiro onde ninguem leu nada sobre desenvolvimento de software de qualidade nos ultimos 20 anos. Ou leu, mas nao aplicou e preferiu ser cauboi, pq da pra se manter no emprego mais tempo. Eu nao tenho muito o que ver com isso, a nao ser ficar um tanto chateado em ver que a nossa profissao nao consegue evoluir desse jeito.

Nos poupe, vai?

Puteiro é sua casa, Carlos Vilela. Manere no seu linguajar. Respeito é bom e todo mundo gosta, ok?

Fala para as diversas pessoas que utilizam o framework para elas não utilizarem mais porque o framework não tem testes unitários.

Fala para o meu chefe que apesar de ele faturar um bilhão de dólares por ano numa empresa com 50 funcionários, ele deveria jogar tudo fora e ir trabalhar com o CV e seus testes unitários.

Abaixa a sua bolinha amigo, porque eu tenho munição para rebater suas críticas mal-educadas.

saoj

Poder dizer “Fui eu quem fiz, ó!”.

Isso realmene ultrapassou todos os níveis do absurdo. Mas bola pra frente, assim é a comunidade Java, cada um que faça o seu e o resto que se lasque.

O que ultrapassou todos os níveis do absurdo é o incomodo que isso gera nas pessoas. Enquanto algumas elogiam, contribuem, incentivam, outras caem matando. Quando fiz o Mentawai foi a mesma coisa. Fui massacrado aqui no GUJ e tb no exterior. Ainda bem que não desisti, ou melhor, esses ataques só me deram mais força para seguir em frente com o projeto. E hoje fico feliz em ver que muitas pessoas utilizam em casos de sucesso aqui e no exterior. Recebo muitos pedidos para entrar no time de desenvolvedores, etc e tal. Será que estou cometendo um crime. Será que estou fazendo algo errado. Será que deveria jogar fora o framework e usar Struts ou WebWork? Para algumas pessoas sim né…

Hei, acorda! Foi apenas um teste. Eu estava procurando por comentários sóbrios, técnicos como o Paulo fez. Perfeito. Sem xingamentos. Um verdadeiro profissional.

Agora o que dizer de CV, fmeyer e vc agora com esse comentário?

Isso é que é triste. Pessoas que não fazem nada, condenam tudo e se acham o máximo! Eu gosto de dar a cara a tapa. Sabia que ia gerar esses tipos de comentários da “galerinha do mal do GUJ”.

Se errei, como errei com o Lohis, com o Space4J, etc. me desculpem. Não precisa usar. Coloca um BLOCK no seu browser para nem entrar na página do Mentawai.

Agora não se iludam que eu vou parar de tentar, ok?

saoj

Concordo com vc. Há sempre o risco de um sistema simples se tornar complexo, mas se isso realmente acontecer será MUITO TRANQUILO migrar o seu sistema fixo para Hibernate e começar o seu sistema complexo.

Testes só é necessário se o seu sistema estiver mal-feito. Boas práticas de OO (herança e override) te permitem que vc estenda o teu sistema sem quebrá-lo. Eu faço isso todo o dia no meu trabalho, trabalhando com sistemas críticos que controlam milhões de dólares. O que não pode é colocar um bacurau para alterar isso e colocar em produção. Tem que ter disciplina, organização e programar “ORIENTADO A CONTRATOS”, ou seja, quando se introduz um novo contrato vc precisa ter 100% de certeza que o contrato antigo continua lá, bonitinho.

cv1

Reciprocidade funciona mais ou menos assim: a gente trata as pessoas como as pessoas tratam a gente. Logo…

Isso nao eh aceitavel. E voce comecou. E eh Villela, nao Vilela. Se vai chamar pelo nome completo como sinal de que vc esta rodando a baiana, alias, voce pode tentar Carlos Eduardo Villela de Andrade Neto, da proxima.

A decisao eh delas, mas se elas nao tem o bom-senso de decidir nao usar um framework que ja esta na quase na versao 2 e nao tem um teste automatizado sequer, talvez elas tenham uma licao importante a aprender.

E, caso vc nao tenha notado, eu estou falando pra essas diversas pessoas (afinal, o forum eh publico).

Fala pro seu chefe dar um toque pra ThoughtWorks, a gente provavelmente tem muito trabalho a fazer por ai. :wink:

cv1

Caralho. Eu vou colar isso na parede. saoj, manda uma foto sua pra mim?

saoj

Só se for para comprar a ThoughtWorks e te colocar como relações públicas CV.

A empresa é líder no mercado americano e talvez no mercado global. Fatura mais que qualquer outra na área de high-volume trading, recruta profissionais no mundo inteiro, o sistema é super estável, mas porque não tem testes unitários é uma merda, inútil.

Ok. A eterna briga entre teóricos e práticos. Papo-furado e resultados! Escolham o seu lado!

saoj

Caralho. Eu vou colar isso na parede. saoj, manda uma foto sua pra mim?

  • Testes são demorados

  • Testes são chatos de se fazer

  • Testes geralmente não conseguem testar todos os cenários.

  • Testes possuem falso-positivos, ou seja, não acusam problemas mas quando vc coloca em produção dá algum erro.

  • Na grande maioria dos casos é IMPOSSÍVEL reproduzir o ambiente de produção num ambiente de testes. (Pergunte para as mais de 20 bolsas para as quais eu tive que escrever uma conexão esse ano…)

  • Se vc está modificando um sistema pouco organizado, sem boas práticas de OO vc com certeza precisa de testes. (que provavelmente não vão funcionar também)

  • O JForum não tem testes unitários (acabei de falar com o Rafael Steil). É inútil tb? Peço que troquem o fórum do GUJ urgentemente, pois isso é um atente as boas práticas de tecnologia.

  • Falei para o Rubem que se ele quisesse fazer testes unitários para o Mentawai ele poderia fazer sem problemas. Ele falou que sim, ok. Isso é muito importante. Fez 2 testes e não fez mais nada. Vai dizer que estava sem tempo para fazer isso. Ok. As pessoas são livres para fazer o que quiser…

Rafael_Steil

OPA OPA OPA

Nao me use como exemplo aqui. Voce da a entender que eu nao apoio o uso de test cases, o que NAO eh verdade.

O falta de testes no JForum atual é uma falha monstruosa, que sempre me causou problemas. Nao ha desculpas para nao ter test cases.

O JForum 3 (atual versao em desenvolvimento) tem unit testing para tudo. Tudo.

Voce pode nao gostar de fazer testes, mas defender que eles sao ruins, ja eh pegar pesado. Ao meu ver, a sua postura esta errada.

Rafael

febatata

Pessoal, bom dia.

Eu não sou muito ativo, não ajudo porque ainda PRECISO de muita ajuda, mas no que eu puder, estamos aí.

Agora o que não ajuda é esse tipo de discussão que todos nós sabemos que não vai chegar em lugar nenhum.

Essa é a hora de algum moderador tomar alguma atitude e provar que não tem panelinha aqui no GUJ. Providências devem ser tomadas.

Existem algumas regras quanto a Palavrões, ofensas, etc. Apesar de muitos dos envolvidos serem Moderadores, deve existir alguém acima disso para poder tomar alguma atitude.

Quanto ao assunto, eu gostaria de deixar a minha opinião:

saoj, o seu maior erro foi colocar isso pra galera. Se você sabe que seu projeto é bom, use na sua empresa e continue ganhando milhões para ela, acho que seria uma ótima saída.

saoj

O assunto desse tópico era frameworks de persistencia, né? “Desvirtuaram para o Mentawai é um lixo porque não possui testes unitários, mesmo tendo um monte de gente usando e aprovando.”

Voltando ao tópico sobre MentaBeans:

  • Precisa de convenções para os campos, pois ficou claro com os exemplos do Paulo e do Urubatan de que é plenamente possível…

  • O Hibernate parece que também faz isso, apesar de muita gente reclamar das configurações do Hibernate e da dificuldade de configuração. Talvez essas pessoas estejam erradas e/ou mal-informadas, mas é de se pesquisar o porque disso.

- Não gostou do MentaBean… Ignore e não use. Ou faça como o Paulo. Apresente bons argumentos, sem xingamentos, sem palavras como INÚTIL, etc e tal. Um bom argumento fala por si só. Não é de se espantar que o Paulo esteja onde está hoje…

saoj

Estou extremamente decepcionado com o JForum. Vc ficou mais de 3 anos incentivando o uso de uma ferramenta que não tinha testes unitários. Eu me lembro há algum tempo atrás que eu estava postando uma mensagem aqui e deu um erro. Se vc tivesse usado testes unitários desde o início isso não teria acontecido. Realmente uma pena que só na versão 3 ele possua testes unitários. Agora podemos ter certeza que não haverá NENHUM bug e que a qualidade será 10 vezes melhor!

Rafael_Steil

Sergio, testes unitarios nao impedem bugs de acontecer, mas diminuem enormemente a possibilidade, quando voce testa direito.

Rafael

Calvin

CMMI? :twisted:

legionarioba

Acho que você não entendeu o espírito da coisa:

Erros sempre existirão…e quanto mais certos de que eles não acontecerão, ou quanto mais cedo os mesmos sejam descobertos…melhor…Esperar sistema sendo colocado no ar sem erros(com ou sem testes unitários),considerando um sistema que seja um pouco mais que um CRUD, pode beirar o utópico, ao menos pra maior parte da realidade vivida por quem desenvolve…

saoj
  • Baixei todo o código fonte do Spring Web Flow e tb não encontrei testes. (O diretório test que tem lá é para testar as suas actions e não teste para o framework em si!)

Se alguém utiliza esse framework, muito cuidado. Recomendo analisar o uso de outro…

Thiago_Senna

Olá GUJ’s…

IMHO o hibernate/jpa é a resposta da comunidade java sobre como seria a melhor maneira de realizar a persistência de suas entidades. Por isso vou dar minha opinião/sugestão sobre o MentaBean.

Seria mais interessante se o Mentawai oferece novos recursos bastante poderosos para criar uma integração entre a camada de persistência e o mentawai. É mais ou menos o caso que aconteceu no JBoss Seam. Ele aproveita o JSF + JPA + EJB3 e te propõe um novo estilo visando aumentar a agilidade no desenvolvimento do software.

Existem outros recursos que podem ser interessantes como por exemplo gerar as páginas CRUD com seus respectivos controles.

Enfim, acho que criar um novo framework de persistência não vale a pena. Mas uma proposta de arquitetura/integração para persistência poderia ser muito interessante.

Abraços!

chun

Em tempos de JPA… esse framework é realmente :

1 - Simples demais… se for para ser TAO simples… prq nao usa Prevayler ? faz bem mais coisas e é bem mais simples.

2 - Voce esta tentando reinventar a roda… JPA é simples tmb… e chega a ser mais simples que isso se vc usar integrado ao container

Acho que vc exagerou nessa vez… alem de não pegar vc vai ter que manter algo relativamente inutil… e se simplesmente descontinuar vai deixar na mao quem usa esse “negocio” que vc criou…

Isso tá parecendo o J# :stuck_out_tongue: “Já nasceu morto.”

Alexandre

Paulo Silveira:

@org.hibernate.annotations.Entity(dynamicUpdate=true)

Valew Paulo, tava pesquisando algo sobre isso.

Alexandre

afsrj:
PARABENS ³

Cada dia que passa vejo que nao escolhi o framework errado!!!

Um espetaculo Sergio…

Uma dica, se esforca nesse MentaBeans, faca com que ele se possivel se torne um framework a parte do Menta… E tente encaixar logo o suporte a list, collection e etc…

Porque to vendo que vai da SAMBA!

PARABENS IRMAO!

Vc está falando sério?

L

Lamentável,

vivem reclamando que não tem uma discussão de alto nível no forum. Daí quando surge uma oportunidade, ao invez de opinarem constutivamente no trabalho do Sérgio, baixam o nível, como de costume neh, tem alguns aqui que acham que são os maiores programadores do mundo…acima do bem e do mal…

saoj

lavh:
Lamentável,

vivem reclamando que não tem uma discussão de alto nível no forum. Daí quando surge uma oportunidade, ao invez de opinarem constutivamente no trabalho do Sérgio, baixam o nível, como de costume neh, tem alguns aqui que acham que são os maiores programadores do mundo…acima do bem e do mal…

Legal ver que existem pessoas POSITIVAS nessa comunidade, como vc! Obrigado pelo apoio.

Eu fiz a coisa e coloquei minha cara a tapa aqui, como de costume. Se errei me desculpem! Mostrem os erros como o Paulo fez. e não apenas falem: é inútil porque não tem testes… francamente…

Leozin

poxa que pena, o pessoal preferiu jogar pedras no saoj por ele não ter feito nenhum Hibernate 7.75x (uma versão com no mínimo 5x mais coisas legais que o o hibernate tem agora). Primeiramente deveriamos dar apoio ao saoj, não metendo pau no que ele faz ou fez e sim, pensar em coisas novas, com que o framework melhore

chun

Esse topico tinha que entrar para a estoria do GUJ… será que teremos uma palestra sobre testes no proximo JustJava ? juntamente com a apresentacao do MentaBeans !!!

Alexandre

Caralho. Eu vou colar isso na parede. saoj, manda uma foto sua pra mim?

  • Testes são demorados

  • Testes são chatos de se fazer

  • Testes geralmente não conseguem testar todos os cenários.

  • Testes possuem falso-positivos, ou seja, não acusam problemas mas quando vc coloca em produção dá algum erro.

  • Na grande maioria dos casos é IMPOSSÍVEL reproduzir o ambiente de produção num ambiente de testes. (Pergunte para as mais de 20 bolsas para as quais eu tive que escrever uma conexão esse ano…)

  • Se vc está modificando um sistema pouco organizado, sem boas práticas de OO vc com certeza precisa de testes. (que provavelmente não vão funcionar também)

  • O JForum não tem testes unitários (acabei de falar com o Rafael Steil). É inútil tb? Peço que troquem o fórum do GUJ urgentemente, pois isso é um atente as boas práticas de tecnologia.

  • Falei para o Rubem que se ele quisesse fazer testes unitários para o Mentawai ele poderia fazer sem problemas. Ele falou que sim, ok. Isso é muito importante. Fez 2 testes e não fez mais nada. Vai dizer que estava sem tempo para fazer isso. Ok. As pessoas são livres para fazer o que quiser…

Testes não são demorados, quanto menos chatos, se vc é adepto de TDD no desenvolvimento de software.
Mas se vc ja desenvolveu tudo sem testes e ainda oferece resistência a isso…
Essa opinião, infelizmente ainda é muito comum por aí,
pessoas acharem que é perda de tempo, justamente pq “não conseguem ver resultados”, e mesmo mostrar resultado.
Pense que vc estará garantindo a integridade do seu sistema, especialmente sistemas do domínio que vc trabalha,
onde qq erro perde-se muita grana.
E se vc acha que todos os cenários não possam ser testados, passe a escrever testes…vc vai evoluir na idéia e na
habilidade de escreve-los e vai sacar que é possível sim cobrir os cenários.
O que atrapalha na maioria dos casos é a preguiça.

louds

Parabens pelo MentaBeans Sérgio.

Porém achei uma má idéia você pregar um brinquedo de final de semana como uma solução para uso comercial. Seria muito melhor você integrar uma solução muito mais capaz, como JPA ou Hibernate, ao Mentawai que criar outra do zero.

Existem uma série de considerações do por que o MentaBean não é uma boa idéia:

:arrow: Possui pouca documentação. Quantos livros em portugues ou tutoriais existem?
:arrow: Não existe um suporte profissional por tras. Quantas empresas pretendem oferecer treinamento ou suporte ao MentaBeans?
:arrow: Fragmenta ainda mais o mercado Java. Precisamos mesmo de mais um framework mal acabado de persistência? Ainda mais quando integrar o Hibernate ou o JPA produziria um resultado mais simples e funcional para os usuários do Mentawai.
:arrow: Usuários vão precisar aprender mais um framework, mesmo que simples, mas terão de conhecer como usar.
:arrow: Perda de rumo, não sei mais se o Mentawai é um framework de MVC, ORM ou um MONSTRO cheio de pacotes e complexidade feito o Spring Framework. Só faltam workflow, AOP e integração com J2EE para o Mentawai ficar do mesmo tamanho do Spring.
:arrow: A falta de testes automatizados realmente torna dificil garantir a qualidade e compatibilidade do software. Todas specs do JCP tem um TCK exatamente para garantir isso. Não precisa ser um economista para entender a escala de vantagens financeiras (tempo) de escrever testes automatizados.

Estes são os pontos que eu vejo como os mais críticos. Sérgio, a impressão que eu tenho é que você toma o caminho fácil para o desenvolvedor do framework em vez do caminho fácil para o usuário. Integrar JPA/Hibernate ou criar 1 framework de final de semana? O primeiro é mais dificil de desenvolver, mas também vai ser o melhor para o usuário final.

Quanto aos testes, existe uma diferença enorme entre escrever um sistema para um usuário final e um framework. O número de interações do primeiro caso são poucas e faceis de definir, no caso do framework o cliente é o código do desenvolvedor, que permite uma interação muito mais rica e complexa - por isso usar testes automatizados para garantir o complexo e extenso contrato do framework e o código da aplicação.

A

Testei o dynamic-update e tambem o select-before-update mas infelizmente funcionou. Fui na documentação do hibernate e fiz como tava lá mas não rolou não. Ele continuo atualizando todos os campos, acho que deve ser pq meu objeto é transiente, sei lá. Mas valeu Paulo

Alberto

J

[color=red]Apaguei, me arrependo do tom que usei no post.[/color]

saoj

Obrigado pelas dicas também, Louds.

Não preguei nada. Está na versão beta ainda. Não foi lançado com a versão oficial do framework. Acabou de ser feito. Não pretende e não vai competir com o Hibernate, por questões óbvias.

O Mentawai já tem integração com Spring, Hibernate e JPA.

Ele acabou de nascer. Vc quer que já nasca com livros, documentação, comunidade junto??? :slight_smile:

Calma! Acabou de nascer! Se vc ajudar, pois capacidade eu sei que vc tem para isso, quem sabe ele não cresce?

Não fragmenta o mercado nenhum. Diversidade é muito bom! Quando vc vai numa sorveteria vc prefere uma sorveteria com 100 sabores ou uma com 3 sabores? O sabor cupuaçú te incomoda? Deixe essa preocupação com o dono da sorveteria, pois ele mesmo vai tirar o cupuaçú do cardápio se ningúem comprar, ok?

Se o framework for BEM SIMPLES, se a documentação estiver BEM CLARA, dizendo que que ele faz e o que ele não faz, as pessoas perderão MUITO POUCO TEMPO para brincar e conhece-lo. Agora tente brincar com o Tapestry por exemplo…

De novo. O sabor cupuaçú te incomoda. Não pessa cupuaçú e seja feliz. Deixe ele lá quieto no freezer do dono da sorveteria.

Ok. Respeito a sua opinião. Eu felizmente ou infezlimente nunca tive problemas com testes. E parece que os usuários do mentawai tb não estão tendo, pois raramente tem bug por ali e quando tem eles são corrigidos quase que instantaneamente. Boas práticas de OO com disciplina dá isso. Veja o JForum.

Vc inverteu! Criar um filtro para fazer integração entre frameworks é bem simples e fácil. Eu poderia ficar vendo TeleCine no fim de semana mas preferi fazer esse framework aí como experiencia. Essa vontade não surgiu de uma hora pra outra. Veja esse link aqui que eu escrevi a quase 3 anos atrás: http://www.guj.com.br/posts/list/14935.java

Eu apenas quiz refazer uma coisa que eu já tinha feito a muito tempo usando configuração programática.

saoj

[color=“red”]Após uma conversa sadia e amistosa com o juzpeleteiro, e tendo descoberto agora que ele removeu o seu post, me sinto tb no dever de retirar meus comentários, pois acredito que quando duas pessoas perdem a cabeça e partem para acusações mútuas e desrespeitosas, independemente de qualquer outra coisa, ambas estão completamente erradas, agindo como animais que reagem por instinto.[/color]

chun

PORRADAAAAAAA!!!

Detalhe: A 3 anos atras o topico que voce forneceu era valido… mas hoje em dia… nao existe milhoes de XML e tudo ficou dezenas de vezes mais facil… que Web Container nao suporta Hibernate hj em dia ? a curva para aprender a usar o BASICO do hibernate é extremamente baixa… nao tem nexo criar mais uma ferramenta dessa…

Pelo que percebo , quem nao concorda com vc sempre está errado… quer um belo exemplo de framework falido ? veja o MEU… fiz um contato com a comunidade para saber opinioes…

http://www.guj.com.br/posts/list/55234.java

cheguei a conclusao que era chover no molhado… vc precisava ter feito isso antes… teria poupado seu tempo… que com certeza seria muito melhor “assistindo o telecine” que reinventado a roda. Os argumentos para este projeto são OU muito fracos OU pouco embasados… sorry…

saoj

chun:
PORRADAAAAAAA!!!

Detalhe: A 3 anos atras o topico que voce forneceu era valido… mas hoje em dia… nao existe milhoes de XML e tudo ficou dezenas de vezes mais facil… que Web Container nao suporta Hibernate hj em dia ? a curva para aprender a usar o BASICO do hibernate é extremamente baixa… nao tem nexo criar mais uma ferramenta dessa…

Pelo que percebo , quem nao concorda com vc sempre está errado… quer um belo exemplo de framework falido ? veja o MEU… fiz um contato com a comunidade para saber opinioes…

http://www.guj.com.br/posts/list/55234.java

cheguei a conclusao que era chover no molhado… vc precisava ter feito isso antes… teria poupado seu tempo… que com certeza seria muito melhor “assistindo o telecine” que reinventado a roda. Os argumentos para este projeto são OU muito fracos OU pouco embasados… sorry…

Fala isso para essas pessoas aqui: http://forum.mentaframework.org/posts/list/157.page

Eu já fiz coisas que choveram no molhado. Não acerto sempre. Para sua tristeza o Mentawai não foi uma delas.

fabiozoroastro

Enquanto a briga aqui “esquenta” dúvidas novas estão surgindo no fórum, mas está parecendo que criticar as pessoas é melhor que ajudá-las.
Saoj, continue seu projeto. Bom, eu não vou usar porque não me convenceu nem um pouco a trocar de fw, quem sabe um dia.

Abraço.

chun

saoj:
chun:
PORRADAAAAAAA!!!

Detalhe: A 3 anos atras o topico que voce forneceu era valido… mas hoje em dia… nao existe milhoes de XML e tudo ficou dezenas de vezes mais facil… que Web Container nao suporta Hibernate hj em dia ? a curva para aprender a usar o BASICO do hibernate é extremamente baixa… nao tem nexo criar mais uma ferramenta dessa…

Pelo que percebo , quem nao concorda com vc sempre está errado… quer um belo exemplo de framework falido ? veja o MEU… fiz um contato com a comunidade para saber opinioes…

http://www.guj.com.br/posts/list/55234.java

cheguei a conclusao que era chover no molhado… vc precisava ter feito isso antes… teria poupado seu tempo… que com certeza seria muito melhor “assistindo o telecine” que reinventado a roda. Os argumentos para este projeto são OU muito fracos OU pouco embasados… sorry…

Fala isso para essas pessoas aqui: http://forum.mentaframework.org/posts/list/157.page

Eu já fiz coisas que choveram no molhado. Não acerto sempre. Para sua tristeza o Mentawai não foi uma delas.

Comparacao infeliz hein ? O mentaway é simples… poderoso e FUNCIONAL… o Mentabeans é simplorio e inutil.

Entao poste no TheServerSide e veja o que a “comunidade Java” acha disso , nao foi assim que vc fez com o Mentaway ? Só que se prepare para ser conhecido como “o cara que fez o hibernate-killer”

boaglio

Amigos,

Vamos tentar manter um nível aqui.

Se não gostaram da proposta, escrevam argumentos que justifiquem sua opinião ou então simplesmente ignorem.

A exposição de uma idéia busca opiniões construtivas e nada além disso.

Infelizmente essa thread já virou um barraco… :frowning:

saoj

fabiozoroastro:
Enquanto a briga aqui “esquenta” dúvidas novas estão surgindo no fórum, mas está parecendo que criticar as pessoas é melhor que ajudá-las.
Saoj, continue seu projeto. Bom, eu não vou usar porque não me convenceu nem um pouco a trocar de fw, quem sabe um dia.

Abraço.

Sem problemas. De qualquer maneira obrigado pela força e pelo comentário positivo. Poderíamos estar falando sobre persistencia, mas existem pessoas aqui que estão acima do bem e do mal, pessoas como esse JuzPeleteiro, com o qual iremos resolver nossos problemas pessoalmente como homem. (Não estou falando de porrada, estou falando de olho-no-olho!)

chun

fabiozoroastro:
Enquanto a briga aqui “esquenta” dúvidas novas estão surgindo no fórum, mas está parecendo que criticar as pessoas é melhor que ajudá-las.
Saoj, continue seu projeto. Bom, eu não vou usar porque não me convenceu nem um pouco a trocar de fw, quem sabe um dia.

Abraço.

Sim ,… quem sabe no dia que MentaBeans implementar JPA e fizer algo alem de insert-delete-update… no MentaBeans 8.0 :slight_smile:

saoj

Um dia quem sabe ele fará tudo isso. Ou o Hibernate já nasceu fazendo tudo aquilo que ele faz hoje?

Se 1 / 10 das pessoas que criticam, reclamam, se debatem de raiva, falassem assim:

  • Olha, isso aqui, aqui e aqui acho que pode melhorar. Se vc quiser a gente inicia um projeto open-source e tenta brincar com isso. No mínimo aprenderemos bastante…
chun

saoj:
chun:

Sim ,… quem sabe no dia que MentaBeans implementar JPA e fizer algo alem de insert-delete-update… no MentaBeans 8.0 :slight_smile:

Um dia quem sabe ele fará tudo isso. Ou o Hibernate já nasceu fazendo tudo aquilo que ele faz hoje?

Se 1 / 10 das pessoas que criticam, reclamam, se debatem de raiva, falassem assim:

  • Olha, isso aqui, aqui e aqui acho que pode melhorar. Se vc quiser a gente inicia um projeto open-source e tenta brincar com isso. No mínimo aprenderemos bastante…

Nao… porem fazia dezenas de milhares de coisas a mais que o MentaBeans… se for evoluir na mesma velocidade… vai ter um Hibernate 1.0 like em uns 5 anos… e denovo… vai CHOVER NO MOLHADO.

Voce vvai acabar inchando o MentaBeans prq vai perceber que necessita de MUITO MAIS COISA do que ele tem… no final vc vai ter algo parecido com o JOINER (o clipper brasileiro)

saoj

chun:
saoj:
chun:

Sim ,… quem sabe no dia que MentaBeans implementar JPA e fizer algo alem de insert-delete-update… no MentaBeans 8.0 :slight_smile:

Um dia quem sabe ele fará tudo isso. Ou o Hibernate já nasceu fazendo tudo aquilo que ele faz hoje?

Se 1 / 10 das pessoas que criticam, reclamam, se debatem de raiva, falassem assim:

  • Olha, isso aqui, aqui e aqui acho que pode melhorar. Se vc quiser a gente inicia um projeto open-source e tenta brincar com isso. No mínimo aprenderemos bastante…

Nao… porem fazia dezenas de milhares de coisas a mais que o MentaBeans… se for evoluir na mesma velocidade… vai ter um Hibernate 1.0 like em uns 5 anos… e denovo… vai CHOVER NO MOLHADO.

Voce vvai acabar inchando o MentaBeans prq vai perceber que necessita de MUITO MAIS COISA do que ele tem… no final vc vai ter algo parecido com o JOINER (o clipper brasileiro)

Pode ser, tudo é possível. Já chovi no molhado antes. Chover mais uma vez não tem problema. Se não tiver espaço, se não for bom, ele sairá de cena por si só. Como um sorvete de cupuacú encalhado numa sorveteria que ninguém compra… Seleção Natural de Darwin…

C

Pelo menos a discurssão está voltando a ser interessante. Saco ver os posts doa maiores contribuidores do GUJ falando que ganha 1000 x que o outro, qua a empresa de uma é melhor que a do outro…como dizem os nordestinos: “parecem uns meninos buchudos”.
Saoj estou trabalhando em um sistema junto com outras duas pessoas e usamos muita coisa do mentawai e estamos satisfeitos com os resultados de produtividade. Segue em frente com o MentaBeans, acho que no nosso caso não seria interessante adota-lo mas eu e outros os dois estamos esperando pra ver a integração dele com o mentawai.

[]'s

C

E o esquema de layz loading? O MentaBeans suporta?

[]'s

chun

ClodoaldoJR:
E o esquema de layz loading? O MentaBeans suporta?

[]'s

lazy Loading ? ele nem suporta coleções pelo visto nos exemplos passados…

O JDBC 4.0 faz o que o MentaBeans faz.
pega um resultset e carrega num POJO em suas propriedades…

maquiavelbona

Já chegou, e pode ser que isso se amplie!

Ter idéias é legal, mas eu não vejo uso disso para mim. Boa sorte!

Até!

cv1

saoj:
Se 1 / 10 das pessoas que criticam, reclamam, se debatem de raiva, falassem assim:

  • Olha, isso aqui, aqui e aqui acho que pode melhorar. Se vc quiser a gente inicia um projeto open-source e tenta brincar com isso. No mínimo aprenderemos bastante…

E pq vc nao disse/fez isso sobre o Hibernate ou JPA antes de comecar o Mentabeans? Ou disse/fez isso sobre o Spring, WebWork, NanoWeb ou qualquer outro framework web antes de comecar o Mentawai?

Soa muito como um discurso do tipo ‘faca o que eu falo, nao o que eu faco’, ainda mais pra quem diz fazer tanto (e acusa os outros de nao fazerem nada). Nao sei, talvez vc queira revisar um pouco a sua atitude. :wink:

thiagoaos

Um dia quem sabe ele fará tudo isso. Ou o Hibernate já nasceu fazendo tudo aquilo que ele faz hoje?

Se 1 / 10 das pessoas que criticam, reclamam, se debatem de raiva, falassem assim:

É ai que está o X da questão SAOJ. O hibernate não nasceu com tudo que tem hoje, mas não nasceu somente com suporte a um simples CRUD.

Então botando em questão o tem que você vai levar para fazer com que o mentaBean atinja um nível aceitável de uso, vai demorar, e enquanto isso o hibernate está crescendo mais e mais e em passos mais longos, pois o foco dele é persistência, enquanto que você busca abraçar o mundo.

E você poderia fazer jus as suas palavras, se tem alguns aqui lhe ofendendo, simplesmente ignore, coloque o sorvete de cupuaçu de lado.

Em minha opnião acho que você tinha que inovar e não tentar fazer a mesma coisa que outro já faz, sendo que esse outro é já consagrado na comunidade java.

Acho que você deveria repensar nele e dar foco realmente a produtividade, pois só de tratar de configuração programatica não quer dizer que seja produtivo. Que tal algo como active record?

Configuração por configuração, a do hibernate annotations é muito simples, e se seguir as convenções do mesmo não precisa configurar quase nada.

saoj
  • Por que o framework deles já estava em fase avançada.

  • Por que eu não conheço eles.

  • Por que não conheço um forum tipo o GUJ onde eu possa encontrar eles para discutir.

  • Por que eles não apoiavam configuração programática.

Na boa… Por mim já deu o que tinha que dar.

Agradeço aqueles que contribuiram com bons argumentos. Concordo que do jeito que está o MentaBeans ainda está muito simples para atender casos mais complexos. Quem conhece e usa o Hibernate não vai ter como dar bola pra ele, concordo com isso. Minha intenção nunca foi competir com o Hibernate, apenas oferecer algo simples para situações simples (talvez simples demais).

Para aqueles que só fizeram ataques contra o projeto, o Mentawai e a minha pessoa, podem continuar a tacar lama porque tudo que irão conseguir é perder terreno!

louds

Seguindo tua analogia do sorvete, se o Hibernate é cupuaçu, o MentaBeans é água congelada, já que é tão simples que serve apenas ao propósito de uma pessoa.

Você não tem problemas de não escrever testes, mas aparentemente os usuários do mentawai sofrem pela falta deles, olha essa lista de bugs simples, que seriam facilmente pegos com testes integrados:

:arrow: mtw:inputDate lancando mensagem de "undefined" --&gt http://forum.mentaframework.org/posts/list/678.page

:arrow: TransactionFilter() não dá rollback --&gt http://forum.mentaframework.org/posts/list/983.page

Olha os bugs de regressão, coisas que funcionavam e pararam, essas são as que não aconteceria se existissem testes automatizados:

:arrow: 1.4.1] - Urgente - Problema com IoCFiler + FileUploadFilter --&gt
http://forum.mentaframework.org/posts/list/452.page

:arrow: Stack trace --&gt http://forum.mentaframework.org/posts/list/15/461.page

Ou então comentários como esses, que mostram a clara falta de uma suite de testes para permitir testar o framework no caso de alterações significativas:

"O problema é fazer isso com calma e precisão para não adicionar nenhum bug aí.
Tenho minhas dúvidas se é tarefa simples e segura. "
http://forum.mentaframework.org/posts/list/1085.page#9010

Pergunta pro pessoal do XStream se eles tem medo ou dúvidas de refatorar agressivamente o funcionamento interno do framework.

Outra coisa Sérgio, por favor, pare de ofender os usuários desse fórum, você está atacando moralmente todos os que estão argumentando com você.

Você resolveu dar 1 tapa em um código seu que resolvia um problema que existia a três anos em vez de simplesmente tentar entender como hoje existem opções muito melhores para fazer.

chun

atender casos mais complexos ? mais complexos que o que ? NEM SUPORTE A COLECOES NAO TEM… rapaz… se eu for fazer algo como VENDA->getNotasFiscas() já nao consigo… vou ter que ficar preso ao session o tempo todo para fazer requisicoes simples destas ?

saoj , vc fez um otimo trabalho com o mentaway… apesar de nao usar ele… reconheco o framework… porem esse mentabeans é algo simplorio demais… nao serve PRA NADA… nem para fazer um site besta… nem para fazer um cadastro besta… é preferivel usar DAO e JDBC direto… no final fica mais organizado e por consequencia mais simples de dar manutencao que o mentabeans…

ranophoenix
Acho que você deveria repensar nele e dar foco realmente a produtividade, pois só de tratar de configuração programatica não quer dizer que seja produtivo. Que tal algo como active record?

Gostei :smiley:

joseguilherme

Saudações saoj,

No começo também usávamos aqui alguma coisa bem parecida com a forma que o MentaBeans para facilitar na persistência. Classe para gerar slq automático pegando os atributos e os valores do objeto por reflection, executando bem fácil um update com uma simples chamada de método .atualizar(). Foi bem produtivo no começo do projeto, pois era rápido pra desenvolver o código.

Mas depois de cair em um problema, o de busca de coleções, desistimos desse nosso framework e passamos a usar hibernate, pois tinha inúmeras vantagens, transações e busca ávida de coleções eram algumas dessas vantagens.

Eu acho que o hibernate se propoe a fazer o que vc pretende com o MentaBeans de uma maneira mais simples, (estou deixando de lado o fato do MentaBenas ter acabado de nascer), mas que a sua idéia não é ruim, só acho que o seu esforço poderia ser aplicado a uma necessidade específica que o hibernate não venha a cobrir.

Por exemplo, buscar avidamente mais de uma coleção do mesmo objeto. O hibernate não monta um grafo de um objeto que tenha duas coleções. O hibernate usa um outer join para preencher apenas uma das coleções as outras precisam ser inicializadas um um select extra ou busca preguiçosa. (pelo menos era assim na época que eu li o livro hibernate em ação).
Se vc implementasse uma busca que ele fosse capaz de trazer um objeto e todas as suas coleções, vc ainda poderia utilizar uma sessão de hibernate e persistir as alterações desse objeto e suas coleções automaticamente.
É apenas um exemplo, não sei se existiria uma necessidade real para isso.

Acho que vc poderia concentrar seus esforços pra tentar preencher as lacunas do hibernate e outros frameworks de persistência, assim o MentaBeans associado à outros frameworks de persistência cobriria praticamente todas as necessidades de persistência.

IMHO

renatosilva

Poder dizer “Fui eu quem fiz, ó!”.

Isso realmene ultrapassou todos os níveis do absurdo. Mas bola pra frente, assim é a comunidade Java, cada um que faça o seu e o resto que se lasque.

Mas o mundo Java não é assim? 300 frameworks web, 200 de persistência, 800 parsers XML, 4.000 APIs de log…

chun

Poder dizer “Fui eu quem fiz, ó!”.

Isso realmene ultrapassou todos os níveis do absurdo. Mas bola pra frente, assim é a comunidade Java, cada um que faça o seu e o resto que se lasque.

Mas o mundo Java não é assim? 300 frameworks web, 200 de persistência, 800 parsers XML, 4.000 APIs de log…

Vc preferiria usar um só ? se vc preferir vc pode usar apenas os padroes… JPA persistencia , JAXP para parse XML e java.util.Log para log… vc só usa os outros se eles oferecerem vantagens…

NO SINGLE VENDOR LOCK-IN

F

saoj:

Fala isso para essas pessoas aqui: http://forum.mentaframework.org/posts/list/157.page

Eu tava sentindo falta dessa pagina. :smiley:

]['s

L

“Antes de mais nada já sei que sou “””"“BEm vindo ao GUJ”"""" "

Só não entendi uma coisa nisso tudo, tem muita gente ai que não usa o mentawai e provavelmente nunca vai usar, então pra que reclamar, dizer isso ou aquilo ?

E pra quem usa ou irá usar o mentawai a feature MentaBean é opcional…
Alguém pode me explicar o porque dessa guerra ?

Quer saber, eu vou usar. E daí ?

Alguém tá pagando o meu espaço da locaweb por acaso se eu utilizar o MentaBean lá com Mysql ?

Agredi alguém dessa vez ?
Posso colocar o avatar do lobo ?
http://www.lobobrasil.com.br/port/imagens/geral.html

renatosilva

Mesmo pensamento do Lobo

Bem vindo ao GUJ forever!!! huahuauaah

A

Comentarios como os 2 abaixo…sao do tipos pessoas que leram os topicos tiram suas conclusoes e postaram…
Absolutamente Inuteis…

Acho que você não entendeu o espírito da coisa:

Erros sempre existirão…e quanto mais certos de que eles não acontecerão, ou quanto mais cedo os mesmos sejam descobertos…melhor…Esperar sistema sendo colocado no ar sem erros(com ou sem testes unitários),considerando um sistema que seja um pouco mais que um CRUD, pode beirar o utópico, ao menos pra maior parte da realidade vivida por quem desenvolve…

febatata:
Pessoal, bom dia.

Eu não sou muito ativo, não ajudo porque ainda PRECISO de muita ajuda, mas no que eu puder, estamos aí.

Agora o que não ajuda é esse tipo de discussão que todos nós sabemos que não vai chegar em lugar nenhum.

Essa é a hora de algum moderador tomar alguma atitude e provar que não tem panelinha aqui no GUJ. Providências devem ser tomadas.

Existem algumas regras quanto a Palavrões, ofensas, etc. Apesar de muitos dos envolvidos serem Moderadores, deve existir alguém acima disso para poder tomar alguma atitude.

Quanto ao assunto, eu gostaria de deixar a minha opinião:

saoj, o seu maior erro foi colocar isso pra galera. Se você sabe que seu projeto é bom, use na sua empresa e continue ganhando milhões para ela, acho que seria uma ótima saída.


Alexandre:
afsrj:
PARABENS ³

Cada dia que passa vejo que nao escolhi o framework errado!!!

Um espetaculo Sergio…

Uma dica, se esforca nesse MentaBeans, faca com que ele se possivel se torne um framework a parte do Menta… E tente encaixar logo o suporte a list, collection e etc…

Porque to vendo que vai da SAMBA!

PARABENS IRMAO!

Vc está falando sério?

Quando eu falei sobre a minha escolha de framework, eu falo sobre o Mentawai… Que continua muito mais completo do que Struts 1 e 2…
Que provavelmente a sua empresa usa, assim como a minha usa…
Nao iniciem uma nova discusao , eu uso Struts mais de 8 horas / dia e sei que a produtivadade do Menta x Struts é absurdamente favoravel ao Menta…

Nao vou usar nenhum framework de ORM, mas apoiei a Ideia do SAOJ…
Ja pensou se todos se limitassem a nao construir nada de novo ou melhorar o que existe, so pelo simples fato deles existirem…

Tosco…!

Apoio sim a ideia, se tiver que ajudar vou ajudar…
Mas acho ridiculo o simples ato de vir ate aqui CRITICAR, so pq falta X, falta Y, falta Z…
Sinceramente a pagina 2 foi ridicula, as pessoas so falaram besteira…
E entraram no barco vou criticar pq todos estao criticando…

[]'s

L

O engraçado disso tudo é ser julgado pela quantidade de posts heheheh, ops
Quando eu tiver 1 filho vou pedir pra ele instalar um forum no computador dele assim ele será um excelente advogado , médico ou porteiro :]

Posso rir aqui ?

:lol:

Paulo_Silveira

“pouco tempo atras” = 4+ anos, desde hibernate 2.x.

Nao mudo, mas em 95% dos projetos novos eu uso um banco de dados diferentes do anterior. Esse é o X da questao. E tambem posso fazer unit tests nos bancos embutidos

Sergio, corrija-me se eu estiver enganado, mas parece que voce usou pouquissimo do hibernate, ou so fez o hello. Nao consigo entender o que voce achou la que era “complexo”, ja que o codigo que eu mostrei com o hibernate ficou bem menor que com o seu framework.

chun

Lobo:
“Antes de mais nada já sei que sou “””"“BEm vindo ao GUJ”"""" "

Só não entendi uma coisa nisso tudo, tem muita gente ai que não usa o mentawai e provavelmente nunca vai usar, então pra que reclamar, dizer isso ou aquilo ?

E pra quem usa ou irá usar o mentawai a feature MentaBean é opcional…
Alguém pode me explicar o porque dessa guerra ?

Quer saber, eu vou usar. E daí ?

Alguém tá pagando o meu espaço da locaweb por acaso se eu utilizar o MentaBean lá com Mysql ?

Agredi alguém dessa vez ?
Posso colocar o avatar do lobo ?
http://www.lobobrasil.com.br/port/imagens/geral.html

O problema é que voce apresenta como solucao de problemas… e está bem longe disso… acho que nem o SEU problema ele nao resolve…

O outro ponto da questão é que voce acha q nunca esta errado… parece que vc busca os elogios dos outros… as opinioes (que voce mesmo pede) contrarias a esta insanidade que voce chama de “MentaBeans” são lixo vindo de pessoas do “lado negro da forca” , ae vem comentarios como “eu ganho mais que voce…” , “meu brinquedinho é mais rocho que o seu” e isso SIM é lamentavel…

Outra coisa é que se vc quisesse fazer algo para quem usa o mentaway… vc postava no FORUM do mentaway… e nao no GUJ.

Voce quer sim que todos amem esse negocio… se nao quisesse , nao postaria num forum de assuntos gerais…

Pelo que tenho observado voce custa a admitir que esta errado… vc soh admite isso quando te enchem de flores…

urubatan

saoj

BOm, eu falei no outro post que não achei interessante a ideia do projeto, ms só pra ninguem poder dizer que eu só falo, falo e não faço nada (alguem tava pensando isto?)

por que em vez de criar um framework OR, tu não faz o seguinte:
cria uma forma de definir um pacote onde ficarão as classes persistentes do projeto.
na inicialização faz um scan no classpath e pega todas as classes daquele pacote e configura elas automaticamente como classes persistentes.

e para resolver o problema dos anos que precisariam para programar todos os recursos que o hibernate tem, seria interessante utilizar ele como backend :smiley:
assim o teu framework ja ganharia compatibilidade automatica com JPA caso necessário …

tah, beleza, mas como fazer isto?
bom, o scanner de classpath tu pode olhar no subversion do spring-annotation ou então do VRaptor, o código referente ao Hibernate, pode usar isto como base, esta bastante desorganizado, e ainda sem a configuração de coleções por que eu escrevi isto em 30 minutos agora no horario de almoço.

VOs usados no exemplo

package br.com.urubatan.hib.teste;

import java.util.List;

public class TestBean {
	private Integer id;
	private String teste;
	private List<TesteBean2> beans;
// gets e sets opcionais
public class TesteBean2 {
	private Integer id;
	private String name;

Configuração programática do Hibernate, tu pode fazer o MentaBeans serem um wraper pra isto ou então seguir a minha proposta inicial la de cima.

public class ConfTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Properties p = new Properties();
		p.put("hibernate.connection.url", "jdbc:mysql:///teste");
		p.put("hibernate.connection.username", "root");
		p.put("hibernate.connection.password", "vds");
		p.put("hibernate.connection.pool_size", "2");
		p.put("hibernate.hbm2ddl.auto", "update");
		p.put("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
		p.put("hibernate.show_sql", "true");
		p.put("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
		Configuration cfg = new Configuration();
		cfg.addProperties(p);
		Mappings m = cfg.createMappings();
		m.addClass(buildPersistentClass(TestBean.class, m));
		m.addClass(buildPersistentClass(TesteBean2.class, m));
		// cfg = cfg.configure();
		SessionFactory sf = cfg.buildSessionFactory();
		new SchemaExport(cfg).create(true, true);
		TesteBean2 tb2 = new TesteBean2();
		tb2.setName("teste");
		Session s = sf.openSession();
		Transaction t = s.beginTransaction();
		s.save(tb2);
		Criteria crit = s.createCriteria(TesteBean2.class);
		System.out.println(crit.list());
		t.commit();
		s.close();
	}

	private static PersistentClass buildPersistentClass(Class&lt?&gt cls, Mappings m) {
		RootClass pc = new RootClass();
		pc.setAbstract(false);
		pc.setBatchSize(0);
		pc.setClassName(cls.getName());
		pc.setLazy(false);
		pc.setDynamicInsert(true);
		pc.setDynamicUpdate(true);
		pc.setEntityName(cls.getName());
		Table table = m.addTable(null, null, cls.getSimpleName(), null, false);
		pc.setTable(table);

		for (Field f : cls.getDeclaredFields()) {
			if ("id".equals(f.getName())) {
				addKey(f, pc);
			} else {
				addField(f, pc);
			}
		}
		return pc;
	}

	private static void addField(Field f, RootClass pc) {
		Type t = f.getGenericType();
		if (t instanceof ParameterizedType) {
			// ParameterizedType pt = (ParameterizedType) t;
			// if(pt.getRawType() instanceof Collection){
			// Join join;
			// pc.addJoin(join);
			// }
		} else if (t instanceof Class) {
			Class&lt?&gt c = (Class&lt?&gt) t;
			Property p = new Property();
			p.setPersistentClass(pc);
			p.setName(f.getName());
			SimpleValue k = new SimpleValue();
			k.setTable(pc.getTable());
			k.setTypeName(c.getName());
			Column column = new Column(f.getName());
			k.addColumn(column);
			pc.getTable().addColumn(column);
			p.setValue(k);
			pc.addProperty(p);
		}
	}

	private static void addKey(Field f, RootClass pc) {
		SimpleValue k = new SimpleValue();
		k.setTable(pc.getTable());
		k.setIdentifierGeneratorStrategy("native");
		k.setTypeName(f.getType().getName());
		Column pkColumn = new Column(f.getName());
		pkColumn.setValue(k);
		k.addColumn(pkColumn);
		pc.setIdentifier(k);
		Property p = new Property();
		p.setName(f.getName());
		p.setPersistentClass(pc);
		p.setValue(k);
		p.setNaturalIdentifier(true);
		pc.setIdentifierProperty(p);
		PrimaryKey pk = new PrimaryKey();
		pk.setName(f.getName());
		Table table = pc.getTable();
		pk.setTable(table);
		pk.addColumn(pkColumn);
		table.setPrimaryKey(pk);
		table.addColumn(pkColumn);
		table.setIdentifierValue(k);
	}

}

acho que um automatizador pra isto, que siga alguns padrões, e elimine totalmente a necessidade de qualquer configuração (OK, o banco de dados vai ser necessário de qualquer modo), isto sim seria uma novidade interessante :smiley:

como eu ja disse e escrevi antes, programadores java tem, por alguma razão extranha, a ideia de que tudo tem que ser configurado …

eu acho que tudo tem que ser configuravel, mas ja vir com valores padrão, utilizáveis em boa parte dos casos, ou pelo menos nos mais simples …

R

chun:
saoj , vc fez um otimo trabalho com o mentaway… apesar de nao usar ele… reconheco o framework… porem esse mentabeans é algo simplorio demais… nao serve PRA NADA… nem para fazer um site besta… nem para fazer um cadastro besta… é preferivel usar DAO e JDBC direto… no final fica mais organizado e por consequencia mais simples de dar manutencao que o mentabeans…

Esse é o tipo de pessoa que tem o costume de criticar projetos sem mesmo conhecer o que esta criticando.
Chun, a tempos atraz tivemos uma conversa no #java sobre o mentawai e vc simplismente falou que esse framework era ridiculo e que nem merecia sua atenção. Hoje vejo vc falando bem do mentawai e fico abismado em ver esse seu comentario, mas isso serve de lição para perceber que eu nao devo dar atenção para o que vc fala.

SAOJ, a tempos atras eu perdi meses estudando web-frameworks para saber qual deles eu deveria usar, isso foi devido porque as pessoas desse forum aconselharam experimentar cada web-framework e definir sua escolha. Com o tempo eu descobri que esse era um grande erro, porque eu nao disponho de todo esse tempo, e descobri que seguir um padrão(JSR) seria bem melhor, e por isso eu escolhi JSF.
Portanto eu pergunto: O MentaBeans faz uso de alguma JSR ?

Caso vc responda sim, eu terei o prazer de fazer uma implementação e verificar sua utilidade, peço desculpas por nao fazer uma critica construtiva, mas eu nao possuo conhecimento para isso, fica pra proxima.

legionarioba

afsrj wrote:

Comentarios como os 2 abaixo…sao do tipos pessoas que leram os topicos tiram suas conclusoes e postaram…
Absolutamente Inuteis…

legionarioba wrote:

e vc tivesse usado testes unitários desde o início isso não teria acontecido. Realmente uma pena que  na versão 3 ele possua testes unitários. Agora podemos ter certeza que não haverá NENHUM bug e que a qualidade será 10 vezes melhor!   



Acho que você não entendeu o espírito da coisa:

    O teste do software é uma das fases do processo de engenharia de software que visa atingir um nível de qualidade de produto superior. O objetivo, por paradoxal que pareça, é mesmo o de encontrar defeitos no produto, para que estes possam ser corrigidos pela equipe de programadores, antes da entrega final   

by Wikipedia

Erros sempre existirão..e quanto mais certos de que eles não acontecerão, ou quanto mais cedo os mesmos sejam descobertos...melhor..Esperar sistema sendo colocado no ar sem erros(com ou sem testes unitários),considerando um sistema que seja um pouco mais que um CRUD, pode beirar o utópico, ao menos pra maior parte da realidade vivida por quem desenvolve...

Quando eu falei sobre a minha escolha de framework, eu falo sobre o Mentawai… Que continua muito mais completo do que Struts 1 e 2…
Que provavelmente a sua empresa usa, assim como a minha usa…
Nao iniciem uma nova discusao , eu uso Struts mais de 8 horas / dia e sei que a produtivadade do Menta x Struts é absurdamente favoravel ao Menta…

Nao vou usar nenhum framework de ORM, mas apoiei a Ideia do SAOJ…
Ja pensou se todos se limitassem a nao construir nada de novo ou melhorar o que existe, so pelo simples fato deles existirem…

Tosco…!

Apoio sim a ideia, se tiver que ajudar vou ajudar…
Mas acho ridiculo o simples ato de vir ate aqui CRITICAR, so pq falta X, falta Y, falta Z…
Sinceramente a pagina 2 foi ridicula, as pessoas so falaram besteira…
E entraram no barco vou criticar pq todos estao criticando…

[]'s

Cara…você leu o que eu escrevi? No instante que escrevi saoj foi bastante irônico quanto a importância dos testes…e citou o JForum…questionou o lado prático e o lado teórico do mundo? Se você acha que ter opinião própria (todo mundo pode ter algum tipo de know-how), argumentar de forma referenciada o que pensa e depender seu ponto de vista, então o que você faz num fórum como o guj?

Li e continuo lendo o tópico, tiro e vou continuar tirando minhas conclusões e vou opinar(se puder contribuir de alguma forma)… e garanto que isso pode ser feito de forma bem mais contributiva que esse seu post criticista…

afsrw wrote:

Mas acho ridiculo o simples ato de vir ate aqui CRITICAR, so pq falta X, falta Y, falta Z…
Sinceramente a pagina 2 foi ridicula, as pessoas so falaram besteira…
E entraram no barco vou criticar pq todos estao criticando…

É isso que faz com que muitos dos posts aqui colocados sejam gerados. CRÍTICA é NORMAL, e por mais dura que seja tem que ser absorvida…Se alguém fala que falta X, Y ou Z, e que tal coisa já existe em um framework consolidado, será que isso não pode gerar questionamentos ao "pai da criança", de modo ao próprio ver a viablidade de prosseguir ou não com uma idéia…Saoj pode ter vários motivos pra continuar tentando:

-&gt Provar que o MentaBeans pode fazer algo diferente do que outros frameworks ORM.
-&gt Querer reinventar a roda porque o aprendizado pessoal será importante, ainda que só o mesmo use.
-&gt Provar que o MentaBeans pode fazer o mesmo que outros frameworks ORM fazer só que de forma mais eficiente.

Não estou colocando nenhuma das acima como sendo opinião pessoal. Acho apenas que quem pensa em expor uma idéia, boa ou ruim, precisa estar preparado pra ouvir uma crítica(construtiva ou destrutiva) e ter humildade suficiente pra aceitar a hipótese e os porques de uma idéia ser ou não aceita. E você afsrj, só fez um (count+1) nos comentários sem propósito neste fórum. Já vimos muitos argumentos de ambas as partes(pessoais:"você não é ninguém" ou "eu ganho 10 vezes mais que você", teórico-práticos:"isso só funciona na teoria" ou "existe um sistema enorme aqui e funciona tudo", técnicas:"já existe algo que faz isso melhor" ou "isso é feito de forma programática"). EU se fosse você aproveitava apenas o que for inteligente, deletava o post que você escreveu e escrevesse o porque defende ou não o que se propõe o MentaBeans, seria de mais valia…

chun

ronildobraga:

Esse é o tipo de pessoa que tem o costume de criticar projetos sem mesmo conhecer o que esta criticando.
Chun, a tempos atraz tivemos uma conversa no #java sobre o mentawai e vc simplismente falou que esse framework era ridiculo e que nem merecia sua atenção. Hoje vejo vc falando bem do mentawai e fico abismado em ver esse seu comentario, mas isso serve de lição para perceber que eu nao devo dar atenção para o que vc fala.

SAOJ, a tempos atras eu perdi meses estudando web-frameworks para saber qual deles eu deveria usar, isso foi devido porque as pessoas desse forum aconselharam experimentar cada web-framework e definir sua escolha. Com o tempo eu descobri que esse era um grande erro, porque eu nao disponho de todo esse tempo, e descobri que seguir um padrão(JSR) seria bem melhor, e por isso eu escolhi JSF.
Portanto eu pergunto: O MentaBeans faz uso de alguma JSR ?

Caso vc responda sim, eu terei o prazer de fazer uma implementação e verificar sua utilidade, peço desculpas por nao fazer uma critica construtiva, mas eu nao possuo conhecimento para isso, fica pra proxima.

Bem… inicialmente eu sou homem suficiente para expor quem eu sou… e nao ficar atras de um forum com um nickname e metendo o pau nas pessoas.

Segundo: Na epoca que tive uma discussao realmente o mentaway nao me apetecia… e nao me apetece até hoje… tanto que não uso ele… E NEM VOCE… entao… dah licenca neh ?

Terceiro: Voce nao descobriu… quem te disse sobre esse negocio todo de padrao foi EU explicando prq EU nao usaria o mentaway HOJE… entao nao me venha com xurumelas e tentando aparecer… da proxima vez fale coisas que sairam da sua cabecinha e nao tente se botar como “o conservador” que é visto que voce não é…

Quarto: HOJE o mentaway seria a minha terceira opcao se nao usasse JSF… usaria Tapestry e usuaria MEntaway… entao… GRACAS A DEUS que nossa opiniao sobre as coisas mudem (alem do que , passou bastante tempo ) afinal… tecnologia evolui todo dia… se for para ficar stagnado… eu não escolheria a tecnologia Java.

Por favor… nao tente aparecer cumprimentando com o chapéu dos outros…

Da proxima vez que for me criticar… PELO MENOS use o framework que vc defende… prq se fosse assim TAO BOM… PARA VOCE… voce estaria usando.

bzanchet

Apenas uma reunião de alguns argumentos sobre o uso de TDD, aspecto discutido aqui no tópico.


Ok. A eterna briga entre teóricos e práticos. Papo-furado e resultados! Escolham o seu lado! [/quote]
Por que ser tão extremo?


Destaque ao trecho abaixo:

Não é a toa que que “communication skills” são essenciais à bons programadores. Parabéns, impossível deixar mais claro.

Não escrever testes automatizados é uma aposta de alto risco. E que se torna ainda mais arriscada (irresponsável, talvez?) quando se trata de um framework. É de um alto grau de certeza, quase consenso, que, no longo prazo, o custo de “ter disciplina, organização e programar ‘ORIENTADO A CONTRATOS’”, de forma a “ter 100% de certeza que o contrato antigo continua lá” supera o custo de se automatizar os testes (em itálico citações do saoj). Se trata de custos! Por que optar pelo (provavelmente) mais caro?

foia

É … sexta-feira 13.

  1. Se o mentabeans vai ou não ser uma boa solução (para a comunidade), só o tempo dirá;
  2. Não entendi porque este post está em “Notícias” (comunidade de 1 !?);
  3. Uma tradução livre do projeto seria: “Feijões Mentolados” ?!
Rubem_Azenha
  1. deixemos o tempo passar

  2. pq foi um acontecimento :smiley: a release de um novo framework

  3. Ou Feijoes sabor Menta

Pessoal, muitas pessoas (eu incluso) nao concordam com o MentaBean. Mas vamos manter uma atitude mais respeitosa pelo menos. O projeto nem release oficial tem e ja caem de sola falando que ele eh tosco\inutil pq nao tem teste unitario.

Realmente, eu considero um erro o Mentawai nao ter teste unitario. Eh algo que deveria ter sido feito desde o comeco. Parte da culpa eh minha, eu realmente na epoca nao dei muito atencao a isso. Mas o Sergio nao acha teste tao importante assim. Como ele eh o project leader, nao havera entao uma politica forte de uso de testes unitarios no projeto (se tiver bom, se nao tiver azar, ninguem vai perder noites de sono por isso). Cada um tem uma opiniao quanto a isso, nao acho justo apedrejar ele por ele ter uma opiniao contraria!

Eu pessoalmente acho ridiculo o pessoal vir com toda essa arrogancia e ficar com ataques pessoas desnecessarios. Isso vale para ambos os lados. Ninguem gosta que ridicularizem as suas capacidades ou seu trabalho, entao nao ridicularizem o dos outros.

Luiz_Aguiar

urubatan:
por que em vez de criar um framework OR, tu não faz o seguinte:
cria uma forma de definir um pacote onde ficarão as classes persistentes do projeto.
na inicialização faz um scan no classpath e pega todas as classes daquele pacote e configura elas automaticamente como classes persistentes.

e para resolver o problema dos anos que precisariam para programar todos os recursos que o hibernate tem, seria interessante utilizar ele como backend :smiley:

como eu ja disse e escrevi antes, programadores java tem, por alguma razão extranha, a ideia de que tudo tem que ser configurado.


Humm… um framework OR mas que funcione como o DB4Object ?
e teria praticidade de trabalhar como em banco OO com o hibernate por baixo?
seria isso?
:smiley:

Fabio_Kung

Discordo aqui Sérgio.

Em todos os projetos que eu participo, uso um banco de dados diferente para o desenvolvimento, testes (geralmente bancos embutíveis) e para produção.

Eu sei que não são poucas pessoas que fazem isso.

urubatan

mais ou menos isto, a ideia básica, é nos casos simples, ou nos casos que aceitassem seguir o padrão criado, não precisar configurar absolutamente nada :smiley:

no máximo em qual pacote estão os objetos persistentes :smiley:
ou até pra isto poderia ter um padrão … mas ai ja acho que fica mais dificil :smiley:

F

E convenamos é uma boa pratica. Conseguir desenvolver um modulo do sistema sem se preocupar se o colega do lado ta alterando os dados da base é uma boa.

++

chun

E convenamos é uma boa pratica. Conseguir desenvolver um modulo do sistema sem se preocupar se o colega do lado ta alterando os dados da base é uma boa.

++

++

Luiz_Aguiar

++

L

Chun escreveu

Cara eu apresentei alguma solução ? Eu não te conheço nem você a mim.
Você não faz idéia da quantidade de problemas que eu tenho e eu não quero saber da mínima dos seus.

Eu perguntei o porquê dessa guerra toda, afinal o MentaBean é opcional no Mentawai e quando alguém for usar, não será obrigatório o uso.

Agora me responde o que se passou na sua mente pra dar uma de filósofo…

chun

Lobo:
Chun escreveu

Cara eu apresentei alguma solução ? Eu não te conheço nem você a mim.
Você não faz idéia da quantidade de problemas que eu tenho e eu não quero saber da mínima dos seus.

Eu perguntei o porquê dessa guerra toda, afinal o MentaBean é opcional no Mentawai e quando alguém for usar, não será obrigatório o uso.

Agora me responde o que se passou na sua mente pra dar uma de filósofo…

Passou na minha mente provar que voce não consegue receber criticas… e nao consegue admitir ideias opostas as suas… a não ser que venham floreadas e com MUITA… MAS MUITA porpurina por cima… e alguns confetes…

E pelo visto consegui provar.

L

Cara, se você tivesse respeito pelas pessoas você poderia crescer mais na vida.

chun

Respeitar eh abaixar a cabeça para o que voce disse e achar o máximo ? Seu conceito de respeito é interessante…

Voce vem na comunidade… joga num forum aberto… e nao quer receber criticas ? quem é que não respeita aqui ?

urubatan

[size=18]alguem lembra sobre o que era o tópico? [/size]

Luiz_Aguiar

Afinal, quem é melhor, Eclipse ou Netbeans? :smiley:

chun

JEdit

urubatan

eu acho que é o Visual Studio!!

Getware

NetBeans tá bem legal …

Alguém já ouviu falar do Apache Geronimo?

roadhouse

Eu complementaria perguntando: quando eu devo usar VO/TO e singleton?

:lol:

R

eu acho que é o Visual Studio!!

Já que é assim ! Urubatan… eu escrevi um comentario no seu blog, nao obtive retorno… sobre os DAOs genericos. Caso vc responda por favor favor responda lá que eu leio.

SAOJ, espero que vc tenha outras pessoas com vc nesse projeto para poder responder as mensagens e voltarmos ao topico.

**** Editado ****
Chun, eu nem terminei de ler o que vc escreveu… mas caso vc acha que eu esteja me escondendo:
meu nick no #java ronildojunior, meu blog www.iprogramming.blogspot.com. meu e-mail [email removido] que é o mesmo do msn ! quer endereco tb !? :?

Getware

É eu acho que o GUJ esta todo nesse topico… ninguém respondeu quando eu perguntei sobre o Apache Geronimo… por isso vou postando minha dúvida aqui pra ver se respondem… :roll: :smiley:

eliziario

eu acho que é o Visual Studio!!
Ué. O Visual Studio 2005 agora tem tantos refactorings como o eclipse ou o netbeans (não vou nem citar IntelliJ pra não ser covarde), sem ter que comprar o ReShaper? O que eu tenho aqui na minha máquina não tem :frowning:
Tem NUnit integrado sem ser na versão enterprise? Documentação da api integrada no intellisense? Porque pra ser melhor que o eclipse ou o netbeans pra mim teria que ter pelo menos isso, e como eu disse, não estou nem comparando com o intellij pra não ser covarde.

L

Já li tudo que podia deste tópico, e o que eu consegui entender em quase 8 páginas que só tem ladainha e acusações. E na minha conclusão é que as pessoas esqueceram o assunto e estão de agredindo…
Os nervos estão a flor da pele…
Vamos relaxar pessoal:
“A vida é muito importante para ser levada a sério” Oscar Wilde.

Bolo de maracujá:
INGREDIENTES:

* 1 copo americano de suco de maracujá natural
* 2 colheres de sopa de manteiga
* 4 ovos
* 2 xícaras de chá de farinha de trigo
* 2 xícaras de chá de açúcar
* 1 colher de sopa de pó royal
  1. Numa batedeira bata as gemas, a manteiga e o açúcar.

  2. Sempre batendo acrescente o suco, a farinha e o pó royal.

  3. E por último misture as claras em neve e bata até a massa ficar homogênea e cremosa.

  4. Com o forno pré-aquecido e em uma forma untada, deixar assar de 30 a 45 min.

chun

ronildobraga:

**** Editado ****
Chun, eu nem terminei de ler o que vc escreveu… mas caso vc acha que eu esteja me escondendo:
meu nick no #java ronildojunior, meu blog www.iprogramming.blogspot.com. meu e-mail [email removido] que é o mesmo do msn ! quer endereco tb !? :?

Ler as coisas pela metade ? bem coisa sua mesmo…

renatosilva

Bom, eu acho que os testes são importantes, sejemos a favor ou contra, para que um projeto seja aceito na comunidade Java, assim como documentação.

Nunca estudei testes (e Java) direito, e todos os exemplos que eu via era aquele meio idiota do 2 + 2 = 4, eu não sei como é esse mundo, mas pelo menos acho a idéia dez…

Eu tenho uma lib que começei a fazer há 20 anos, e pôr testes nela está na todo list, pra dar a ela um status respeitável mínimo…

Resumindo ao saoj, o que eu quero dizer, é que muitas pessoas vão olhar com maus olhos o seu projeto se não tiver testes, e o ponto é se você quer conquistar o respeito dessas pessoas (maioria) ou está se lixando pra isso, e isso é uma decisão pessoal…

Também, é estranho por exemplo que (até onde sei) o kernel do Linux não use testes, você deixa de confiar no Linux porque ele não é testável??? Os testes parecem ser uma coisa específica ou mais presente na comunidade Java e no software corporativo…

IntelliIDEA eu acho rss!!!

foia

luidhi:
Já li tudo que podia deste tópico, e o que eu consegui entender em quase 8 páginas que só tem ladainha e acusações. E na minha conclusão é que as pessoas esqueceram o assunto e estão de agredindo…
Os nervos estão a flor da pele…
Vamos relaxar pessoal:
“A vida é muito importante para ser levada a sério” Oscar Wilde.

Bolo de maracujá:
INGREDIENTES:

* 1 copo americano de suco de maracujá natural
* 2 colheres de sopa de manteiga
* 4 ovos
* 2 xícaras de chá de farinha de trigo
* 2 xícaras de chá de açúcar
* 1 colher de sopa de pó royal
  1. Numa batedeira bata as gemas, a manteiga e o açúcar.

  2. Sempre batendo acrescente o suco, a farinha e o pó royal.

  3. E por último misture as claras em neve e bata até a massa ficar homogênea e cremosa.

  4. Com o forno pré-aquecido e em uma forma untada, deixar assar de 30 a 45 min.

  1. Tem teste unitário de cada passo !?
  2. Posso persistir numa forma quadrada ?! Ou uso a redonda ??
eliziario

Discordo aqui Sérgio.

Em todos os projetos que eu participo, uso um banco de dados diferente para o desenvolvimento, testes (geralmente bancos embutíveis) e para produção.

Eu sei que não são poucas pessoas que fazem isso.

Existem N motivos pelos quais uma aplicação escrita em um banco de dados não é portável para outro dessa maneira ingênua. Por exemplo, existem diferenças absurdas no modelo de locking do Oracle para outros bancos como o MSSQL ou MYSQL, que fazem com que cenários que envolvem concorrência tenham resultados totalmente distintos entre os dois bancos com o MESMO transaction isolation level. para uma aplicação pro zé da padaria, não vai fazer muita diferença. para uma aplicação oltp pesada com um alto volume de transações e um número gigantesco de usuários, só mudar a estratégia de geração de chaves faz uma diferença absurda.
Eu já vi muita gente se ferrar bonito com essa história de usar um mysql ou até mesmo um derby em desenvolvimento e nos testes de integração e depois passar para outro banco como o Oracle em produção.
É possível portar uma aplicação, e o hibernate facilita? Sim, mas é muita ingenuidade achar que é só mudar o dialeto do hibernate e tudo será uma maravilha.

L

foia:
luidhi:
Já li tudo que podia deste tópico, e o que eu consegui entender em quase 8 páginas que só tem ladainha e acusações. E na minha conclusão é que as pessoas esqueceram o assunto e estão de agredindo…
Os nervos estão a flor da pele…
Vamos relaxar pessoal:
“A vida é muito importante para ser levada a sério” Oscar Wilde.

Bolo de maracujá:
INGREDIENTES:

* 1 copo americano de suco de maracujá natural
* 2 colheres de sopa de manteiga
* 4 ovos
* 2 xícaras de chá de farinha de trigo
* 2 xícaras de chá de açúcar
* 1 colher de sopa de pó royal
  1. Numa batedeira bata as gemas, a manteiga e o açúcar.

  2. Sempre batendo acrescente o suco, a farinha e o pó royal.

  3. E por último misture as claras em neve e bata até a massa ficar homogênea e cremosa.

  4. Com o forno pré-aquecido e em uma forma untada, deixar assar de 30 a 45 min.

  1. Tem teste unitário de cada passo !?
  2. Posso persistir numa forma quadrada ?! Ou uso a redonda ??

Sim pude, utilize o UnitCake…
Utilize a forma quadrada para Windows e redonda para Linux.
Editado Depende do “flavor” do Linux que vc está usando…
Chega de se agredir pessoal!!! pelamordedeus!!!
eliziario

E você pelo visto, acha que é muito democrático se meter na discussão das pessoas e decretar que elas não devem discutir porque vossa excelência está ofendida com essa briga.

L

E você pelo visto, acha que é muito democrático se meter na discussão das pessoas e decretar que elas não devem discutir porque vossa excelência está ofendida com essa briga.

Poxa, acabou de voar uma cadeira na minha testa agora…
[so devolvendo o tapa]
Se você acha que democracia é chamar a casa dos outros de put*iro, infelizmente temos pontos de vista diferentes…
[/so devolvendo o tapa]

luiz_ross

É por essas e outras que uso o banco pra teste e homologação, igual ao que vai estar em produção

eliziario

E você pelo visto, acha que é muito democrático se meter na discussão das pessoas e decretar que elas não devem discutir porque vossa excelência está ofendida com essa briga.

Poxa, acabou de voar uma cadeira na minha testa agora…
Não quis ofender. Mas acho legal exercitarmos o papo direto sem frescuras. Discutir é normal. Talvez se houvesse mais quebra-pau e as pessoas não achassem que os candidatos que discutem “são feios”, nossos políticos seriam bem melhores.
Já pararam pra pensar que nosso congresso é igual ao GUJ? alguem aparece com algum projeto idiota como a transposição do Rio São Francisco, e não tem ninguem pra levantar e dizer: “Vossa excelência é um imbecil ou então é um ladrão”. E de gentileza em gentileza os problemas nunca são resolvidos e continuamos vivendo em nossa república caracu, onde o poder entra com a cara, e nós…

Getware

Pois é aqui na empresa e nas outras que trebalhei tb usamos o mesmo…
Aqui todos os BDs são DB2…

roadhouse

eliziario:

Não quis ofender. Mas acho legal exercitarmos o papo direto sem frescuras. Discutir é normal. Talvez se houvesse mais quebra-pau e as pessoas não achassem que os candidatos que discutem “são feios”, nossos políticos seriam bem melhores.
Já pararam pra pensar que nosso congresso é igual ao GUJ? alguem aparece com algum projeto idiota como a transposição do Rio São Francisco, e não tem ninguem pra levantar e dizer: “Vossa excelência é um imbecil ou então é um ladrão”. E de gentileza em gentileza os problemas nunca são resolvidos e continuamos vivendo em nossa república caracu, onde o poder entra com a cara, e nós…

err… sem querer colocar mais combustível na flamewar aqui mas em que especificamente essa thread melhorou o nível do GUJ? :?

renatosilva

foia:
luidhi:

  1. Tem teste unitário de cada passo !?
  2. Posso persistir numa forma quadrada ?! Ou uso a redonda ??

Já conhece novo Maracujator Bolo Pesistence Framework? Ele permite que você persista o bolo na fôrma que desejar, é a solução de todos os seus problemas!

Lá vai os testes:

  1. É gororoba?

  2. Mais gororoba?

  3. Está homogênea? Está cremosa?

  4. Ainda é gororoba, ou já virou bolo? Se sim, está gostoso?

L

E você pelo visto, acha que é muito democrático se meter na discussão das pessoas e decretar que elas não devem discutir porque vossa excelência está ofendida com essa briga.

Poxa, acabou de voar uma cadeira na minha testa agora…
Não quis ofender. Mas acho legal exercitarmos o papo direto sem frescuras. Discutir é normal. Talvez se houvesse mais quebra-pau e as pessoas não achassem que os candidatos que discutem “são feios”, nossos políticos seriam bem melhores.
Já pararam pra pensar que nosso congresso é igual ao GUJ? alguem aparece com algum projeto idiota como a transposição do Rio São Francisco, e não tem ninguem pra levantar e dizer: “Vossa excelência é um imbecil ou então é um ladrão”. E de gentileza em gentileza os problemas nunca são resolvidos e continuamos vivendo em nossa república caracu, onde o poder entra com a cara, e nós…
Bem vou ao dentista, depois eu respondo isso com mais calma, boa Sexta-Feira 13 para todos, e cuidado ao voltarem para casa.

L

renato3110:
foia:
luidhi:

  1. Tem teste unitário de cada passo !?
  2. Posso persistir numa forma quadrada ?! Ou uso a redonda ??

Já conhece novo Maracujator Bolo Pesistence Framework? Ele permite que você persista o bolo na fôrma que desejar, é a solução de todos os seus problemas!

Lá vai os testes:

  1. É gororoba?

  2. Mais gororoba?

  3. Está homogênea? Está cremosa?.

  4. Ainda é gororoba ou já virou bolo? Se sim, está gostoso?


Polimorfismo?

Getware

luidhi:
renato3110:
foia:
luidhi:

  1. Tem teste unitário de cada passo !?
  2. Posso persistir numa forma quadrada ?! Ou uso a redonda ??

Já conhece novo Maracujator Bolo Pesistence Framework? Ele permite que você persista o bolo na fôrma que desejar, é a solução de todos os seus problemas!

Lá vai os testes:

  1. É gororoba?

  2. Mais gororoba?

  3. Está homogênea? Está cremosa?.

  4. Ainda é gororoba ou já virou bolo? Se sim, está gostoso?


Polimorfismo?

Acho que sim… :smiley:

Luiz_Aguiar

vcs preferem o vim ou o emacs?

Getware

Para programar?

Fabio_Kung

Não acho ingênua… pelo contrário! :frowning:

Você tem absoluta razão, mas:

  1. Não quero, e nem tenho como me preocupar com acesso concorrente de um número gigantesco de usuários enquanto desenvolvo. Para isso existem os testes de carga.

  2. A maioria das aplicações são para o zé da padaria (claro que é um exagero, só aproveitei a expressão!) e não aplicacões como o Amazon.com.

Então para mim, é perfeitamente aceitável poder simplesmente baixar o projeto e executá-lo sem precisar configurar nenhum ambiente.
[/quote]

Calma lá. Usando ou não o mesmo banco de dados em todas as etapas do processo, você vai precisar fazer testes de carga do seu sistema de milhões de usuários simultâneos. Eu disse que o principal uso é para desenvolvimento e testes, mas se no seu teste de integração você também precisa testar a carga, aí realmente precisa replicar o ambiente de produção.

Continuo não achando ingênuo! :smiley:

ramilani12

Essa é a verdadeira sexta-feira 13 …

renatosilva

Para programar?

nano rss

Jsatriani

E o Ibatis ?

A

legionarioba
Nao faco questao de count…
So falei o que é verdade…
So fale o que vai interessar pra voce. Voce vai usar o fw?
Se sim, blz… seja bem vindo e ajude seu framework crescer…
Se nao, nem perca seu tempo vendo 10 paginas atoa…

legionarioba

afsrj,

Cara na boa acorde. Isso aqui é um fórum lembra? Você só lê a respeito do que você usa? Você só escreve sobre o que você trabalha diretamente? Não preciso dizer como precisa ser o perfil de alguém que é da nossa área.

Eu a tempos atrás nunca tinha usado hibernate, mas de tanto ver os tópicos, ainda que não me interessasse, eu li sobre, apenas no fórum. Quando precisei usar no trabalho foi muito mais fácil, portanto foi super válido.

Acabamos no trabalho admitindo, da pior forma, com sistema utilizando o mesmo, que reinventamos a roda e criando um frameworkzinho. Tags, Controlador, persistência, etc etc… Foi ótimo pra nós como aprendizado, mas aprendemos da pior forma, porque talvez tenhamos sido audaciosos demais, se tivéssemos usado o tempo que temos pra pesquisar e usar algo ja pronto, COM CERTEZA estaríamos com MentaWai, VRaptor ou JSF. Agora, ao menos pra mais 2 projetos precisaremos usar esse fw nosso. Teremos um tempo pra fazer umas pequenas mudanças nele. O que aconteceu? No primeiro instante que emiti uma opinião, argumentei com algo que não me interessava, que eu não usava, o Mentawai. Pouco mexi nele, mas vi muitas idéias legais que poderiam ser utilizadas no que teremos que fazer.

Se você acha que contribuição é só usar o que te interessa no momento, repito, ACORDE. Garanto que nessas 9, 10 páginas, excluindo-se muitas discussões tolas(como a provocada por você) e comentários pessoais, tem muitos argumentos válidos, e BEM válidos. Mas se você não foi capaz de extrair uma linha:

Tente usar sozinho, junte mais dois ou 3 amigos, só não chame isso de comunidade.
E continue achando que ninguém pode criticar o seu fw, só porque você acha que sua ignorancia e/ou orgulho são o mais importante, afinal, quem vai usar é você, e SÓ você, e “quem não quiser que me ignore”. Assim você vai looonge.

Pior que isso é um problema mais grave, não tem a ver com MentaWai ou Mentabean, tem a ver com você mesmo. Afinal, fws como o do Menta tem fórum, niguém faz críticas negativas lá?

L

Não imagina, me chamar de vossa senhoria de modo pejorativo não é ofender…

bzanchet

saoj:

O sabor cupuaçú te incomoda? Deixe essa preocupação com o dono da sorveteria, pois ele mesmo vai tirar o cupuaçú do cardápio se ningúem comprar, ok?

De novo. O sabor cupuaçú te incomoda. Não pessa cupuaçú e seja feliz. Deixe ele lá quieto no freezer do dono da sorveteria.

Imaginemos que um sorveteiro vai a um fórum de sorveteiros e consumidores de sorvete. E pede opinião sobre o seu novíssimo sorvete sabor cupuaçú. Como era de se esperar, a maioria acha que poucos consumidores vão comprar o tal sabor cupuaçú. Criticam o sabor do cupuaçú. São críticas, apenas. O sorveteiro-inventor não deveria ficar com seu ego ferido. :?

fmeyer

bzanchet:
saoj:

O sabor cupuaçú te incomoda? Deixe essa preocupação com o dono da sorveteria, pois ele mesmo vai tirar o cupuaçú do cardápio se ningúem comprar, ok?

De novo. O sabor cupuaçú te incomoda. Não pessa cupuaçú e seja feliz. Deixe ele lá quieto no freezer do dono da sorveteria.

Imaginemos que um sorveteiro vai a um fórum de sorveteiros e consumidores de sorvete. E pede opinião sobre o seu novíssimo sorvete sabor cupuaçú. Como era de se esperar, a maioria acha que poucos consumidores vão comprar o tal sabor cupuaçú. Criticam o sabor do cupuaçú. São críticas, apenas. O sorveteiro-inventor não deveria ficar com seu ego ferido. :?

Se fosse maionese isso iria encaixar melhor no assunto, ainda mais se fosse um vendedor itinerante de maionese

A

legionarioba:
afsrj,

Cara na boa acorde. Isso aqui é um fórum lembra? Você só lê a respeito do que você usa? Você só escreve sobre o que você trabalha diretamente? Não preciso dizer como precisa ser o perfil de alguém que é da nossa área.

Eu a tempos atrás nunca tinha usado hibernate, mas de tanto ver os tópicos, ainda que não me interessasse, eu li sobre, apenas no fórum. Quando precisei usar no trabalho foi muito mais fácil, portanto foi super válido.

Acabamos no trabalho admitindo, da pior forma, com sistema utilizando o mesmo, que reinventamos a roda e criando um frameworkzinho. Tags, Controlador, persistência, etc etc… Foi ótimo pra nós como aprendizado, mas aprendemos da pior forma, porque talvez tenhamos sido audaciosos demais, se tivéssemos usado o tempo que temos pra pesquisar e usar algo ja pronto, COM CERTEZA estaríamos com MentaWai, VRaptor ou JSF. Agora, ao menos pra mais 2 projetos precisaremos usar esse fw nosso. Teremos um tempo pra fazer umas pequenas mudanças nele. O que aconteceu? No primeiro instante que emiti uma opinião, argumentei com algo que não me interessava, que eu não usava, o Mentawai. Pouco mexi nele, mas vi muitas idéias legais que poderiam ser utilizadas no que teremos que fazer.

Se você acha que contribuição é só usar o que te interessa no momento, repito, ACORDE. Garanto que nessas 9, 10 páginas, excluindo-se muitas discussões tolas(como a provocada por você) e comentários pessoais, tem muitos argumentos válidos, e BEM válidos. Mas se você não foi capaz de extrair uma linha:

Tente usar sozinho, junte mais dois ou 3 amigos, só não chame isso de comunidade.
E continue achando que ninguém pode criticar o seu fw, só porque você acha que sua ignorancia e/ou orgulho são o mais importante, afinal, quem vai usar é você, e SÓ você, e “quem não quiser que me ignore”. Assim você vai looonge.

Pior que isso é um problema mais grave, não tem a ver com MentaWai ou Mentabean, tem a ver com você mesmo. Afinal, fws como o do Menta tem fórum, niguém faz críticas negativas lá?

Meu Deus esse MOLEQUE nao entende nada…
Que ler, que criticar, que elogiar , quer da uma de maluco , quer da uma de politico escrevendo pacas e falando coisa que pouco interessa ao topico inicial.
Fique a vontade…
Mas se informa antes de falar algo sensato e baboseira dita por ti…
1 - nao sou dono do framework Mentawai , sou usuario como voce é usuario desse framework da sua empresa.
2 - estamos a 2 dias na mesma ladainha e voce baixou o mentawai e fez seu HelloWorld para ver se ele é um framework pequeno iqual sua cabeca imagina?
3 - eu continuo apoiando o novo framework do SAOJ, e digo que se amanha achar uma merda vou no forum do projeto e falarei onde acredito que esta ruim…
Como digo que acho muitos projetos uma merda, projetos grandes mesmo, tais como: EJB 2.0 que somos “obrigado” a conviver. A nomeclatura do Struts, A configuracao do Spring + Hibernate.etc…
Mas viu a diferenca?
Eu usei e testei os mesmo citados e alguns uso por obrigacao( infelizmente )…
Vai no forum do Menta e veja o quanto ja critiquei aquilo lá.
Hoje em dia os projetos que sao passados para mim que eu poderia fazer usando JSF, WebWork ou Struts.
Eu uso o Menta.
Porque acho mais prazeroso Menta, assim como sinto com o IntelliJ e nao com o Eclipse…
Questao de gosto. Mas usei e dou ate suporte aos framework citados acima, nao posso falar do Spring-MVC, do Struts 2 e outros porque nao sai do HelloWorld. É isso que eu quero que voce entenda. Faça como o CV fez, baixe o fonte veja se te agradou e critique/elogie…Agora falar so porque viu o post é ser bastante atrassado!

Eu critico/elogio os que uso e mas nao critico/elogio os que eu jamais usei so porque achei o exemplo idiota e improdutivo…

Ja viu o exemplo de select do hibernate?
Ele inicia uma transaction para executar um select…
Sera que existem pessoas que resolveram nao usa-lo por isso? Existem sim, uma é o SAOJ que resolveu fazer a sua necessidade no MentaBeans porque nao gostou do Hibernate, mas ele usou…
Agora voce nao usou e esta metando o pau a toa…
Vamos parar por aqui, o nivel ja esta uma merda…

[]'s Rapaz!

Fabio_Kung

afsrj:
Ja viu o exemplo de select do hibernate?
Ele inicia uma transaction para executar um select…

Onde? (só por curiosidade)

Paulo_Silveira

Pelos comentarios que ele fez, e pelos pontos que eu e outras pessoas apontaram, demonstram que ele so fez muito pouco com o hibernate

legionarioba

afsrj,

Cara, apenas LÊ o que eu escrevi, e APENAS o que eu escrevi, não o que você acha que EU escrevi, acho que mais óbvio impossível, mas VOCÊ PEDIU:

1 - nao sou dono do framework Mentawai, sou usuario como voce é usuario desse framework da sua empresa.

Onde eu disse que você é dono do Menta? Falei dele apenas em referência a pessoa que você defendeu de forma pouco argumentativa, e que REPRESENTA o Menta.

Se responde a você, JÁ FIZ um Hello World do Menta sim, e baseei a referência que fiz lá na empresa a Mundo Java que fala dos fw’s brasileiros… Você leu em algum tópico no guj ou qualquer outro lugar do mundo eu falar que o Menta é pequeno? Cara, como disse em outro post seu problema é outro. Que tal um curso de Redação Online? Aqui informações sobre o curso e aqui como se inscrever. Basicamente o que quero dizer é que Má Interpretação de Texto prejudica sua avaliação e fuga do Tema (mais coerente com o momento) te eliminaria de qualquer vestibular.

Não disse que você não tem direito de dar sua opinião, mas a [b]alguns posts estou querendo entender o porque você concorda ou não com o MentaBean. Não estou perguntando se você gosta do saoj, do Mentawai, nem se eu gosto. Fuga do Tema de novo e novo zero.

Como digo que acho muita coisa uma merda, coisa grandes mesmo, tais como: EJB 2.0 que somos “obrigado” a conviver. A nomeclatura do Struts, A configuracao do Spring + Hibernate.etc…
Mas viu a diferenca?
Eu usei e testei os mesmo citados e alguns uso por obrigacao…

Vou ter que criar uma Collection<FugaDoTema> pra esse post, um objeto só não vai dar. Você tem todo direito de achar todos eles uma merda, mas se você acha deve ter um porque(e antes que você fuja do tema de novo, não to dizendo se você sabe ou não dessas tecnologias). Não necessariamente precisar usar todos os frameworks do mundo pra opinar em algo. Quase nunca fiz nada em Struts, mas você acha que é mais fácil fazer um “Hello World” com o Struts 1.0 ou com o VRaptor? Eu mexi tanto no primeiro quanto no segundo…

Eu usei e testei os mesmo citados e alguns uso por obrigacao…
Vai no forum do Menta e vi o quanto ja critiquei aquilo lá e hoje acho que pro que eu usaria JSF, WebWork, Struts o Menta faz o mesmo…
Claro sinto + satisfacao com o Menta, como sinto com o IntelliJ e nao com o Eclipse…
Mas usei todos que eu critiquei , elogio os que uso e mas nao ataco os que eu ja mais usei so porque achei o exemplo idiota e improdutivo…

1º Não estou questionando seus gostos pessoais, seria fuga do tema(e olhe que não fiz o curso do link lá em cima) :slight_smile:
2º Pra não dizer que vou repetir os mesmos argumentos, vou fazer uma analogia pra ver se fica mais claro: Você precisa fumar pra saber que seu pulmão pode não ter muito futuro? Precisa fumar até ver o exame com aquela mancha negra em seu peito? Ou ao menos pensa em refletir quando o “Ministério da Saúde adverte” você pela tv? Espero que em analogias como essa você não pense assim…pois câncer mata…

Ja viu o exemplo de select do hibernate?
Ele inicia uma transaction para executar um select…
Sera que existem pessaos que resolveram nao usa-lo por isso? Existem sim, uma é o SAOJ que resolveu fazer a sua necessidade no MentaBeans porque nao gostou do Hibernate, mas ele usou…
Agora voce nao usou e esta metando o pau a toa…

Cara, volto a dizer , não escreve o que você acha que você pensou do que alguém escreveu, se é pra fazer referência escreve o que alguém escreveu.

saoj wrote:

Meu ÚNICO post que se referia ao tema do tópico, apenas questionou o que saoj escreveu sobre TESTES UNITÁRIOS ok? Acho que interpretação continua não sendo seu forte… Não falei bem nem mal nem se quer do próprio MentaBeans, quanto mais de qualquer outra coisa…

Agora você pode ler esse post duas vezes e tentar interpretar o que está escrito??

A

Como falei antes, vou parar por aqui…
Mas depois de ler Collections
Preciso falar :
“Nerd da terra da Carla Perez é um saco PQP”!

A

Paulo Silveira e Fabio Kung

Getting Started

Capitulo 2 do Livro do Hibernate

Alguns topicos que discutimos isso, e que lembro do SAOJ criticando isso:
http://www.guj.com.br/posts/list/50471.java

A

Antes iniciar qualquer novos posts.
Eu uso o Hibernate e gosto muito!
Comecei agora usar Ibatis , porque a nova empresa que eu trabalho esta adotando esse framework.

Mauricio_Linhares

afsrj:
Paulo Silveira e Fabio Kung

Getting Started

Capitulo 2 do Livro do Hibernate

Alguns topicos que discutimos isso, e que lembro do SAOJ criticando isso:
http://www.guj.com.br/posts/list/50471.java

Isso é só um exemplo, faz isso quem quer. O framework só inicia transações se você mandar ele fazer isso, se não mandar, ele não faz.

legionarioba

Garoto…garoto…

Curso de Etiqueta pra você: http://cursos.universia.net/app/es/showcourse.asp?cid=2422&langid=PT"]
você…Só mais uma perguntinha,melhor…

Vamos criar uma enquete?

Por que afsrj apóia o MentaBean?

  1. Não sei. Ele não falou.
  2. Não sei. Ele também não sabe.
  3. Ele sabe o porque. Mas o porque não interessa, porque legionarioba é Nerd e vem da terra da Carla Perez.

Eu devo ser exceção porque essa hora não estou nem dormindo, nem tomando água de coco, nem na rede … eu posso ser exceção, mas tudo que você escreve é regra: vazio

Esquece quem eu sou, o que eu acho o que não acho, deixa de ser infantil e preconceituoso por UM POST por favor, engole o orgulho e diz porque VOCÊ(eu disse VOCÊ) defende ou não a respeito do MentaBean, como muitos aqui fizeram…

A

Maurício Linhares:
afsrj:
Paulo Silveira e Fabio Kung

Getting Started

Capitulo 2 do Livro do Hibernate

Alguns topicos que discutimos isso, e que lembro do SAOJ criticando isso:
http://www.guj.com.br/posts/list/50471.java

Isso é só um exemplo, faz isso quem quer. O framework só inicia transações se você mandar ele fazer isso, se não mandar, ele não faz.

Eu sei…
eu uso o hibernate e nao faco assim…
So respondi o que eu postei acima.
Lembro que talvez tenha sido dessa e de outras que o SAOJ nao gostou do hibernate.

legionarioba

A exemplificação do que eu falei


So respondi o que eu postei acima.
Lembro que talvez tenha sido dessa e de outras que o SAOJ nao gostou do hibernate.

Talvez? Talvez sobre algo que outra pessoa acha e nem se pronunciou a respeito, é quase “falsidade ideológica”…hehe

Fabio_Kung

Valeu pela referência! Logo que eu postei o fmeyer me passou no messenger.

Mas, como o Maurício disse, isso não é culpa da ferramenta, e sim de quem usa errado.

paulovittor23

Queria dar os parabéns ao Sergio pela iniciativa :wink: , o trabalho é bem interessante, e assim como citado por ele está em processo de evolução…

Por outro lado gostaria de relatar minha decepção não só pela falta de incentivo a alternativas ao dito “correto” (tais atitudes apenas inibem as pessoas de tentar algo diferente…), como pela falta de respeito entre profissionais do mesmo segmento que deveriam cooperar pelo crescimento mútuo( não só técnicamente, mas principalmente como homens )…

[]s

legionarioba

afsrj:
Maurício Linhares:
afsrj:
Paulo Silveira e Fabio Kung

Getting Started

Capitulo 2 do Livro do Hibernate

Alguns topicos que discutimos isso, e que lembro do SAOJ criticando isso:
http://www.guj.com.br/posts/list/50471.java

Isso é só um exemplo, faz isso quem quer. O framework só inicia transações se você mandar ele fazer isso, se não mandar, ele não faz.

Eu sei…
eu uso o hibernate e nao faco assim…
So respondi o que eu postei acima.
Lembro que talvez tenha sido dessa e de outras que o SAOJ nao gostou do hibernate.

Nova enquete:

Qual a afirmação mais correta?

  1. afsrj acha que o hibernate usa sempre transaction?
  2. afsrj afirma na citação 2 que o hibernate usa sempre transaction?
  3. afsrj afirma na citação 2 que o hibernate usa transaction por default, mas é configurável pra não ser?
  4. afsrj acha que saoj ache isso ruim no hibernate
  5. afsrj é meio confuso. Pára de criar enquete legionarioba, deixa o menino ir dormir!
    5)Pára legionarioba! Você é um nerd da terra de Carla Perez. Muda de assunto, ele vai usar o MentaBean porque sim e acabou!
  6. As inscrições nos cursos de Redação e etiqueta estão encerradas. afsrj, inconformado, vai continuar duelando com legionarioba e quem mais atacar o MentaBean
brunohansen

Fala ae saoj,

Só li o início do tópico e agora to um pouco com sono, mas com certeza vou terminar de ler depois.

Se você esta fazendo esse framework em busca de conhecimento, parabéns com certeza ele deve estar servindo para o seu fim!

Se você esta fazendo esse framework em busca de um ideal, parabéns é difícil buscar um ideal com tantas pessoas torcendo contra. Mais uma vez parabéns por seguir um ideal!

A respeito a testes, a meu ver tenho que te parabenizar pelo menos umas 1000 vezes!

Sou a favor de testes para tudo. Mas continuo achando muito importante o papel que você exerceu ou está exercendo aqui neste tópico.

Você ser contra enquanto todo mundo é a favor me faz questionar se você tem alguma razão. Na verdade não só eu, acho que um monte de gente deve ter se questionado e isto nos mostra como você cumpriu bem o seu papel.

Hoje quando eu refatoro e acabo estragando algumas outras coisas, dou graças a Deus por ter testes. E acabo tendo o pensamento que você levantou, não fui bom o suficiente para não estragar as outras coisas. Acho que sempre vai ser assim pois somos humanos e estamos sempre errando, por isso temos que contar com a ajuda dos testes para nos salvar.

Porém como em alguns lugares Orientação a objetos, refatoração e etc são desnecessários, deve ter algum lugar que testes também são desnecessários.

Ainda continuo achando que você tem alguma razão!

Boa sorte nos seus desafios!

Mauricio_Linhares

Até onde eu sei não. O Sérgio não gosta do Hibernate porque ele gosta de fazer as coisas com JDBC direto, como ele já havia dito a muito tempo atrás quando levantou tópicos sobre o Hibernate ser fácil ou não de aprender. Realmente, aprender a usar o Hibernate não é trivial, ele olhou, fez um olá mundo e não se agradou, ponto.

O tamanho do buraco que é escrever um framework de ORM é muito fundo, persistência por alcançabilidade, lazy-loads, travas otimistas e isso não é simples. Se fosse simples, haveriam milhões frameworks de ORM por aí, assim como existem milhões de frameworks web.

cv1

Concordo, e na minha definicao, crescimento mutuo nao involve reinventar e promover uma versao simploria e nao-testada do Hibernate. :?

Se vc quiser anunciar um projeto novo pra um forum do tamanho do GUJ, onde vc provavelmente vai causar um numero significativo de pessoas a perder pelo menos alguns minutos lendo e entendendo a sua ideia, talvez seja uma boa ponderar um pouco se vale a pena - ou se vai ser so um puta desperdicio de tempo coletivo.

Nao sei voces, mas pelo menos uma coisa eu confirmei depois desse topico: se algum projeto em que eu for trabalhar tiver um JAR do Mentawai no classpath, ta na hora de treinar bem os atalhos de refactoring e structural search-n-replace do IntelliJ e trocar pra algum framework cujos desenvolvedores se importam em demonstrar a qualidade das ideias e do produto concretizado a partir delas.

Tem varios frameworks desses por ai, e nao vale a pena correr o risco de ficar travado usando Mentawai, que nao te da uma garantia minima de qualidade ou proposito.

cv1

Ser contra alguma coisa que uma industria inteira concorda ser uma boa pratica eh normalmente um sinal de que vc perdeu o bom-senso, ou nao esta considerando algum ponto - especialmente quando vc comeca a achar que a sua experiencia vale mais que a de outros (que talvez ja andaram pelos mesmos caminhos e tiveram as mesmas duvidas, mas mais que isso, tiveram o julgamento e humildade pra entender que estavam errados).

saoj

Sei que é difícil, mas tenta baixar um pouco a bolinha CV… Não chame mais a empresa onde os outros trabalham de puteiro, ok? (Sim eu falar que o comentário do fmeyer foi patético não lhe dá o direito de fazer isso, e não tende blefar pois eu falei que sua casa era um puteiro depois que vc chamou o meu trabalho de puteiro. Inclusive peços desculpas a vc por isso, pois tenho certeza que não é o caso do seu domícilio…)

O que vc fala tem muito pouca credibilidade, pois as pessoas estão vendo que vc está criticando apenas pelo prazer de criticar. Seus argumentos são como vc, pouco confiáveis e carregados de “segundas-intenções”.

Um companheiro seu aí da ThoughtWork fez um framework bem parecido com o Mentawai usando configuração programática, olha só: http://waffle.sourceforge.net/registrar.html

Por algum motivo os pacotes dele possuem as palavras ThoughtWork.

O Mentawai é um grande sucesso no Brasil e no exterior. Pessoas com muita mais credibilidade e insenção que o CV falam bem, usam e estão satisfetias.

Algumas pessoa entendem e aceitam que resultados concretos falam muito mais alto que o papo-furado de críticos mal-intencionados. Recebemos vários emails e mensagens de apoio todos os dias e publicamos algumas aqui: http://forum.mentaframework.org/posts/list/157.page

O problema é que o sucesso alheio dos outros incomoda alguns. Não deveria ser assim. Quando vejo alguém que conseguiu alguma coisa (profissionalmente, pessoalmente, espiritualmente, em relação a família, etc) não fico menosprezando essa pessoa para eu me sentir melhor, coisa que o CV e muitos fazem aqui. Eu procuro usá-la como insentivo para que eu almeje e trabalhe por coisas maiores.

Testes não é pecado. Se a sua aplicação possui testes, melhor pra vc e pra ela. Se o Rubem arranjar tempo para fazer os testes do Mentawai, mal não vai fazer para o projeto. Apenas eu quiz dizer que disciplina, organização, orientação a contratos, boas práticas de OO, faz com que vc possa EVOLUIR um sistema sem quebrá-lo. Um contrato pode ser preservado enquanto vc cria outros 1000 em cima dele, ou seja, se vc tem um contrato funcionando, sem bugs e vc cria outro, nada garante que esse novo que vc criou vai funcionar MAS O QUE JÁ EXISTIA TEM QUE FICAR INTACTO.

Exercito isso todos os dias no meu trabalho, onde um simples bug pode custar milhões e quebrar uma coisa que já estava funcionando é totalmente inaceitável.

Mais um exemplo: As vezes nos deparamos com um bug ou problema em um código que nem foi feito por nós. Isso aconteceu nesse tópico aqui: http://forum.mentaframework.org/posts/list/1085.page

O problema tinha haver que em determinados web containers, o listener por algum motivo não era carregado, enquanto em outros funcionava sem problemas. (Qual o teste que vai detectar esse problema eu não sei…)

Tínhamos duas opções:

  1. Refazer toda a parte problemática, mudando o approach do listener para algo diferente e correr um risco gigantesco de criar muitos outros bugs de regressão (alguns dirão que se houvesse testes isso não aconteceria, de novo tenho minhas dúvidas…)

  2. Manter os contratos e o código já existente e fazer uma alteração conservativa e seguro, seguindo a premissa máxima: “Não criarás novos bug no sistema!”

Um dos desenvolvedores do Mentawai queria partir para a opção 1), tendo inclusive já refeito boa parte do código. Depois de uma boa conversa com ele decidimos pela opção 2) e o problema foi solucionado colocando as seguintes linhas de código logo antes da primeira utilização da variável que estava dando o problema:

if (InputMoneyListener.LIST_PATH_FILES == null) {
 
    InputMoneyListener iml = new InputMoneyListener();
 
    iml.contextInitialized();
 
 }

Termino esse post com a seguinte citação do livro “Know your limits, then forget them” de John Mason, que serviu de incentivo para mim e tenho certeza que servirá para muitos outros aqui dessa comunidade:

Paulo_Silveira

TODO framework tem configuracao prorgramatica. TODO. Nos mostramos isso pra voce com o Hibernate, mostraram no Struts Validator, etc. No Waffle é que nem no pico container: ele faz so o basico, a parte que encapsula a configuracao ainda ser feita em outro lugar, que é o nanocontainer!!! TODO core de framework deve ser possivel ser configurado programaticamente!!!

Nao da nem pra entender o que voce ta insinuando. Que o cara copiou o mentawai? (repare que as logicas do waffle NAO em ServletRequest sendo acessado, nem tem de estender uma outra classe). Que a ideia de configuracao programatica foi voce quem teve?

Sergio, voce é um bom programador, mas nao é porque voce usou alguma coisa que as outras pessoas estao te copiando. Pelo contrario, no caso do hibernate nao parece que é voce que gostou tanto que esta copiando? Até a configuracao programatica voce esta copiando!!!

saoj

Calma, Paulo.

Configuração programática é uma idéia que enfrenta resistencia de muitos. Me diga onde está o exemplo do VRaptor com configuração programática. Me diga onde está o exemplo do Hibernate com configuração programática. Me diga onde está o exemplo do Struts2 de validação com configuração programática. A proposta do Mentawai, que enfrentou milhões de pedradas, é fazer TUDO com configuração programática e NADA (ou o mínimo possível) com XML e Annotations. Isso em 2005. Alguns vão gostar e outros não. Assim é a vida. Prefiro focar nos que aprovam. Para os que querem se aprofundar mais nessa questão, fizemos um comparativo entre Mentawai e Struts2. Pegamos todos os exemplos do Struts2 DA DOCUMENTAÇÃO OFICIAL DELE. Vejam o resultado aqui e se houver algum erro, por favor opinem: http://forum.mentaframework.org/posts/list/1112.page

Essas coisas “existem” mas não são incentivadas, documentadas ou comentadas pelos seus autores, logo quase que “inexistem” pois ninguém usa ou fala delas.

Não falei que o Waffle copiou nada. Onde vc viu isso? Acho que vc INTERPRETOU ISSO A SUA MANEIRA.

O que eu quiz dizer é: “O Registar do Waffle é bem parecido com o ApplicationManager do Mentawai. O resto é diferente, ótimo, mas o approach a configuração é o mesmo, ou seja, configuração programática.”

Quanto ao MentaBeans agradeço os seus argumentos que foram totalmente válidos e corretos. Lembro aos senhores que o sistema está em beta, ou seja, seu futuro é totalmente incerto e está em caráter de experimentação no momento. Se me equivoquei com o MentaBeans, me perdoem. Continuarei tentando acertar…

Quanto ao Hibernate, o MentaBeans está mais para iBatis. O Hibernate mapeia Objetos em Tabelas e o iBatis e o MentaBeans mapeiam Objetos em QUERIES SQL.

Mauricio_Linhares

Pronto, chegamos ao ponto do caso, o Sérgio não considera configuração usando Annotations como configuração programática. Partindo disso, realmente, o VRaptor e o Hibernate não tem o seu conceito de configuração programática, porque é melhor eu ir lá e fazer isso:

bean(hello.User.class, "Users")
 		.field("id", DBTypes.AUTOINCREMENT, true)
 		.field("name", DBTypes.STRING)
 		.field("age", DBTypes.INTEGER);

Do que usar uma simples annotation que já receba o nome e o tipo default da coluna sem que eu tenha que configurar nada.

Ou não é?

renatosilva

Saoj, mas nem a idéia de testes automatizados lhe parece razoável?

saoj

Pronto, chegamos ao ponto do caso, o Sérgio não considera configuração usando Annotations como configuração programática. Partindo disso, realmente, o VRaptor e o Hibernate não tem o seu conceito de configuração programática, porque é melhor eu ir lá e fazer isso:

bean(hello.User.class, "Users")
 		.field("id", DBTypes.AUTOINCREMENT, true)
 		.field("name", DBTypes.STRING)
 		.field("age", DBTypes.INTEGER);

Do que usar uma simples annotation que já receba o nome e o tipo default da coluna sem que eu tenha que configurar nada.

Ou não é?

Exatamente! Parabéns por ter resumido com perfeição.

Se isso é o certo, se isso é o errado, é outra questão. Eu diria que é uma questão de gosto pessoal. Ambas estão certas, com alguns preferindo uma e outros preferindo a outra.

Dá uma olhada na validação via Annotations do Struts2: (documentação oficial do Struts2: http://struts.apache.org/2.x/docs/validation-annotation.html)

@Validation()
 public class SimpleAnnotationAction extends ActionSupport {
 
     @RequiredFieldValidator(type = ValidatorType.FIELD, message = "You must enter a value for bar.")
     @IntRangeFieldValidator(type = ValidatorType.FIELD, min = "6", 
      max = "10", message = "bar must be between ${min} and ${max}, current value is ${bar}.")
     public void setBar(int bar) {
         this.bar = bar;
     }
 
     public int getBar() {
         return bar;
     }
 
     @Validations(
             requiredFields =
                     {@RequiredFieldValidator(type = ValidatorType.SIMPLE, 
 fieldName = "customfield", message = "You must enter a value for field.")},
             requiredStrings =
                     {@RequiredStringValidator(type = ValidatorType.SIMPLE,
  fieldName = "stringisrequired", message = "You must enter a value for string.")},
             emails =
                     { @EmailValidator(type = ValidatorType.SIMPLE, 
 fieldName = "emailaddress", message = "You must enter a value for email.")},
             urls =
                     { @UrlValidator(type = ValidatorType.SIMPLE, 
 fieldName = "hreflocation", message = "You must enter a value for email.")},
             stringLengthFields =
                     {@StringLengthFieldValidator(type = ValidatorType.SIMPLE, trim = true, minLength="10" , 
 maxLength = "12", fieldName = "needstringlength", message = "You must enter a stringlength.")},
             intRangeFields =
                     { @IntRangeFieldValidator(type = ValidatorType.SIMPLE, 
 fieldName = "intfield", min = "6", max = "10", message = "bar must be between ${min} and ${max}, current value is ${bar}.")},
             dateRangeFields =
                     {@DateRangeFieldValidator(type = ValidatorType.SIMPLE, 
 fieldName = "datefield", min = "-1", max = "99", message = "bar must be between ${min} and ${max}, current value is ${bar}.")},
             expressions = {
                 @ExpressionValidator(expression = "foo &gt 1", 
 message = "Foo must be greater than Bar 1. Foo = ${foo}, Bar = ${bar}."),
                 @ExpressionValidator(expression = "foo &gt 2", 
 message = "Foo must be greater than Bar 2. Foo = ${foo}, Bar = ${bar}."),
                 @ExpressionValidator(expression = "foo &gt 3", 
 message = "Foo must be greater than Bar 3. Foo = ${foo}, Bar = ${bar}."),
                 @ExpressionValidator(expression = "foo &gt 4",
  message = "Foo must be greater than Bar 4. Foo = ${foo}, Bar = ${bar}."),
                 @ExpressionValidator(expression = "foo &gt 5",
  message = "Foo must be greater than Bar 5. Foo = ${foo}, Bar = ${bar}.")
     }
     )
     public String execute() throws Exception {
         return SUCCESS;
     }
 }
saoj

Claro, que mal isso pode fazer a um projeto? Nenhum! Só não acho que seja o fundamental, essencial, o mais importante, que a qualidade e/ou destino de um projeto/sistema/aplicação está intimamente ligado a isso. Como vc pode ver aqui, o CV e o fmeyer falaram categoricamente que se não tem testes é um lixo, é inútil.

Mauricio_Linhares

É bizonho.

Mas como você faria o mesmo (no mesmo nível de complexidade) com configuração programática?

fabiel

Massa cara, tomara que vingue !!

saoj

Maurício Linhares:

É bizonho.

Mas como você faria o mesmo (no mesmo nível de complexidade) com configuração programática?

A outra opção que o Struts2 documenta na sua documentação oficial é o uso de XML para validação, colocando expressões Java (código Java) no meio do XML: http://struts.apache.org/2.x/docs/validation.html

(reparem que é difícil achar alguma citação na documentação do Struts2 sobre configuração programática. Existe mesmo?)

&lt;!DOCTYPE validators PUBLIC 
         "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
         "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"&gt;
 &lt;validators&gt;
   &lt;!-- Field Validators for email field --&gt;
   &lt;field name="email"&gt;
       &lt;field-validator type="required" short-circuit="true"&gt;
           &lt;message&gt;You must enter a value for email.&lt;/message&gt;
       &lt;/field-validator&gt;
       &lt;field-validator type="email" short-circuit="true"&gt;
           &lt;message&gt;Not a valid e-mail.&lt;/message&gt;
       &lt;/field-validator&gt;
   &lt;/field&gt;
   &lt;!-- Field Validators for email2 field --&gt;
   &lt;field name="email2"&gt;
      &lt;field-validator type="required"&gt;
           &lt;message&gt;You must enter a value for email2.&lt;/message&gt;
       &lt;/field-validator&gt;
      &lt;field-validator type="email"&gt;
           &lt;message&gt;Not a valid e-mail2.&lt;/message&gt;
       &lt;/field-validator&gt;
   &lt;/field&gt;
   &lt;!-- Plain Validator 1 --&gt;
   &lt;validator type="expression"&gt;
       &lt;param name="expression"&gt;email.equals(email2)&lt;/param&gt;
       &lt;message&gt;Email not the same as email2&lt;/message&gt;
   &lt;/validator&gt;
   &lt;!-- Plain Validator 2 --&gt;
   &lt;validator type="expression" short-circuit="true"&gt;
       &lt;param name="expression"&gt;email.startsWith('mark')&lt;/param&gt;
       &lt;message&gt;Email does not start with mark&lt;/message&gt;
   &lt;/validator&gt;
 &lt;/validators&gt;

Já o Mentawai, desde da sua versão 1.0 de Agosto de 2005, procura fazer assim:

public class HelloWorldValidator extends ValidationFilter {
 
     private static final String FIELD_REQUIRED_ERROR = "Field required!";
     private static final String INVALID_USERNAME_LENGTH = "Username length invalid!";
     private static final String INVALID_AGE = "Invalid age!";
     private static final String INVALID_PASSWORD_LENGTH = "Invalide password length!";
     private static final String PASSWORD_DOES_NOT_MATCH = "Passwords do not match!";
 
     public void initValidator() {
         
         add("username", new RequiredFieldRule(), FIELD_REQUIRED_ERROR);
         add("username", new StringRule(6, 30), INVALID_USERNAME_LENGTH);
         
         add("age", new RequiredFieldRule(), FIELD_REQUIRED_ERROR);
         add("age", new IntegerRule(18, 50), INVALID_AGE);
         
         add("password", new RequiredFieldRule(), FIELD_REQUIRED_ERROR);
         add("password", new StringRule(4, 20), INVALID_PASSWORD_LENGTH);
         add("password", new EqualRule("password", "passconf"), PASSWORD_DOES_NOT_MATCH);
         
         add("passconf", new RequiredFieldRule(), FIELD_REQUIRED_ERROR);
     }
 
 }

A complexidade foi pra dentro das rules! Viva OO!

CONCLUINDO: Conheço pessoas que gostam, entendem e dominam o XML dos frameworks. Ponto pra eles. Conheço pessoas que adoram Annotatinos e fazem coisas loucas com elas. Ponto pra elas. Conheço pessoas que gostam de configuração programática. Pontos pra elas tb.

renatosilva

Claro, que mal isso pode fazer a um projeto? Nenhum! Só não acho que seja o fundamental, essencial, o mais importante, que a qualidade e/ou destino de um projeto/sistema/aplicação está intimamente ligado a isso. Como vc pode ver aqui, o CV e o fmeyer falaram categoricamente que se não tem testes é um lixo, é inútil.

Concordo, se fosse assim o kernel do linux seria um lixo, e isso parece ser cultura da comu Java. Tá, não é essencial, melhor um bom programador sem testes do que um “puppet SCJP” com 300 kg de siglas no currículo que não faz nada de concreto. Mas que é interesseante a idéia, é bastante!!!

Cara imagina uma lib que gera XML a partir de objetos anotados, imagine um emaranhado de métodos relativamente complexos que é usado para isso. Um teste automatizado poderia pegar um objeto complexo e mandar gerar o XML, e ver se é igual a um valor esperado. Por mínimo que seja o detalhe, o teste falhará em caso de bug, coisa que você não perceberia se deixasse pra testar “na mão”, poderia até perceber, mas com os testes automáticos você sabe que não “esquecerá” nada. Só um exemplo!

cv1

“As pessoas” tambem estao vendo que vc esta transformando um ataque a ideia em um ataque a pessoa. E “as pessoas” te acham meio mala por fazer isso.

A proposito, “as pessoas” eh que verificam a minha credibilidade ou a sua, e nao importa o quanto vc fale, grite ou esperneie. Nao cabe a mim julgar a sua credibilidade, mas por algum motivo vc se acha no direito de julgar a minha. Eh curioso.

Isso nunca deixou de ser verdade, e eu nunca contestei isso, mas como eh que vc vai provar pra mim - ou pr"as pessoas" que vc sabe o que ta fazendo ao evoluir o seu sistema sem quebra-lo?

E mesmo assim vcs nao escrevem testes pra ter certeza que nenhuma falta de atencao cagou em tudo? Caralho, ou vcs sao um bando de clones do Knuth, Dijkstra, Booch e afins, ou a gerencia de vcs nao tem a menor ideia do risco que ta correndo (e, pelo que da pra sentir das suas mensagens ate agora, nem vc).

urubatan

Na verdade eles tem este conceito, só não encorajam muito o uso na documentação :smiley:
pelo menos o hibernate …
Configuração programatica do hibernate, neste mesmo tópico na página 6:
http://www.guj.com.br/posts/list/75/57053.java#299880

Usando reflexão, se fosse colocar tudo manual o código poderia ter ficado bem mais limpo …
mas com reflexão se pode adicionar classes novas com 1 linha :smiley:

Fabio_Kung

saoj:
Dá uma olhada na validação via Annotations do Struts2: (documentação oficial do Struts2: http://struts.apache.org/2.x/docs/validation-annotation.html)

@Validation() public class SimpleAnnotationAction extends ActionSupport { ... }


Credo, como é que alguém poderia gostar disso?

É como o guilherme disse num post um tempinho atrás: Annotations Language.

Edufa

Li tudo, e tirando os ataques pessoais tem algumas coisas de interessantes no meio disso tudo, na verdade até os ataques revelam algumas coisas… rs nem q seja até onde as pessoas vão para defender suas idéias ao invés de usarem argumentos usam ofensas (vc é feio, mas vc é bobo… rs)

Primeiro, a necessidade de um novo framework de persistencia, minha opinião, necessidade não existe. O hibernate e agora JPA são ótimas soluções q se aplicam a muitos casos, senão a maioria, a curva de aprendizado diminuiu bastante, mas tb não são triviais. Aprende-los no meu entender só agrega conhecimento. Sendo um padrão do mercado seria melhor integra-los da forma mais transparente possível, de modo q usa-ls ara operações simpels seja simples. A melhor opinião q eu vi aqui foi do urubatan sobre o wrapper para hibernate no mentawai, aquilo ficaria legal, simples, teria compatibilidade, usaria o poder do hibernate de forma fácil, ótima idéia.

Segunda discussão, programação programática x anotations e xmls, eu acho questão de gosto, não vejo motivos para ataques e defesas tão exaltadas de ambos os lados. O fato do hibernate e outros não incentivarem não desmerece a programação programática, e eu mesmo prefiro hibernate com xml ao invés de annotations.

Terceira discussão, essa mais profunda devido a importancia de testes. O sergio pode ser o melhor de todos os programadores, mas sem testes para comprovar que o sistema é sólido e mantem a compatibilidade é a palavra dele apenas. Minha opinião isso é arrogancia, justamente pq o mentawai visa ser utilizado. Apesar disso eu o uso, não o usaria numa aplicação mais importante devido a isso. Nada contra a pessoa e sim com a segurança. Não importa se quem desenvolveu trabalha sem testes numa empresa q fatura milhoes, bilhoes, etc, ou q o framework nunca deu problema antes, eu não tenho como comprovar isso. Se eu precisar extender e fazer alguma alteração nele, eu não tenho como comprovar se as operações mais simples estão consistentes.

Sergio é obvio q muitas situações não podem ser testadas, isso é básico, o problema é como vc garante q os contratos estão sendo cumpridos, enquanto tudo passa pelas suas mãos pode ser fácil, mas qdo alguem quer extender o sistema como essa pessoa pode ter a certeza q fez certo (ou pelo menos testar isso)?

Não faz falta a ausencia de testes, mas com certeza agregaria valor ao framework e facilitaria o seu uso nos caso q eu comentei acima.

saoj

A palavra minha, do Rubem Azenha, do Helio Frota, do Fernando Boaglio, do Davi Luan, do Mavin Froeder e do Alex Fortuna (em memória).

Mas eu concordo com o seu ponto e com o ponto do CV. Teste, em teoria, serviria para garantir que o programador não cometeu uma falha, a final todos podem e cometem falhas. Aí podem entrar dois pontos:

  • Pair programming: Eu programo desde os 13 anos e tenho 31. O Rubem tem 19 anos e quando olhou alguns códigos meus falou: isso aqui e isso aqui podem ser melhorados. Não falou que estava uma merda (e pior que estava pois na correria para finalizar a coisa eu acabei usando IF ao invés de polimorfismo :oops: ) mas mostrou como melhorar. Espero ainda ter contato com ele quando ele tiver 31 anos…

  • Defensive programming: Se cometer um erro, descubra e corrija ele o mais rápido possível. As vezes quando faço alguma alteração, olho o código e faço uma revisão bruta, ou seja, reviso ele no mínimo 3 vezes na minha cabeça, seguindo o fluxo. (Por isso que programação concorrente é uma fábrica de bugs, mas isso é outro assunto) Onde eu posso ter feito cagada aqui que vai me colocar em sérios apuros? As vezes ali mesmo já dá para vc pegar algum erro, um NPE exception que vc não tratou, e por aí vai.

Erros e bugs SEMPRE irão existir. Programar é a arte de resolver problemas rapidamente. Ontem só instalando o tomcat no meu eclipse deu milhões de paus. Tive que concentrar para entender o que estava acontecendo, resolver e seguir em frente. Pra quem não gosta de caçar bugs ou resolver problemas essa profissão é ingrata.

Acabei de baixar o source do Java inteiro. Cadê os teste ??? Não achei!!! Tá em algum lugar lá? O que me garante que eu posso usar e estender o pacote java.util ??? Putz e agora!?

Eu acho que é a boa e velha orientação a objetos !!! OO !!!

Se vc ou eu pegarmos o source do HashMap e modificá-lo, as chances são grandes de que vamos quebrar alguma coisa. Não foi nós que criamos e cá pra nós o algorítimo tem lá suas complexidades.

Mais se vc fizer um MyMap extends HashMap (ou implementar a interface e usar composição antes que me atirem o livro de patterns do GoF na cabeça) vc está livre para fazer o que quiser que será quase impossível quebrar o HashMap.

Ou seja: Se vc modificar o Framework, é bom vc saber o que está fazendo (melhor deixar isso para quem fez a coisa). Já se vc ESTENDER O FRAMEWORK usando os contratos que ele oferece usando as boas práticas de OO (herança, polimorfismo, etc.) vc não corre risco nenhum.

Por isso que dizem que a primeira coisa que vc deve avaliar num framework para saber se ele é estensível, é se todas as suas classes cores e tudo que ele diz ser estensível é implemetnado com interfaces.

leomc

Galera esse tópico já (não) deu o que tinha que dar. Tá bom de alguém bloquear ou deletar. Só tá gerando desentendimento e problemas pessoais.
Com todo respeito, vamos ler ou debater sobre outros assunto técnicos.
Entra lá no meu blog e vai ler os posts e clicar no adsense :slight_smile:

bgbraga

Bom, inicialmente gostaria de dizer que acho louvável a iniciativa de software livre. É difícil alguém abdicar de momentos de sua vida em pró de um ideal, de um framework ou software que pode ser usado por todos.
Mas nem por isso (por ter dado trabalho, ou por ser livre) quer dizer que o software é bom ou útil. Ele precisa provar isso como qualquer outro (não julgando versões betas, mas com o tempo).

Eu venho mantendo um projeto OpenSource e sei como tudo é difícil.
Mas uma das minhas preocupações principais foi não reinventar a roda. No meu caso é sobre geração de código e tem vários projetos sobre isso, nesse caso eu quis fazer algo diferente. Algo que me atendesse diante dos problemas dos outros projetos (que não são supra-sumos ou unanimidade como o Hibernate, e possuem muitos problemas).

Voltando ao menta, muitas vezes dei idéias para o projeto e inclusive contribui com códigos. Gosto Sergio por ser um cara correto, um bom programador e ter suas próprias idéias, que podem ser polemicas, certas ou erradas, mas são únicas.
Mas também já postei no fórum do Menta que não entendo a existência de Template dele (que basicamente é um Tiles) se existem coisas melhores e mais simples que podem ser usadas como o SiteMesh. Também não entendo outras coisas do projeto. Mas posso dizer que as idéias do MVC do Menta são legais - e acho que vocês (Sergio) deviam focar nisso. Não deviam perder o foco. Não tentem reinventar um framework de persistência, um framework de IoC, um de template, daqui a pouco vão acabar criando até um container web para funcionar tudo integrado e não ter que configurar nada… Mas acho que esse não é o foco (pelo menos nesse momento… o futuro a ninguém pertence…).

Entre no site do Menta. A logo irá dizer: Mentawai Web Framework. Então minha sugestão é essa, concentre no CORE do Web Framework, esqueça persistência, banco de dados e outras coisas, senão daqui a pouco o Menta vai ser uma pato que corre, nada, voa e pula (em Java), ou seja: faz de tudo, mas não faz nada direito. E eu Sergio estou dando uma opinião de quem quer que o projeto vá para frente, você sabe disso. Minha intenção não é criticar, apesar de me opor a algumas coisas.

Sobre a integração com o banco, leve adiante as idéias do Urubatan de facilitar a configuração do Hibernate para cenários simples (configuração ?automática?). Acho que o Menta vai ganhar muito mais com isso.

Agora sobre Features em geral, com certeza o Core do Menta tem muitas coisas que poderiam ser feitas e são prioritárias a essa. Você pode fazer a integração automática com o Hibernate Validator que eu tinha sugerido e muitas outras coisas que poderiam ser mais importantes para o Core da parte Web do framework.

Eu te dou parabéns pela força, garra e vontade de fazer algo em pró da comunidade. Mas não perca o foco do projeto para o bem dele e nosso =)

Abraços,

bzanchet

saoj:
Me diga onde está o exemplo do Hibernate com configuração programática.

Essas coisas “existem” mas não são incentivadas, documentadas ou comentadas pelos seus autores, logo quase que “inexistem” pois ninguém usa ou fala delas.

Só uma ponderação rápida:

  1. Se um dos pontos chave da questão gira em torno da configuração programática;
  2. Sendo o hibernate um software open-source, aceito, maturo, estabelecido;
    2.1 Que possui configuração programática
    2.2 Porém pouco documentada

Não seria mais proveitoso dedicar algum tempo para pesquisar e contribuir com a documentação do hibernate? Para criar artigos, exemplos, etc etc?

Ajudaria a “comunidade”.

Paulo_Silveira

Voce esta simplesmente insano. O JDK possui mais de DEZ MIL testes, no TCK, que NAO VEM junto com o JDK. O Fabio Kung postou uma noticia sobre isso pouco abaixo da sua sobre o mentabean!!! Assim reforça a ideia que todos falam que voce esta apenas interessado em escrever, e nunca ler e reaproveitar. Voce realmente achava que eles nao teriam testes unitarios? O JDK seria uma piada. Novamente voce afirma uma coisa, e na verdade é o contrario. Cuidado ao afirmar coisas sobre o java, do hibernate, sem ao menos ter pesquisado.

Voce ja concordou com os patterns do GOF sobre heranca X composicao que tanto falaram. Realmetne acho que voce devia dar uma chacne aos testes unitarios e calar a boca do pessoal daqui. Vale lembrar que testes nao é so para pegar bugs, ele vai forcar a voce programar sem singletons, com mais itnerfaces e mais desacoplado.

renatosilva

O TCK são testes unitaŕios sobre o código-fonte? Então não pode existir VMs proprietárias, ou que pelo menos a Sun não tenha acesso aos fontes?

Edufa

Exatamente, e testes são mais uma ferramenta para ajudar a detectar erros, e a resolve-los rápido, principalmente qdo o sistema ou framework evolui com o tempo.

Entendi completamenbte seu exemplo (e concordo) apesar de um pouco forçado, pois vc ilustrou ele com uma alteração do core do java, mudar a implementação da classe Map realmente é algo de maior risco.

Mas voltando ao mentawai, há um tempo atrás ele não suportava collections apenas lists no output, eu realmente precisava usar collections, como resolver isso. Eu poderia abrir uma requisição do jira e esperar, poderia eu mesmo abrir o fw e mexer.

Concordo plenamente q mexer num framework sem conhece-lo profundamente é quase dar um tiro no pé, mas tb imagino q mudar de List para Collection não parece ser uma alteração de outro mundo (posso estar enganado), sendo assim um conjunto de testes ajudaria e muito eu efetuar essa alteração, sem precisar esperar os desenvolvedores oficiais do projeto. Além de q o conjunto de testes poderia ajudar na própria compreensão do q acontece nas entrenhas do framework, aquelas coisinhas q são pouco documentadas.

Ou seja é uma ferramenta, achar q testes são a oitava maravilha do mundo é um exagero, mas em muitos sistemas (devido a complexidade, e a forma como são organizados) é a melhor coisa q existe, em outros os testes mais complexos são praticamente inviáveis, cada caso é um caso.

Resumindo eu acho q testes só acrescentam, podem custar tempo, para quem desenvolve e conhece tudo pode ser perda de tempo, mas ajudam quem está quer modificar.

Paulo_Silveira

Nao Renato, a sun da o TCK para essas empresas. E é JUSTO disso a noticia do Kung, que tavam reclamando que pras open source ela nao tava dando.

brunohansen

Galera me parece que esses ataques são muito mais pessoal do que outra coisa!

Então uma pergunta para galera que recrimina o uso de qualquer coisa que não possui teste. Para aqueles que dizem que uma classe não existe se não tiver um teste para ela.

Então vcs recriminam o uso JForum também certo? Pois ele não possuiu teste também!

Se vcs não recriminam, pq com o JForum é diferente?

CV e os demais?

Mauricio_Linhares

O JForum não tem testes? Você já viu o código fonte do JForum alguma vez na sua vida?

Provavelmente nunca.

https://jforum.dev.java.net/source/browse/jforum/tests/

Dá uma olhadinha, talvez você ache alguns testes fantasmas por lá.

Paulo_Silveira

Como ja disseram anteriormente, o JForum é uma aplicacao. A API dele é menos importante que suas funcionalidades finais, que é medida pelo usuario. BEM diferente de um framework ou biblioteca. O JForum 3 possui testes sim.

F

Sergio,

Uma das funcionalidades que tu colocou foi o seguinte:

User u = new User(1);
 
 // não estamos dando load() !!!
 
 u.setAge(44);
 
 session.update(u); // vai gerar update users set age = ? where id = ?

O que acontece se eu fizer isso:

User u = new User(1);
 
 // não estamos dando load() !!!
 
 u.setAge(44);
 u.setPhone(null);
 
 session.update(u); // vai gerar update users set age = ? where id = ?

Ele vai gerar o update somente com Age?

E se eu to querendo setar null na coluna Phone como tenho que fazer?

]['s

pcalcado

Apesar de acompanhar a discussão desde o início eu estou pouco me importando apra o framework, apenas gostaria de esclarecer um ponto aqui antes que estas página sfiquem registradas no Google e quando alguém procurar sobre OO saia com cocneitos deturpados.

Isso não é verdade. Em linguagens como Java onde não existe uma forma explícita de garantir um contrato (pré e pós condições) não há nenhuma garantia de que ao estender uma classe ou implementar uma interface você obedece ao contrato dela.

Eu posso implementar a interface Map lançando exceções aleatóriasde tipos completamente inesperados, quebrando o contrato da classe, que nenhum compilador vai me barrar. O que se precisa é de testes unitários para garantir compatibilidade. Mesmo em uma linguagem com DBC embutido como Eiffel não é difícil quebrar contratos, tudo depende do programador.

E quanto à ausência de testes em geral, testes não são a única forma de aumentar a qualidade do seu código mas são o meio mais prático que eu conheço. Se um sistema não usa testes é bom ele ter alguma alternativa a isso que consiga o mesmo efeito, especialmente para realizar regressões. Quanto do código do sistema é testado a cada lançamento de nova versão? Se não se tem uma métrica de test coverage eu fico realmente curioso sobre como se sabe que nada foi quebrado. Boas práticas, um design consistente, OO, etc. cria código que tende a dar menos problemas mas não serve para este tipo de verificação. Basta olhar a opinião dos papas do design sobre testes e seu papel na qualidade de software.

E notem que os testes diretamente não dizem muito para o usuário final, leigo. Já vi sistemas com centenas de testes que não testam nada, mas estavam lá, se o usuário tomar isso como métrica ele vai se dar mal.

Testes garantem a qualidade para quem desenvolve o sistema, o usuário apenas vincula a presença de testes e, mais que isso, de uma estratégia de qualidade, como algo que aumenta a credibilidade de um artefato de software.

Acreditar que consegue assegurar que uma mudança não quebrou uma base de centenas ou milhares de linhas de código sem qualquer mecanismo de inspeção automatizado não é arrogância para mim, é ingenuidade.

renatosilva

Nao Renato, a sun da o TCK para essas empresas. E é JUSTO disso a noticia do Kung, que tavam reclamando que pras open source ela nao tava dando.

E como a Sun sabe se os JDKs/JVMs passaram nos testes??? Mandando os dados pela net à Sun?

Eu não entendi Paulo! Existem outros JDK que não o da SUN?

F

Sim, BEA, IBM. Para alguns casos são até melhores. Mas o source da API é o mesmo em todas.

]['s

brunohansen

O JForum não tem testes? Você já viu o código fonte do JForum alguma vez na sua vida?

Provavelmente nunca.

https://jforum.dev.java.net/source/browse/jforum/tests/

Dá uma olhadinha, talvez você ache alguns testes fantasmas por lá.

Dá uma olhadinha no que o Rafael Steil disse: (Dito neste mesmo tópico)

Rafael Steil:
OPA OPA OPA

Nao me use como exemplo aqui. Voce da a entender que eu nao apoio o uso de test cases, o que NAO eh verdade.

O falta de testes no JForum atual é uma falha monstruosa, que sempre me causou problemas. Nao ha desculpas para nao ter test cases.

O JForum 3 (atual versao em desenvolvimento) tem unit testing para tudo. Tudo.

Voce pode nao gostar de fazer testes, mas defender que eles sao ruins, ja eh pegar pesado. Ao meu ver, a sua postura esta errada.

Rafael

A versão em produção não tem teste! A versão em desenvolvimento tem teste!

Paulo Silveira:
brunohansen:

Então vcs recriminam o uso JForum também certo? Pois ele não possuiu teste também!

Como ja disseram anteriormente, o JForum é uma aplicacao. A API dele é menos importante que suas funcionalidades finais, que é medida pelo usuario. BEM diferente de um framework ou biblioteca. O JForum 3 possui testes sim.

A versão em produção não tem teste! A versão em desenvolvimento tem teste!

Se vc também é extremista a ponto de dizer como o fmeyer ou o CV

fmeyer:

Codigo sem teste unitario eh codigo inutil.

ps. isso vai ser engracado …

cv:

E nao tem uma mencao sequer as palavras ‘test’, ‘unit’ ou ate mesmo ‘run’. Como voce espera que eu confie no seu codigo? Lendo a porra toda?

… Quem é extremista assim deve concordar que a versão em produção do JForum é inutil! Não que eu a ache!

Se os extremistas concordarem tudo bem os ataques não são pessoal! Ou eles não são tão extremistas assim a ponto de abrir mão de não recriminar o JForum em produção que não tem teste!

Minha pergunta ainda continua: Mauricio e Paulo se vcs protegem tanto os testes pq vcs não criticam tambem a versão em produção do JForum que não tem teste?

brunohansen:

Galera me parece que esses ataques são muito mais pessoal do que outra coisa!

Então uma pergunta para galera que recrimina o uso de qualquer coisa que não possui teste. Para aqueles que dizem que uma classe não existe se não tiver um teste para ela.

Então vcs recriminam o uso JForum também certo? Pois ele não possuiu teste também!

Se vcs não recriminam, pq com o JForum é diferente?

CV e os demais?

renatosilva

Sim, BEA, IBM. Para alguns casos são até melhores. Mas o source da API é o mesmo em todas.

]['s

Os APP Servers deles não usam a VM e JDK da Sun não?

Se as pessoas são livres para implementar uma VM ou JDK, por que não se tem acesso livre ao TCK, ainda mais agora sendo open-source?

Paulo_Silveira

Sim, por default elas usam JVM e JDK “proprios”. a BEA, por exemplo, recomenda a JRockit, que é a VM+JDK da BEA. A Sun testou a implementacao deles no MESMO TCK que foi enviado a elas, e confirmou que eles haviam passado.

renato3110:

Se as pessoas são livres para implementar uma VM ou JDK, por que não se tem acesso livre ao TCK, ainda mais agora sendo open-source?

Renato, como eu ja disse, é exatamente essa questao que o Fabio fez
http://guj.com.br/posts/list/56795.java

saoj

Fala Fabio!

Boa pergunta. Isso mostra que vc olhou bem o MentaBeans. Obrigado por perguntar coisas técnicas sem dizer que não usa testes, o nome é um lixo e que eu sou insano. Obrigado.

Se vc quer setar um campo para NULL, vc precisa fazer o load primeiro, mudar o campo para null e fazer o update. Não dá para fazer sem fazer load, pois não temos como saber se o campo já era null ou foi setado null. Acho que teria que fazer algum esquema de PROXY para o método setName(null). Não sei se tem como (acho que não). Com calma depois avaliaremos se há alguma outra maneira de resolver isso, mas por enquanto a solução oficial disso é: faça load, mude para null o campo e faça o update, que apenas esse campo sofrerá update para NULL.

renatosilva

Paulo Silveira:
renato3110:

Os APP Servers deles não usam a VM e JDK da Sun não?

Sim, por default elas usam JVM e JDK “proprios”. a BEA, por exemplo, recomenda a JRockit, que é a VM+JDK da BEA. A Sun testou a implementacao deles no MESMO TCK que foi enviado a elas, e confirmou que eles haviam passado.

Mas como sem os fontes? :?

Paulo Silveira:
renato3110:

Se as pessoas são livres para implementar uma VM ou JDK, por que não se tem acesso livre ao TCK, ainda mais agora sendo open-source?

Renato, como eu ja disse, é exatamente essa questao que o Fabio fez
http://guj.com.br/posts/list/56795.java

Ah tá!! Eu hein, isso não tem sentido nenhum esconder o TCK! A não ser uma certa coisa…

saoj

Calma, Paulo. Baixei os sources e procurei bem procurado e não achei. Eu não sabia da existência desse TCK, e pelo jeito outras pessoas aqui também não sabiam. Me desculpe, ok?

Estranho a Sun liberar o código fonte sem isso, já que é tão importante.

Vc já ouviu falar da interface org.mentawai.core.Filter, com a qual vc pode criar qualquer filtro que vai pegar o input/output da action e transformar em qualquer outra coisa que vc quiser antes e depois de chegar na action ???

Não há como prever tudo, por isso que existe interfaces e sistemas estensíveis. Não precisa abrir chamado no Jira não. Basta vc mesmo implementar o seu próprio filtro e ser feliz. Acho que eu dei um exemplo no fórum e inclusive o CollectionFilter já está disponível na versão 1.9.

Acho que vc se confundiu aqui, Edufa. Vc não vai mexer em framework nenhum. Vai criar um Filtro implementando uma interface. Um framework não tem como gerar testes para as aplicações que serão escritas no futuro pelos seus usuários. Isso é tarefa sua, se assim desejar. (Ou um framework tem que dinamicamente testar o código de uma aplicação web?)

Acho que essa discussão sobre testes já deu o que tinha que dar. Se acharem que o Mentawai é um lixo, inútil, uma merda, como alguns falaram aqui porque não possui testes unitários, então não usem. Usem Struts2 que possui testes unitários ou qualquer outra coisa. Exercite o seu livre arbítrio!

Edufa

Eu uso o menta em vários projetos meus, não tenho nada contra o projeto apesar de q eu sinto falta de testes e isso me inibe de mexer no fonte, por não ter como garantir compatibilidade (isso eu vejo como algo negativo).

Posso ter me confundido, mas pelo q me lembro em varios lugares era usado List ao invés de Collection.

É um exemplo simples, é fácil converter para List, poderia converter, usar filters, etc, mas ilustra o ponto q eu queria mostrar, vc detem o conhecimento do framework, vc sabe os contratos , conhece a estrutura, etc, tudo isso. Se amanhã o projeto por interrompido por algum motivo, ou alguem por contar querem muda-lo (seja fazendo uma limples mudança como esta q comentei de List para Collection, ou migrar o código para java 1.5, ou amanhã, 1.7, 1.9, 2.5, etc) sem testes alguem de fora irá suar muito. os testes diminuem a possibilidade de alguem mexer e ter certeza q está certo. Pq não dá para garantir q todos conhecem tanto qto vc.

saoj:

Acho que essa discussão sobre testes já deu o que tinha que dar. Se acharem que o Mentawai é um lixo, inútil, uma merda, como alguns falaram aqui porque não possui testes unitários, então não usem. Usem Struts2 que possui testes unitários ou qualquer outra coisa. Exercite o seu livre arbítrio!

Eu acho importante a discussão sobre os testes, talvez o melhor lugar para ela não seja aqui, ams mesmo assim é importante temos aqui duas visões antagonicas sobre testes, é bom ver os argumentos de ambos os lados para quem está começando agora possa se decidir sobre qual caminho escolher. uma pena os ataques, mas parece q já ficaram para trás.

renatosilva

Se é pra dar exemplo de uma coisa sem testes que todo mundo confia não precisa ser o JDK, pode ser o Linux que é muito pior! rsss

Pior que não ter testes é ser escrito em C!

saoj

Tem razao aqui!!! Ponto pra vc! :slight_smile:

Uma “história da vida real” sobre testes:

No sistema onde trabalho há uma classe chamada ByteUtils.java. Basicamente ela faz todo o tipo de operação binária da forma mais optimizada possível. Foi escrita pelo chefe.

Basicamente TUDO depende e usa essa classe. Vc faz um Call Hierarchy no eclipse e aparece 10,000 métodos em todos os lugares diferentes.

Se vc introduzir um bug aí e colocar essa classe em produção, produzindo uma situação catastrófica, o mínimo que vai acontecer com vc (e se só acontecer isso vc vai ficar muito feliz) é ser sumariamente demitido.

Um dia precisei alterar essa classe. O que eu fiz?

Primeiro pensei: Vou mandar um email para o chefe e “solicitar” que ele faça isso.

Depois pensei: putz o cara ocupadão e vai ficar super feliz em saber que tem um funcionário mala como eu que delega as responsabilidades pra ele.

O que eu fiz: copiei o código do método para dentro de um novo método, mudei o nome do método, mexi naquela implementação ali, com bastante cuidado, e utilizei o método no meu módulo.

Alguns vão falar: traidor das regras de boa prática, DUPLICADOR DE CÓDIGO, pagão, merece ser queimado na fogueira da inquisição de tecnologia.

Outros vão falar: se tivesse testes vc não precisaria ter feito isso.

Bom, só sei que conservei meu emprego, o chefe ficou feliz (pois fiz a coisa sem incomodar ele), e digo mais: se tivesse testes eu teria feito a mesma coisa, mesmo que fosse Deus (o chefe) que tivesse feito aquele teste, a não ser que ele ordenasse o contrário. Nunca perguntei, mas acho que ele faria o mesmo também…

fabim

saoj,

parabens pelo seu framework.

Penso do mesmo jeito que vc: resultado final pra mim conta mais ( e contou muito nos ultimos meses ) do que teoria…

renatosilva

Saoj, e como vc testou isso depois? Executando à mão todos os 10.000 métodos dependentes? :smiley:

Rafael_Steil

E voce acha que nao levo esporro por causa disso? :wink:

Deveria ter feito testes desde o inicio? sim. Fiz? Nao. E o resultado é a necessidade de testar tudo no braco, e contar com a ajuda da lua ou marte para tudo funcionar.

Em dado momento da tua carreira (geralmente quanto esta iniciando), aceitar e compreender corretamente a necessidade e importancia de testes é desafiador, principalmente pq faz parte da natureza do ser humano tomar atitude somente quanto a agua bate na bunda.

Porem, uma coisa eh nao compreender e nao usar pelos motivos citados, MAS utilizar (“antes tarde do que nunca”), e outra coisa é defender o ponto de que testes sao ruins e negar-se a adotar tal pratica.

Rafael

Paulo_Silveira

Olha para tras e perceber que faziamos coisas que hoje achamos ruim, é sinal de evolução. Parabens Rafael.

Eu ainda vou blogar sobre isso, mas lembro da epoca que o Villela falava de testes unitarios e eu achava tudo isso ridiculo. Depois de um tempo, quando voce comeca a sofrer com alteracoes do core de algum sistema, comeca a pensar. E depois os testes passam a ser parte da diversao!

Algo que impede o pessoal a adotar testes é que o sistema ja comecou sem testes, ai é praticamente impossivel adotar TDD, porque o codigo ja esta naturalmente dificil de ser testado e muito acoplado!

saoj

Vc não entendeu. Eu criei um novo método. O método antigo continou lá intacto. A única coisa que poderia quebrar ali era o módulo que eu estava fazendo no momento, pois só ele estava usando o meu novo método, ou seja, criei esse método a fim de preservar o outro crítico, pois alterá-lo seria muito arriscado. Programação defensiva!

thiagoaos

Vc não entendeu. Eu criei um novo método. O método antigo continou lá intacto. A única coisa que poderia quebrar ali era o módulo que eu estava fazendo no momento, pois só ele estava usando o meu novo método, ou seja, criei esse método a fim de preservar o outro crítico, pois alterá-lo seria muito arriscado. Programação defensiva!

E se um dia seu chefe alterasse o metodo criado por ele? Ele teria que se lembrar de alterar o seu também? Como se você nem se quer avisou a ele? Será que isso é uma boa pratica? Isso me parece mais POG.

Falar a verdade eu gosto do mentawai, usei em alguns projetos da universidade, mas coisa simples, gostei, achei divertido trabalhar com ele.
Mas tive muitos problemas, quando era versão ainda 1.2, 2 bugs que eu descobrir e reportei lá, sendo que eram coisas bobas no voFilter e no filter do Hibernate, algo se tivesse testes não ia para produção com aquelas falhas.

Não acho o framework inutil, mas acho que você se livraria de diversos bugs reportados se estivesse feito rotinas de testes e obvio rodassem elas.

E o bug no vo filter foi algo como já discutido aqui, em uma versão anterior que ele estava funcionando redondo, na outra versão ele já estava dando bug.

Creio que se você juntamente com sua equipe, ao invés de gastar tempo com o mentaBean, poderia realizar as rotinas de testes, assim muitas pessoas que “não confiam” pensariam em adotar o uso framework. Quem sabe depois você voltaria a tentar no mentaBean, isso se você achar viavél.

cv1

Isso nao eh programacao defensiva. Em nenhuma das definicoes de programacao defensiva que eu consegui encontrar, “copiar codigo critico e fazer alteracoes na copia para evitar mudancas no design” nao esta la. Como o thiagoaos citou, isso eh mais tipico de uma gambiarra do que de um trabalho bem-feito, por trazer as consequencias citadas aqui:

Alias, se vc tiver um tempinho pra ler, isso aqui ajuda bastante:

1112

Vc não entendeu. Eu criei um novo método. O método antigo continou lá intacto. A única coisa que poderia quebrar ali era o módulo que eu estava fazendo no momento, pois só ele estava usando o meu novo método, ou seja, criei esse método a fim de preservar o outro crítico, pois alterá-lo seria muito arriscado. Programação defensiva!

Programação defensiva é a única saída que se tem quando não se tem testes, isso é óbvio.

A questão é, isso é bom? Digo, tenho certeza de que você é alguém competente, mas todo mundo que trabalha, trabalhou ou trabalhará com você é tão competente? Muitas vezes não, né? E como assegurar a confiabilidade nesses casos?

Os testes mostram sua vantagem no longo prazo, de forma que você pode assegurar que, se um bug que aparece hoje é testado, ele não reaparecerá amanhã quando alguém fizer uma alteração em um método.

Sergio, não encare isso como um ataque pessoal, mas acredito que você ganharia bastante se revisse sua posição sobre testes.

Sobre o MentaBean, ainda não o olhei em detalhes. Depois eu emito uma opinião sobre o próprio.

Aos usuários: por favor, vamos nos respeitar mais, sem transformar isso aqui numa guerra de egos. Eu fico triste em ver egolatria em um forum técnico. :frowning:

saoj

Os métodos viraram duas coisas indepedentes, e não a mesma coisa duplicada.

Concordo que duplicação de código é ruim. Isso foi apenas um exemplo de um caso isolado. É claro que isso não é o dia a dia, até porque raramente se tem a necessidade de alterar uma classe crítica. O máximo que faz é estende-la respeitando os contratos, e se vc analisar por essa ótica foi basicamente o que eu fiz. Precisava de um método para fazer algo parecido mas diferente. O certo seria estender esse método, mas no meu caso a alteração era no algoritmo.

Só quiz exstrapolar mostrando que as vezes é melhor ser prático e obter resultados concretos de forma segura, do que ser um belo teórico que modifica uma parte crítica, roda os testes e perde o emprego.

Como eu disse: “Alguns vão me tacar na fogueira da inquisição da informática por isso”.

Fizemos uma alteração crítica, por opção, nessa versão. Basicamente trocamos a estratégia de injection de PULL para PUSH. Mais sobre isso em: http://forum.mentaframework.org/posts/list/482.page

Sim, concordo com vc! Testes poderiam ter ajudado nessa mudança. A questão é que fazer altearções críticas como essa que foi feita é RARO. Se vc faz modificações críticas no seu sistema toda hora (ou uma vez por semana que seja), algo está errado. Ou com o seu sistema (problemas de arquitetura) ou com vc (maluco!).

Talvez tenhamos chegado a uma boa conclusão aqui. Testes podem ser importantes na fase inicial de um projeto, onde a arquitetura/funcionalidades/etc ainda não estão muito maduras, e as chances de ter que modificar partes críticas são maiores. Graças a Deus o Mentawai já passou dessa fase. O core está congelado, estável, sem bugs em aberto. Ninguém faz modificações críticas no core sem apresentar motivos bem fortes para isso. O Rubem fica meio puto comigo por causa disso. Mas isso é disciplina, organização e comprometimento com os ccontratos. Sem testes…

renatosilva

Por mais raro que seja, as alterações críticas, justamente por serem críticas, não devem nunca quebrar o sistema. E pra mim um software que não está aberto à modificação de qualquer de suas partes, mesmo as críticas (uma “burguesia” no código?), é um software atrofiado. Você deixa de aceitar ou ter boas sugestões por acreditar que aquela parte do código é “santa”.

Epa!! Não fala mal de POG não hein!! rss!!!

saoj

renato3110:
Por mais raro que seja, as alterações críticas, justamente por serem críticas, não devem nunca quebrar o sistema. E pra mim um software que não está aberto à modificação de qualquer de suas partes, mesmo as críticas (uma “burguesia” no código?), é um software atrofiado. Você deixa de aceitar ou ter boas sugestões por acreditar que aquela parte do código é “santa”.

Sua colocação foi muito boa. Não tenho como descordar disso. Acho que é uma simples questão de estilos. Se todo mundo pensasse igual no mundo, as coisas seriam chatas demais.

Fico pensando aqui: Vc acha que o Kernel do Linux é santo, ou um belo dia o cara acorda com uma coceira lá, olha o código e fala assim: “PQP, isso está uma merda. Vou refatorar!”

Eu rescrevi o Lohis do zero umas 3 ou 4 vezes. A cada nova reescrita eu olhava pra coisa e falava assim: “PQP, o anterior estava uma merda, esse aqui ficou 10 vezes melhor, que legal!”. Depois da quarta reescrita o código tava bem bonito, até plugin suportava, mas o projeto nunca chegou a lugar nenhum. :frowning:

Acho que quando vc tem um sistema não-pequeno, vc pode melhorá-lo quase que eternamente. Sempre dá para melhorar mais um pouco, refatorar aqui e ali. A questão é: o que vc realmente quer com esse sistema? Melhorá-lo eternamente ou cumprir sua proposta?

bzanchet

Por que colocas “Melhorá-lo eternamente ou cumprir sua proposta” como propostas mutuamente exclusivas?

saoj

Alguns conseguem equilibrar isso, e esses talvez sejam os mais certos.

Outros caem mais para um lado do que para o outro.

Eu acabei caindo para o lado da proposta, do resultado. Foi uma escolha pessoal influenciada pelo meio-ambiente.

renatosilva

Eu não sei como funciona, na verdade eu não entendo como uma coisa dessas escrita em C consegue funcionar tão bem! Devem ser alienígenas que programam! rsss

Aliás seria interessante saber como eles fazem pra saber se uma linha adicionada ou removida no kernel não ferra uma outra parte dele lá na PQP…e também os testes eternos do Debian até um release estável, que testes são esses???

saoj:
o que vc realmente quer com esse sistema? Melhorá-lo eternamente ou cumprir sua proposta?

As duas coisas devem andar juntas. Existe uma culltura entre muita gente de “finalizar” o sistema, considerando modificações no mesmo como o “o usuário não sabe o que quer” ou “do jeito que estava antes era errado”.

Eu acredito numa noção de “software vivo”. O usuário não saber o que quer, ou mudar de opinião é natural, o mundo gira, e o software tem que evoluir com as pessoas , com o tempo, e não o contrário. E do jeito que estava antes não era errado, era apenas uma etapa anterior da “vida” do sistema. Quando você “termina” um sistema na verdade está matando o software, mais ou menos como um Tamagochi :smiley:

cv1

De certa forma, o bom design OO dita que nenhuma classe no seu sistema deve ser critica: o Shoes provavelmente sabe muito mais disso que eu, mas vc provavelmente tem um problema serio de acoplamento se vc chama qualquer classe no seu sistema de “critica”; depois desse auê todo sobre bom design e boas praticas OO que vc fez, eu esperava mais de voce (e da sua equipe, que movimenta quatrilhoes de døøøøølares por nanossegundo).

bzanchet

Alguns conseguem equilibrar isso, e esses talvez sejam os mais certos.
Outros caem mais para um lado do que para o outro.
Eu acabei caindo para o lado da proposta, do resultado. Foi uma escolha pessoal influenciada pelo meio-ambiente.
Eu perguntei o porque, mas apenas reafirmaste serem dois objetivos distintos e excludentes.

Modificando a questão: por que “melhorar eternamente” não pode ser parte de “cumprir sua proposta”?

saoj

Me desculpe se te decepcionei. Ninguém é perfeito. O correto é subjetivo. Um pensamento e um estilo de um vai ser aprovado por alguns e condenado por outros. Em algumas empresas eu me sairia bem, já em outras eu não seria nem contratado. Levaria pau nas perguntas sobre UML e JUnit.

Acho que a única coisa que não é subjetiva é o DINHEIRO que uma empresa ganha. Isso todo mundo concorda, aprova e bate-palma. Desde que seja obtido honestamente… Dá uma procurada em google.finance.com. Veja o Google por exemplo: eles divulgam o faturamente anual da empresa lá, mas procurando bem não encontrei nenhuma métrica sobre a qualidade do sistema deles. Quantos BUGs foram detectados, se há testes e essas coisas não estão listadas lá…

Quando as pessoas gastam seu rico dinheirinho para comprar as ações da google, acho que a última coisa que eles pensam era se tem teste ou não…

Eu acho que no mundo coorporativo só uma coisa conta: RESULTADOS. E o ser humano convencionou DINHEIRO para se medir isso, pois caso contrário, isso tb seria subjetivo.

Mauricio_Linhares

Na verdade, eu duvido que eles chegem a pensar nisso, porque todo mundo sabe que o Google |valoriza| |absurdamente| |testes| de software, então assume-se que é de conhecimento público que eles testam muito.

wmitsuda

bzanchet:
Eu perguntei o porque, mas apenas reafirmaste serem dois objetivos distintos e excludentes.

Modificando a questão: por que “melhorar eternamente” não pode ser parte de “cumprir sua proposta”?

É que a maioria das pessoas acham que são 2 objetivos distintos e excludentes.

Eu penso diferente: acho que boas práticas (TDD inclusive) servem p/ que vc possa “cumprir sua proposta” e ainda assim conseguir “melhorar eternamente”.

Mauricio_Linhares

Ops, olha aqui um póbrema. Testes são ainda mais importantes quando um sistema está envelhecendo, porque eles garantem que velhos bugs não vem a tona mesmo depois que novas funcionalidades foram adicionadas ou que alterações, críticas ou não foram feitas. E convenhamos, código que não se altera de jeito nenhum é lenda.

Mas eu acho que precisamos de um novo conceito aqui, o que é uma alteração crítica? Crítica no sentido de que? De quebrar o sistema?

Eu já vi até a adição duma “,” quebrar um sistema inteiro. Isso é uma alteração crítica?

saoj

Maurício Linhares:

Mas eu acho que precisamos de um novo conceito aqui, o que é uma alteração crítica? Crítica no sentido de que? De quebrar o sistema?

Eu já vi até a adição duma “,” quebrar um sistema inteiro. Isso é uma alteração crítica?

Essa discussão não vai ter fim. Tá pior que, vasco e flamengo, eclipse x netbeans, etc. Acho que chegou a hora de focarmos nossas energias em outras coisas mais produtivas…

Eu já me convenci de que teste é BOM. Ruim não pode ser. Não consigo ver uma desvantagem de um sistema que possua testes… A 6 meses atrás o Rubem falou que ia fazer os testes unitários do Mentawai. Eu dei a maior força…

O problema é que eu não sei, não gosto e não tenho tempo no momento para pensar em testes. E isso a constituição me garante o direito, assim como garante liberdade religiosa. Se amanhã eu mudar de idéia ou de religião, vcs vão ficar sabendo, e daí podem jogar esse papo louco aqui na minha cara, pois vou merecer… Até lá, vamos debater outras coisas … :slight_smile:

renatosilva

Aeeeeeeeeeee!!! THE END!!! :smiley:

chun

saoj:

depois desse auê todo sobre bom design e boas praticas OO que vc fez, eu esperava mais de voce (e da sua equipe, que movimenta quatrilhoes de døøøøølares por nanossegundo).

Me desculpe se te decepcionei. Ninguém é perfeito. O correto é subjetivo. Um pensamento e um estilo de um vai ser aprovado por alguns e condenado por outros. Em algumas empresas eu me sairia bem, já em outras eu não seria nem contratado. Levaria pau nas perguntas sobre UML e JUnit.

Acho que a única coisa que não é subjetiva é o DINHEIRO que uma empresa ganha. Isso todo mundo concorda, aprova e bate-palma. Desde que seja obtido honestamente… Dá uma procurada em google.finance.com. Veja o Google por exemplo: eles divulgam o faturamente anual da empresa lá, mas procurando bem não encontrei nenhuma métrica sobre a qualidade do sistema deles. Quantos BUGs foram detectados, se há testes e essas coisas não estão listadas lá…

Quando as pessoas gastam seu rico dinheirinho para comprar as ações da google, acho que a última coisa que eles pensam era se tem teste ou não…

Eu acho que no mundo coorporativo só uma coisa conta: RESULTADOS. E o ser humano convencionou DINHEIRO para se medir isso, pois caso contrário, isso tb seria subjetivo.

Eh… vejo que vc é adepto do POG… “Está funcionando ? então está certo.”

Mauricio_Linhares

E lá vem pedrada…

L

saoj:
Maurício Linhares:

Mas eu acho que precisamos de um novo conceito aqui, o que é uma alteração crítica? Crítica no sentido de que? De quebrar o sistema?

Eu já vi até a adição duma “,” quebrar um sistema inteiro. Isso é uma alteração crítica?

Essa discussão não vai ter fim. Tá pior que, vasco e flamengo, eclipse x netbeans, etc. Acho que chegou a hora de focarmos nossas energias em outras coisas mais produtivas…

Eu já me convenci de que teste é BOM. Ruim não pode ser. Não consigo ver uma desvantagem de um sistema que possua testes… A 6 meses atrás o Rubem falou que ia fazer os testes unitários do Mentawai. Eu dei a maior força…

O problema é que eu não sei, não gosto e não tenho tempo no momento para pensar em testes. E isso a constituição me garante o direito, assim como garante liberdade religiosa. Se amanhã eu mudar de idéia ou de religião, vcs vão ficar sabendo, e daí podem jogar esse papo louco aqui na minha cara, pois vou merecer… Até lá, vamos debater outras coisas … :-)

Sérgio,

acredito que ninguem goste de fazer teste, e tbm que ninguem tenha tempo, todo mundo preferiria fazer algo novo a ficar fazendo aquelas chatices de testes unitários. Na verdade testes é algo que se faz necessário…

Eu respeito totalmente a sua opinião, mas queria fazer uma crítica construtiva a você. Eu acho que você se queimou um pouco nessa thread perante a comunidade Java afirmando que você é anti-testes e que se for preciso vc duplica código só pra não mexer em um lugar. É claro que cada um tem sua opinião, e se vc gosta de trabalhar assim, então ponto final. O grande problema é que vc é um dos principais desenvolvedores de um framework que é bastante conhecido, e talvez essas duas declarações possam gerar danos a imagem do Mentawai…o que seria uma pena…mas eu acredito que isso jah tenha acontecido. Muitos não irão mais usar o Mentawai depois dessas suas declarações…

Não quero gerar polêmica, apenas quis ajudar, pq acho realmente muito legal a sua contribuição para a comunidade Java. Você faz e não simplesmente fala fala e fala…

Rubem_Azenha

Acho que o resto da equipe desenvolve funcionalidades novas mais rapido do que eu escrevo teste. Falta animo e folego para comecar o trabalho :stuck_out_tongue:

saoj

Com todo respeito a sua opinião e a sua crítica “construtiva”, vc está enganado. Muitos já usam e muitos continuarão usando. Pode acender uma vela aí, fazer macumba, pensamento negativo, e tudo mais, ok? Se vc não quiser usar, fique a vontade. Há muitas outras alternativas (boas tb) por aí… Lembre-se que quando fiz o mentawai, muita gente falou que eu era maluco. Acho que valeu a pena não acreditar nelas, do mesmo jeito em que não acreditarei nessa sua crítica “construtiva”.

Não dependo do Mentawai para nada. O Mentawai é um filho pra mim, algo de que tenho orgulho. Tenho emprego que nada tem haver com o Mentawai. Tenho outros negócios dentro e fora da área de tecnologia, logo o Mentawai não é o meu ganha pão. Se ele acabasse amanhã já teria valido muito a pena para mim, para os membros fiéis da equipe de desenvolvedores, e acho que para a comunidade também.

Veja no nosso fórum que recebemos muitos emails e mensagens de incentivo. E vou te dar um dica: quando vc faz essa crítica “construtiva”, esse incentivo e apoio, não existe nada mais forte, nada mais poderoso para me incentivar a ir ainda mais longe com o projeto. Obrigado por essa verdadeira injeção de ânimo!

rc1

Testes automatizados na verdade poupam tempo, não gastam tempo. Além disso, desenvolvedores não gostarem de testar não é novidade. Eu não conheço nenhum que goste. Mas isso é totalmente diferente de escrever testes automatizados, que é resolver um problema realmente inconveniente (testar) escrevendo umas poucas linhas de código que resolvam o problema através de automação (um caso de teste), que é justamente o que programadores adoram fazer. Em suma, testar != escrever testes. Testar é ruim, escrever testes é bom. Ah, a sensação de ver a barrinha do JUnit verdinha ao rodar os mais de 500 testes do sistema (ou mesmo se forem 10, no início) após fazer um bug fix ou uma boa refatoração não tem preço. Embora eu não ache que código sem testes seja inútil, eu sinto como se não tivesse concluído trabalho algum se não acompanho a adição de uma nova funcionalidade com seu caso de teste correspondente.

Para aqueles que querem se dar uma chance de aprender e gostar de testes automatizados, recomendo um único artigo: Test Infected (http://junit.sourceforge.net/doc/testinfected/testing.htm).

microfilo:

Acho que o resto da equipe desenvolve funcionalidades novas mais rapido do que eu escrevo teste. Falta animo e folego para comecar o trabalho :stuck_out_tongue:

Isso é porque todos os desenvolvedores deveriam ter responsabilidade de escrever testes. Eu trabalhei por três anos no projeto Eclipse (http://eclipse.org/eclipse), e lá se espera que todos os desenvolvedores acompanhem modificações significativas com novos casos de testes (também fazem análise, projeto, implementação, testam manualmente, dão suporte no newsgroups e fazem triagem de bugs, mas isso é outra estória). Ter um desenvolvedor ou um time dedicado a somente escrever testes é equivocado pela minha experiência.

Paulo_Silveira

Perfeito. Nada melhor. Tambem é bom quando voce cria os testes vermelhos, e ai pouco a pouco vai fazendo a barrinha voltar a ficar verde!

Duende_Macabro

microfilo:
saoj:

Eu já me convenci de que teste é BOM. Ruim não pode ser. Não consigo ver uma desvantagem de um sistema que possua testes… A 6 meses atrás o Rubem falou que ia fazer os testes unitários do Mentawai. Eu dei a maior força…

Acho que o resto da equipe desenvolve funcionalidades novas mais rapido do que eu escrevo teste. Falta animo e folego para comecar o trabalho :stuck_out_tongue:


É so vc fazer http://www.extremeprogramming.org/rules/testfirst.html
8)

jonataswingeter

Olá pessoal.

Achei muito importante a discussão aqui realizada (embora um tanto quente).
Não iria comentar nada, pois a discussão chegou ao seu culme, mas não obstante, achei importante salientar um alerta à nossa comunidade.

Não é minha opinião, mas é a opinião de autores renomados que testes devem ser configurados e criados antes, durante e depois da fase de desenvolvimento, e não serem esquecidos. Ponto. Eis uma verdade. Deveriamos questioná-la ou aceitá-la?

Por muitas vezes, somos levados a creditar opiniões por serem de “Tal autor”, our por estarem na “moda”, e esquecemos do simples e bom questionamento.
Não me refiro, basicamente, a criação de testes, mas em um sentido holístico, a adoção sistematizada de tecnologias/conceitos sem um mínimo de questionamento racional se “isto é correto e coerente”.

Às vezes, através destes celeumas, descobrimos falhas, melhorias, e até mesmo desnecessidades!
De outra forma, teríamos programadores usando EJB para fazer blogs. A necessidade da racionalidade e instigação é fundamental para qualquer assunto em âmbito global.

Por isso a necessidade da discussão salutar e racional.

Nos primeiros tópicos, vi um participante do fórum ridicularizar o autor do mentaBean por não usar testes unitários.

Me pergunto: Em que mundo estamos?

Somos uma comunidade que busca aperfeiçoar, ensinar, aprender daquilo que trabalhamos no dia a dia, ou somos um bando de arrogantes orgulhosos que em detrimento de usar tal tecnologia ou (achar que sabe) dominar certos paradígmas, saimos esperniando por alguém não estar em conforme com o pequeno roteirinho viciante no qual estamos inseridos?

Parabéns a alguns poucos aqui, que sabem discutir sem achincalhar. Quem sabem um dia, entenderemos que nossa ignorância é para o nosso próprio bem.

Sê vos ternos, epicuristas pelo favor, e socráticos pelo amor.

Rodrigo_Carvalho_Aul

Só completando, escrever testes realmente é muito bom quando se tem uma arquitetura decente, ou seja, classes enxutas com escopo definido, baixo acoplamento, alta coesão e todos os cliches de OO. Quando se tem classes monstros que fazem mil coisas e dependem de outras mil coisas, escrever testes além de ser chato é praticamente impossível. Como a grande maioria dos programadores não sabe OO direito, não é de se espantar que não consigam escrever testes pros seus códigos.

[]'s

Rodrigo Auler

Fabio_Kung

É aí que você se vê forçado a refatorar e começa a aparecer a real beleza (e importância) da coisa!

R

Parabéns, Sérgio.

Diversidade é o espírito da coisa.

[]´s

saoj

Rafaelprp:
Parabéns, Sérgio.

Diversidade é o espírito da coisa.

[]´s

Obrigado mesmo! Agradeço a todos que como vc, mesmo sem terem qualquer contato pessoal comigo, conseguiram entender o espírito da coisa e não ridicularizaram ou deboxaram apenas pelo fato de “não ter testes unitários”.

R

Eu particularmente acho testes unitários muito importantes, mas daí dizer que softwares desenvolvidos sem eles não prestam, é como falar que todo branco é nazista, negro é ladrão e árabe é suicida.

[]´s

chun

O problema reside em um unico fato:

“Um framework SEM TESTES é uma bomba relogio”

O problema nao reside em uma APLICAÇÃO… e sim em um Framework… pois é impossível garantir que uma versao posterior nao ponha tudo a perder…

Mas isso nao retira a validade de testes unitarios em uma aplicação… mas em um framework EH MUITO GRITANTE… imagina um hibernate sem testes… seria INVIAVEL.

Mas o saoj nao entende esta parte… acha que tudo é ataque pessoal a ELE… e nao é…

R

chun:
O problema reside em um unico fato:

“Um framework SEM TESTES é uma bomba relogio”

O problema nao reside em uma APLICAÇÃO… e sim em um Framework… pois é impossível garantir que uma versao posterior nao ponha tudo a perder…

Mas isso nao retira a validade de testes unitarios em uma aplicação… mas em um framework EH MUITO GRITANTE… imagina um hibernate sem testes… seria INVIAVEL.

Mas o saoj nao entende esta parte… acha que tudo é ataque pessoal a ELE… e nao é…

Cara, eu lí esse post inteiro e não quero tomar partido de nada, mas dá só uma olhada na primeira resposta do post:

Simplorio, nao simples. E cade os testes?

Acho que a thread já começou com o pé errado, daí pros ânimos de exaltarem não faltou muito.

saoj

Sugiro que vc coloque isso num outdoor: “O Mentawai é uma bomba relógia porque não tem testes unitários!”

Eu vou colocar um outro do lado falando assim: “O Mentawai é utilizado por dezenas de empresas no Brasil e no exterior. Recebemos muitos emails aprovando e incentivando. Pessoas de dentro da própria Sun aprovam e usam. Há um ERP feito com o Mentawai na frança. Há empresas de consultoria fazendo projetos web com o Mentawai. Documentaçao clara, objetiva e em portugues. Para mais informaçoes sobre os casos de sucesso apresentados aqui clique aqui e aqui.”

Aproveito para comunicar o seguinte também, pois vc me deu uma boa idéia:

[color=“blue”]“Se vc é um especialista em testes unitários ou tem bons conhecimentos e vontade de aprender, entre para o time do Mentawai e faça testes unitários para o nosso framework. Acreditamos que vc ficará bem feliz em poder entrar para o time de desenvolvedores do Mentawai, mas para lhe dar um incentivo a mais vc receberá de present um iPhone da Apple caso os testes fiquem realmente muito bem feitos. Interessados entrar em contato com algun desenvolvedor do Mentawai.”[/color]

chun

Olhe… foi a opiniao do CV… e por incrivel que pareca… a maioria concordou com a afirmacao dele…

E se o saoj lanca um troco num forum que nem o do GUJ… ele deve estar preparado para este tipo de comentarios… e responder tmb… afinal… se fosse algo que ele estivesse fazendo soh pro mentawai… colocaria no forum do framework direto…

amilhoranza

Discordo de você que o mentawai seja uma bomba relógio. Eu diria que é um relógio, pois trabalha direitinho.

Prefiro 1 milhão de vezes usar o menta sem testes unitários do que usar Struts, WebWork JSF que possuem todos os tais testes.

Faço uma aplicação muito melhor e mais rápido do que se eu fizesse com os outras FW citados.

Rafael_Steil

Bom pessoal,

contrariando a nossa atual politica de não trancar tópicos, estamos encerrando por aqui esta discussão, pois será o melhor para muitas pessoas.

Grato pela compreesão de todos.
Rafael

seufagner

Aproveito o ensejo e venho aqui lançar o primeiro release do meu framework inovador, o MidletORM… Apelidado carinhosamente de MORM… A revolução JME, confiram!

www.morm.org

seufagner

Artigo maravilhoso! Obrigado!

Criado 12 de abril de 2007
Ultima resposta 15 de abr. de 2007
Respostas 235
Participantes 60