Como ser um maluco da contra-cultura

mas agora eu fiquei curioso… pq vc não gosta do hibernate e do spring?

É pra mim essa pergunta ou para o colega…

Acho que foi para o colega,né…desculpe… :roll:

Eu nunca gostei de trabalhar com aquelas doses cavalares de XML. O Spring é um excelente framework, mas configurar ele sempre foi horrível.

Ultimamente ando tendo tantos problemas com projetos que dependem de outros no Maven que estou começando a não gostar dele também. Acho que se eu não usasse o Hudson já teria deixado de usar o Maven há tempos.

O Log4J é bacana, o properties é até simples de montar pra ter uma configuração aceitável.

XML eu realmente não gosto, mas Annotations sim (desde que usadas de forma saudável). O chato de usar Annotations é quando o pessoal abusa. Já vi classes com mais Annotations do que código.

Cara sendo mais extremista, por que diabos framework? Por que não fazer todas as tarefas de persistência com um mero driver de jdbc e scripts sql em java? Por que não usar apenas servlets e jsp para construir aplicações web? Por que não programar em Java sem todos esses frameworks estúpidos, que em lugar de automatizar tarefas nos leva a resolver mais problemas de conflito entre frameworks do que de aplicação? Hibernate? JSF? Seam? Eu seria mais avançado em dizer pra que IDE?
Já que é pra ser do contra, vamos ser radicalmente.

[ironia mode=on]
Ou, sendo ainda mais radical, pra que usar essas linguagens de alto nível quando se tem muito mais poder nas mãos usando o bom e velho Assembler??
[/ironia]

[]´s

Parando de trollar um pouco (ou não):

Acho que só não gosta de um framework quem não sabe usar e/ou não sabe pra que serve. Ex.: quem foi aí que comentou que o Hibernate é pouco flexível pq não suporta NoSQL, mesmo??

[]´s

Concordo com o asaudate

[quote=asaudate]Parando de trollar um pouco (ou não):

Acho que só não gosta de um framework quem não sabe usar e/ou não sabe pra que serve. Ex.: quem foi aí que comentou que o Hibernate é pouco flexível pq não suporta NoSQL, mesmo??

[]´s[/quote]

E seguindo essa linha, isso se aplica também ao Spring, ao Maven e qualquer outra API/Framework por aí.

É que o Java sofre de um problema desde que foi lançado: Todo “Hello World” no Java é muito complicado e não é intuitivo. Vá fazer um Hello World com Hibernate, com Spring, com JSF e veja o parto que é pra fazer funcionar.

Entretanto, eu gosto de XML. Sim é gosto, mas paciência. Não gosto de utilizar as anotações do Spring (somente em casos especiais, no máximo um @Autowired), mas mesmo que haja XML (oh maldito XML!) você só configura uma vez! Não é toda hora. Mesma coisa quando falamos de Spring, de Maven, de Hudson ou da mãe Dinah. O pessoal mete pau nos frameworks porque acha que tem que configurar toda hora os XMLs, como se pra cada linha de código que tu escreves, tens que colocar mais uma entrada no XML.

Meter pau quando não se sabe utilizar algo é comum, eu mesmo já fui assim. Eu por exemplo já odiei maven e git por não saber usá-los direito, por isso que não crucifico ninguém aqui. Não passa de um preconceito bobo. Se quiserem continuar usando JDBC, gerenciando pools na mão, criando mil anotações e criando APIs menta*, fiquem a vontade :smiley:

Abraço

[quote=asaudate]Parando de trollar um pouco (ou não):

Acho que só não gosta de um framework quem não sabe usar e/ou não sabe pra que serve. Ex.: quem foi aí que comentou que o Hibernate é pouco flexível pq não suporta NoSQL, mesmo??

[]´s[/quote]

Eu disse :smiley:

Aos poucos todo mundo está abandonando o XML e partindo para configuração programática. Spring => Spring JavaConfig ou Guice, Maven => Gradle.

Ninguém vai fazer isso: usar JDBC puro, com o seu próprio pool de conexões é perda de tempo. Pra isso existe abstração.

    public List<Performance> loadMine(int user_id) throws Exception {
    	
    	Connection conn = getConn();
    	
    	PreparedStatement stmt = null;
    	ResultSet rset = null;
    	
    	try {
    		
    		StringBuilder query = new StringBuilder(512);
    		
    		query.append("select ").append(session.buildSelect(Performance.class, "p"));
    		
    		query.append(", ").append(session.buildSelect(User.class, "u"));
    		
    		query.append(" from performances p, users u");
    		
    		query.append(" where p.user_id = ? and p.status in (?,?,?,?)");
    		
    		query.append(" and p.user_id = u.id order by p.since");
    		
    		stmt = conn.prepareStatement(query.toString());
    		
    		int index = 1;
    		
    		stmt.setInt(index++, user_id);
    		stmt.setInt(index++, Status.ASSIGNED);
    		stmt.setInt(index++, Status.RE_ASSIGNED);
    		stmt.setInt(index++, Status.BEING_REVIEWED);
    		stmt.setInt(index++, Status.ESCALATED);
    		
    		rset = stmt.executeQuery();
    		
    		List<Performance> list = new LinkedList<Performance>();
    		
    		while(rset.next()) {
    			
    			Performance p = new Performance();
    			
    			session.populateBean(rset, p, "p");
    			
    			User u = new User();
    			
    			session.populateBean(rset, u, "u");
    			
    			p.setUser(u);
    			
    			list.add(p);
    		}
    		
    		return list;
    		
    	} finally {
    		
    		close(rset, stmt);

    	}
    }

[quote=asaudate]Parando de trollar um pouco (ou não):

Acho que só não gosta de um framework quem não sabe usar e/ou não sabe pra que serve. Ex.: quem foi aí que comentou que o Hibernate é pouco flexível pq não suporta NoSQL, mesmo??

[]´s[/quote]

Afff,como vc adivinhou,tem uma bola de cristal,rsrs…Pelo menos no meu caso é por isso,não tive tempo ainda para me dedicar,mas vou faze-lo,só não sei quando.
Mas já que é pra radicalizar,vamos usar o famoso “Genexus”…Já vi tudo,o povo vai falar mal do que não conhece. :wink:

OBS:também não acho que é ironia,se a pessoa não gosta,não importa o motivo,o importante é fazer seu trabalho bem feito,com ou sem framework.

Apesar de servir como orientada principalmente para aplicações corporativas, para web, plataformas Windows (GUI) e Plataformas móveis,

Não soui muito fãs a uso dela !!!

Genexus , na verdade eu odeio ela!! rsrsrs

[quote=saoj][quote=Leozin]
Entretanto, eu gosto de XML. Sim é gosto, mas paciência. Não gosto de utilizar as anotações do Spring (somente em casos especiais, no máximo um @Autowired), mas mesmo que haja XML (oh maldito XML!) você só configura uma vez! Não é toda hora. Mesma coisa quando falamos de Spring, de Maven, de Hudson ou da mãe Dinah. O pessoal mete pau nos frameworks porque acha que tem que configurar toda hora os XMLs, como se pra cada linha de código que tu escreves, tens que colocar mais uma entrada no XML.
[/quote]

Aos poucos todo mundo está abandonando o XML e partindo para configuração programática. Spring => Spring JavaConfig ou Guice, Maven => Gradle.

Ninguém vai fazer isso: usar JDBC puro, com o seu próprio pool de conexões é perda de tempo. Pra isso existe abstração.

    public List<Performance> loadMine(int user_id) throws Exception {
    	
    	Connection conn = getConn();
    	
    	PreparedStatement stmt = null;
    	ResultSet rset = null;
    	
    	try {
    		
    		StringBuilder query = new StringBuilder(512);
    		
    		query.append("select ").append(session.buildSelect(Performance.class, "p"));
    		
    		query.append(", ").append(session.buildSelect(User.class, "u"));
    		
    		query.append(" from performances p, users u");
    		
    		query.append(" where p.user_id = ? and p.status in (?,?,?,?)");
    		
    		query.append(" and p.user_id = u.id order by p.since");
    		
    		stmt = conn.prepareStatement(query.toString());
    		
    		int index = 1;
    		
    		stmt.setInt(index++, user_id);
    		stmt.setInt(index++, Status.ASSIGNED);
    		stmt.setInt(index++, Status.RE_ASSIGNED);
    		stmt.setInt(index++, Status.BEING_REVIEWED);
    		stmt.setInt(index++, Status.ESCALATED);
    		
    		rset = stmt.executeQuery();
    		
    		List<Performance> list = new LinkedList<Performance>();
    		
    		while(rset.next()) {
    			
    			Performance p = new Performance();
    			
    			session.populateBean(rset, p, "p");
    			
    			User u = new User();
    			
    			session.populateBean(rset, u, "u");
    			
    			p.setUser(u);
    			
    			list.add(p);
    		}
    		
    		return list;
    		
    	} finally {
    		
    		close(rset, stmt);

    	}
    }

[/quote]

Jesus… você acredita mesmo que criar essa penca de código aí é melhor do que usar Hibernate???

[quote=Felagund][quote=asaudate]Parando de trollar um pouco (ou não):

Acho que só não gosta de um framework quem não sabe usar e/ou não sabe pra que serve. Ex.: quem foi aí que comentou que o Hibernate é pouco flexível pq não suporta NoSQL, mesmo??

[]´s[/quote]

Eu disse :D[/quote]

Então, cara… o caso é que o Hibernate, como ferramenta ORM é feito para trabalhar somente com bancos de dados relacionais. Na verdade, existem tentativas de usar o Hibernate com bancos como o BigTable, do Google App Engine, mas o pessoal que já fez isso admite que fica muito ruim de trabalhar e admite, também, que é melhor usar outras estratégias.

Então, recapitulando… JPA (Hibernate) != Bancos NoSQL, OK ?

[]´s!!!

[quote=Anime][quote=asaudate]Parando de trollar um pouco (ou não):

Acho que só não gosta de um framework quem não sabe usar e/ou não sabe pra que serve. Ex.: quem foi aí que comentou que o Hibernate é pouco flexível pq não suporta NoSQL, mesmo??

[]´s[/quote]

Afff,como vc adivinhou,tem uma bola de cristal,rsrs…Pelo menos no meu caso é por isso,não tive tempo ainda para me dedicar,mas vou faze-lo,só não sei quando.
Mas já que é pra radicalizar,vamos usar o famoso “Genexus”…Já vi tudo,o povo vai falar mal do que não conhece. :wink:

OBS:também não acho que é ironia,se a pessoa não gosta,não importa o motivo,o importante é fazer seu trabalho bem feito,com ou sem framework.[/quote]

Então, Anime… na verdade, eu estava falando um pouco de mim, mesmo, porque eu não gosto muito do Maven. Mas, certamente, admito que não sei usar muito bem e tampouco conheço o propósito muito bem. No entanto, conforme eu vou conhecendo algumas features, vou vendo que ele pode ser bem útil dadas certas condições de temperatura e pressão ideais =P

[]´s

Sim. Mas precisa saber como um banco de dados funciona e como usar SQL.

Com Hibernate vc tem que aprender HQL ou Criteria.

Menos código não é necessariamente melhor, pois vc precisa de flexibilidade.

E mais, olhando esse código vc entende exatamente o que está acontecendo. Vc está no controle. Agora usando o Hibernate ele faz o que quiser, usa mágica, cache, lazy loading, blah, blah, blah.

Eu acho o Hibernate excelente para quem nunca trabalhou com SQL ou não sabe como um banco-de-dados funciona. Quer abstração total e não precisa de flexibilidade, pois não vai saber o que fazer com ela. Mesma coisa dizer que o Maker faz o cara ganhar tempo.

Sei que muitos não vão concordar, pois vão dizer que as vantagens que o Hibernate lhe oferece pagam o seu custo. Assim como o Maven. :expressionless: Não concordo, mas essa é apenas minha opinião pessoal.

[quote=saoj][quote=asaudate]
Jesus… você acredita mesmo que criar essa penca de código aí é melhor do que usar Hibernate???
[/quote]

Com Hibernate vc tem que aprender HQL ou Criteria.

[/quote]

Ou como usar uma native query :roll:

EDIT: ou como usar JPAQL (que já é uma especificação padronizada e que um programador que se preze precisa aprender, mesmo que não vá usar).

Uau, que fantastico esse código.
Bem melhor que o equivalente em Hibernate:

public List<Performance> loadMine (int userId) {
    Criteria c = getSession().createCriteria(Performance.class);
    c.add(Expression.eq("user.id", userId));
    c.add(Expression.in("status", Collections.asList(Status.ASSIGNED, Status.RE_ASSIGNED, Status.BEING_REVIEWED, Status.ESCALATED)));
    return c.list();
}

Parabéns Sérgio! Você elevou o desenvolvimento Java a um outro patamar :slight_smile:

Obrigado, Rubem! Sei que vc tb gosta do Maker, pois vc não precisa fazer quase nada para colocar uma aplicação web rodando. Bem menos código para vc cansar os seus dedos digitando.

[quote=saoj][quote=Rubem Azenha]
Parabéns Sérgio! Você elevou o desenvolvimento Java a um outro patamar :slight_smile:
[/quote]

Obrigado, Rubem! Sei que vc tb gosta do Maker, pois vc não precisa fazer quase nada para colocar uma aplicação web rodando. Bem menos código para vc cansar os seus dedos digitando.[/quote]

Também não precisa chutar o balde. O caso é que, de fato, se você aprende a usar a ferramenta corretamente (e tenho certeza que esse é o ponto onde o Rubem quer chegar) é muito mais produtivo do que ter que reinventar a roda a cada programa feito.

[]´s