Apos ler dezenas de msgs sobre POO, Hibernate, mapeamento o-r, etc,
estou bem confuso quanto a melhor tecnologia a ser usada.
Se for acessar um BD Relacional? É Hibernate?
Se for acessar um BD Orientado a Objetos? É JDO?
Ou da para usar JDO com BD Relacional?
Ou Hibernatee JDO nem sao concorrentes?
:?: :?:
JDO trabalha, teoricamente, sobre qualquer tipo de fonte de dados, incluindo banco de dados relacional. Hibernate, ao contrário, só trabalha sobre banco de dados relacionais (alguns, não todos). E ambos concorrem neste nicho. [boatos]Dizem por aí que, agora que a Fleury&Co. (vulgo JBoss Group) encampou o projeto Hibernate, eles vão convertê-lo para que, nas próximas versões, ele seja compatível com a especificação JDO. [/boatos]
Apos ler dezenas de msgs sobre POO, Hybernate, mapeamento o-r, etc,
estou bem confuso quanto a melhor tecnologia a ser usada.
[/quote]
Mapeamento O/R, fazendo uma analogia, eh como uma “ponte” entre os dois mundos… voce programa em OO, cria seus objetos na boa, cria suas tabelas e estruturas na boa tambem (com base na modelagem das entidades e tal) e na hora de integrar os dois, pra nao se “sujar” com SQL (p.ex.), voce usa uma ferramenta de O/R.
Pode ser Hibernate… pode ser JDO… pode ser alguma outra ferramenta… nao eh obrigatorio - usar Hibernate eh apenas uma das opcoes.
Acho que um BD OO nao precisaria utilizar uma ferramenta O/R - afinal essas ferramentas sao pra BD relacionais… alem do mais o BD ja eh OO… BTW, nunca usei um BD OO - alguem ja usou e poderia dizer como funciona? Tem que usar JDBC? Machuca?
Sim - essa eh a ideia.
Sao concorrentes sim… em teoria… use o que voce achar mais interessante…
Aproveitando a deixa: alguem poderia comentar alguma coisa sobre o iBATIS? Qual sua licenca e objetivo?
Eu achei ontem um BDOO (acho que é, nao tenho certeza ainda…) chamado PERST, que outras pessoas ja tinham comentado aqui no GUJ. Alguem pode comentar se ele funciona bem, se é OO mesmo, se tem acesso via JDO, etc?
E se valeria a pena pensar em usa-lo (ou algum outro BDOO) ao inves de usar BDR + camada O/R?
Se um dia banco de dados OO funcionar com a mesma performance de bancos relacionais, acho que vai nevar no inferno (o mesmo serve para banco de dados XML).
Quer dizer que usar um BDOO em aplicacoes reais esta fora da realidade?
O ideal é usar BDR mesmo com mapeamento O/R?
Sendo assim, JDO, que nao serve pra nada, é mais uma daquelas APIs genericas e bonitas que ninguem usa? Ou o JDO é util/melhor/pior que Hybernate/Castor/etc?
[quote=“edilmar”]Quer dizer que usar um BDOO em aplicacoes reais esta fora da realidade?
O ideal é usar BDR mesmo com mapeamento O/R?
Sendo assim, JDO, que nao serve pra nada, é mais uma daquelas APIs genericas e bonitas que ninguem usa? Ou o JDO é util/melhor/pior que Hybernate/Castor/etc?[/quote]
Não quis dizer isso. Você até pode usar banco OO, boa sorte. O principal problema de bancos OO em relação a bancos relacionais está na forma como os dados são armazenados. Os bancos relacionais armazenados os dados em registros de tamanhos fixo. Ou seja, não importa como se o nome de uma pessoa tenha 6 letras e de outra tenha 10, o campo nome vai ter sempre um tamanho pré-definido (que você define quando cria uma tabela, usando, por exemplo, nome varchar(30) ). Daí para o gerenciador ir de um registro a outro é uma simples operaçãozinha de soma (que não costuma levar mais do que um ciclo de clock para ser executado). Já os bancos OO armazenam dados em grafos, que não necessariamente possuem tamanhos fixos. Daí, percorrer estes grafos, por melhor que seja a organização destes grafos e os algoritmos para percorrê-los, nunca vai ser melhor do que uma operaçãozinha de soma
Pessoalmente, recomendo usar um banco de dados relacional (embora odeie banco de dados) porque:
você vai conseguir um suporte muito melhor;
mecanismos O/R para aliviar os impedance mismatches da vida e tornar sua interação com banco de dados menos dolorosa possível;
Se está em dúvida sobre usar JDO ou Hibernate, as minhas opiniões:
Hibernate tem uma API muito mais clara, simples e direta;
JDO lhe oferece mais liberdade sobre a escolha do tipo de fonte de dados que você pretende usar; se você estiver indeciso sobre qual escolher, melhor optar por JDO;
a comunidade do Hibernate está mais agitada do que a do JDO, então é mais fácil encontrar ajuda sobre Hibernate do que sobre JDO (embora isso não seja um grande ponto a ser levado em consideração);
[quote=“edilmar”]Passa uma ultima opiniao sincera sua…
JDO tem futuro?
Pela sua opiniao que é mais interessante usar BDR, entao parece ser mais obvio eu usar Hybernate (ou outra camada o/r) do que JDO, certo?[/quote]
:shock: Quem sou eu para dar uma opinião destas? Diziam que Betamax iria revolucionar o mercado de vídeo doméstico e foi um fiasco. Eu prefiro não chutar e dizer “opa, JDO tem futuro!” e dar de cara com o abandono pela comunidade da especificação. Mas, seja lá qual for sua escolha, você ainda terá toda uma comunidade imensa lhe apoiando em sua escolha. Dica: teste os dois e veja qual você acha mais legal. Veja a revista MundoJava#1, pois lá tem artigos tanto sobre Hibernate (meu) e sobre JDO (do Urubatan) em que você pode aprender bastante.
OODBMS modernos em alguns casos tem performance muito superior ao de banco relacionais. Outra coisa, usam blocos de tamanho fixo/variavel na mesma medida que bancos relacionais.
Problemas de performance normalmente estão relacionados a problemas de tunning e objetos muito granulares, mas isso existe também no mundo relacional, quem nunca teve que lidar com modelos absurdamente normalizados, que para extrair qualquer informação são necessarios uns 10 joins?
O problema é que não existe pressão de mercado, padrões e ferramentas adequadas. Sem falar que a resistencia é enorme.
Deem uma olhada no site. Parece uma boa solucao. Um dos estudos de caso na utilizacao deste banco e a Bolsa de Mercadorias de Chicago (a maior do mundo).
Aproveitando a deixa… existem BDOOs chamados de “modernos” e gratuitos?
Eu olhei o Versant e ele é pago.
Por falar em BDOO, alguem ja usou o PERST e sabe se é BDOO e se presta?