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

“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.

[quote=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

[/quote]

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…

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 …

[quote=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…
[/quote]
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.

afsrj wrote: [quote]

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 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!   



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

[/quote]

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:

[quote]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…[/quote]

É 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…

[quote=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.[/quote]

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.

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?

É … 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” ?!
  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.

[quote=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.
[/quote]
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:

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.

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:

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.

++

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.

++[/quote]

++

++

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…

[quote=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…

[/quote]

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.

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

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 ?

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