iBatis

11 respostas
caiozanchetti

Pessoal,
Gostaria de saber se alguem usa iBatis. Achei muito legal a ideia do projeto porem gostaria de saber a “aderencia” q ele está tendo… Se a comunidade está usando e trabalhando com esse framework…
Gostaria de saber tb com realacao a produtividade comparando-o com hibernate.
Abraco a todos

11 Respostas

amilhoranza

Eu uso Ibatis em um projeto aqui na empresa juntamente com JSF e gostei bastante, principalmente por precisar alterar código sql quase todo dia.

W

Legal, e vc. poderia explicar como faz a leitura do arquivo sqlMap-config.xml e se puder colocar um exemplo ficaria grato.
Obrigado…

D

Nós usamos o iBatis já faz uns 6 meses e até agora não tivemos problemas com ele.

Os problemas mais frequentes que tivemos foi com os erros nos mapeamentos, geralmente quando nós erramos os nomes dos parâmetros com maiúsculas e minúsculas.

Recentemente descobrimos um plugin para o Eclipse que faz o mapeamento automático e é bem fácil de usar. Chama-se Abator.

Minha preocupação em relação ao iBatis é com a frequência de atualização que eu acho um pouco lenta.

Uma coisa que me aliviou é que o Spring Framework está fornecendo compatibilidade com o iBatis também.

Não posso falar nada do Hibernate, pois não o usei.

A grande vantagem que acho do iBatis é permitir utilizar SQL ad hoc. Isso permite utilizar SQLs otimizados para o banco que nós utilizamos.

No nosso caso não existe a preocupação de portabilidade entre bancos de dados, mas se isso for necessário basta mudar o SQL que fica em um arquivo XML separado da aplicação e está tudo resolvido.

Recomendo você consultar bastante a documentação, apesar de desatualizada como falado anteriormente.

D

==>Legal, e vc. poderia explicar como faz a leitura do arquivo sqlMap-config.xml e se puder colocar um exemplo ficaria grato.
==>Obrigado…

Na documentação, iBatis-dao-2.pdf à página 4, existe um exemplo de como ler o arquivo sqlmap-config.xml.

W
Ok. Daniel ,

mais estava me referindo a este exemplo. Acho que seria mais fácil para ler o arquivo de configuração.:

"

public MyAppSqlConfig {

private static final SqlMapClient sqlMap;

static {

try {

String resource = “com/ibatis/example/sqlMap-config.xml”;

Reader reader = Resources.getResourceAsReader (resource);

sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

} catch (Exception e) {

// If you get an error at this point, it doesn’t matter what it was. It is going to be

// unrecoverable and we will want the app to blow up hard so we are aware of the

// problem. You should always log such errors and re-throw them in such a way that

// you can be made immediately aware of the problem.

e.printStackTrace();

throw new RuntimeException (“Error initializing MyAppSqlConfig class. Cause: ” + e);

}

}

public static getSqlMapInstance () {

return sqlMap;

}

}

Reading

"

Apesar que o Spring trata de maneira muito mais elegante  e padronizada.
caiozanchetti

Eu conclui recentemente um projeto na minha empresa que usa hibernate.

Tive alguns problemas com o hibernate principalmente com relação a mapeamentos n:n onde o hibernate fornece suporte, porém com algumas restricoes, forçando o usuario a criar “Entidades de Relacionamento” para alguns casos, o que no sistema “normal” seriam absolutamente dispensáveis… (Não quero entrar em detalhes a respeito desse ponto especifico. É apenas um comentario sobre uma situação na qual me deparei).

Vejo no hibernate vários pontos positivos, mas questino se a portabilidade entre bancos compensa o tempo que vc leva criando mapeamentos (q as vezes são bastante tediosos e complicados de fazer) + algumas peculiariades como a criação de entidades de relacionamento desnecessárias + o uso do hql no codigo (que pode ser colocado nos xmls ou usando a Criteria Api, eu sei) mas em muitos codigos que ví e com as pessoas da universidade onde estudo pude conversar, usam o codigo hql inserido na classe.

Se eu falei algo errado por favor me corrijam, gostaria muito que tivessemos uma conversa produtiva q nos ajudasse a optar melhor de acordo com nossas experiencias.

Obrigado.

D

Como falei anteriormente não conheço o Hibernate, mas acredito que exista um plugin para o Eclipse que ajude a fazer os mapeamentos.

amilhoranza

Segue como eu faço pra carregar o SqlMap

package br.com.empresa.pesquisaredecred.database;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

import java.io.IOException;
import java.io.Reader;


public class IbatisService  {
  private SqlMapClient sqlmap;
  private static IbatisService instance;
  
  public IbatisService() throws IOException {
    Reader reader = Resources.getResourceAsReader("br/com/empresa/pesquisaredecred/conf/ibatis/SqlMapConfig.xml");    
    sqlmap = SqlMapClientBuilder.buildSqlMapClient(reader);
  }
  
  
  public SqlMapClient getSqlMapHandler(){
    return sqlmap;
  }
  
}

Qualquer dúvida estamos ae !

W

amilhoranza ,

Obrigado pela atenção, isso vai me ajudar enquanto não crio uma estrutura "jsf+ibatis+Spring". Se eu puder ajudar em algo é  passar e-mail ok...

Valeu galera boa de java… :idea:

amilhoranza

Opa, precisando pode contar também. :thumbup:

Rubem_Azenha

Alguns códigos mais antigos ainda usam o iBatis aqui, mas os novos códigos usam Hibernate.

Criado 5 de julho de 2006
Ultima resposta 5 de jul. de 2006
Respostas 11
Participantes 5