Já é possível com o Hibernate3 fazer um CRUD simples de beans sem qualquer configuração XML ?
Quero persistir um objeto User com algumas propriedades. Ele já consegue assumir os tipos do banco através dos tipos java ?
Já é possível com o Hibernate3 fazer um CRUD simples de beans sem qualquer configuração XML ?
Quero persistir um objeto User com algumas propriedades. Ele já consegue assumir os tipos do banco através dos tipos java ?
Sim Sérgio. Na verdade, não é totalmente sem configuração. Usando annotations você ainda assim precisa declarar seus beans no hibernate.cfg.xml, mas não passa de uma linha:
<mapping class="org.mentawaiframework.User" />
Realmente…no hibbernate 3 as coisas ficaram bem mais legais e sem o mardito XML…
alias…odeio struts…tem XML mais que java…ahuahau
Realmente…no hibbernate 3 as coisas ficaram bem mais legais e sem o mardito XML…
alias…odeio struts…tem XML mais que java…ahuahau
Vc já deve conhecer o Mentawai então.
Uma pergunta então derivada dessa:
Como está a aceitação do Java5 para desenvolvimento web?
Sendo meu framework e/ou projeto em Java5 vou ter alguma dificuldade para colocar o meu site no ar nos provedores que estão por aí? Ou isso já é irrelevante no momento essa decisão de usar ou não usar Java5?
Sérgio, a maioria (se não todos) os clientes que trabalho já migraram para Java 5. A maioria dos provedores decentes também. Ficar se limitando à não usar as novas features (como annotations, etc) por causa de compatibilidade somente se você tiver uma base realmente grande de clientes/usuários e não haver chance alguma de migração. As vantagens são muito visíveis 
Yeah!
Acabei de responder um email pro Sergio, e gostaria de repetir uma parte dele aqui, em que disse assim (eu editei uma palavrinha que escrevi errado, hehe):
É isso Sergio, não se limite. As novas funcionalidades são muitas. Se há alguma coisa no Mentawai que pode ser atualizado em relação ao Java 5, não hesite, pelo amor de Deus, vai que você me salva novamente. 
Queria inclusive deixar uma daquelas mensagens no estilo de auto-ajuda:
“Não tema o novo. Muitos fracassam por não experimentar o novo, e simplesmente ficam estagnados/inutilizáveis num mundo atual.”
[]s.
eu uso hibernate 3 ate mesmo para projetos que tem 1 ou 2 tabelas. é @Entity e pronto! alem de duas linhas de XML de configuracao (ou voce prefere escrever sql em properties…?)
Outra coisa, se resolver adotar Java 5 (e você vai, né?
), não exite em refatorar o código já existente jogando fora coisas feias pra deixar todo mundo mais feliz.
mas na pratica o xml do hibernate nao é tao mal assim…
vc usa uma ferramenta tipo o middlegen, faz a engenharia reversa de tudo e pronto… nunca mais toca no xml depois que eles estao criados.
Ola!
Irei tentar usar o Hibernate 3, com Annotations e configurar a conexão através do hibernate.properties.
Pergunto: Mesmo assim, preciso ter o xml de configuração do hibernate (hibernate.cfg.xml)?
Devo declarar minhas classes (map) neste xml obrigatoriamente?
Concordo. Eh mais complicado entender o framework em si (relacionamentos, cache, estilos de fetching, etc) e como integra-lo com o ambiente (DAO, transacoes, quando abrir e fechar sessoes, SessionFactory, etc) do que as configuracoes. Claro - nao eh uma critica, isso eh inerente ao framework ja que o que ele faz nao eh simples.
Se voce entender como usar o Hibernate, a configuracao eh o de menos. Nao da pra ter a ilusao de que se mudar de XML para anotacoes ele vai funcionar automagicamente e corretamente. 
Marcio Kuchma
Mas ninguém pode negar…tirar o xml e começar a usar convenções no código e usar annotations é uma ótima coisa que aconteceu no hibernate!!!facilita manutenção e deixa o código bem mais limpo…sem aquele monte de configurações!
Eu não acho que tenha ficado mais fácil ou mais dificil…mas com certeza ficou maaaaaaaaais claro…bem mais…
Quanto ao metawai não conheço esse framework…conheço o raptor
e quanto ao java 5…os colegas responderam…
Mas que m…, No meu trampo tá tudo engessado no Java 1.4… Muitos clientes e programas muito grandes… Já to sentindo o peso do anacronismo e me sentindo obsoleto…
:thumbdown:
Mas ninguém pode negar…tirar o xml e começar a usar convenções no código e usar annotations é uma ótima coisa que aconteceu no hibernate!!!facilita manutenção e deixa o código bem mais limpo…sem aquele monte de configurações!
Eu não acho que tenha ficado mais fácil ou mais dificil…mas com certeza ficou maaaaaaaaais claro…bem mais…Quanto ao metawai não conheço esse framework…conheço o raptor
e quanto ao java 5…os colegas responderam…:D
Bom estou utilizando os plugins do Hibernate no eclipse e gerando a reversa do banco, mapeamento automático. Sei que para o design de mapeamento de domínio para tabelas é errôneo, mas em muitos casos, principalmente quando se tem pouco tempo para produzir uma aplicação, isso é uma mão na roda.
Exporto o Jar - incorporo ao projeto e soh declaro os XML no Context do Hibernate - Configuração Spring 
Mas que m…, No meu trampo tá tudo engessado no Java 1.4… Muitos clientes e programas muito grandes… Já to sentindo o peso do anacronismo e me sentindo obsoleto…
:thumbdown:
Em muitos clientes o 1.4 ainda é a plataforma padrão. Aqui é 1.3 como Standard, mas utilizamos a 1.4… heheeh … foda isso !!
O fator principal para não adotarem o 5 está com a IBM - Websphere e suporte ao novo JEE 5 .
Assim que a IBM soltar release, muita coisa muda por aqui …
Mas que m…, No meu trampo tá tudo engessado no Java 1.4… Muitos clientes e programas muito grandes… Já to sentindo o peso do anacronismo e me sentindo obsoleto…
:thumbdown:
Seria medo da empresa em provar uma versão nova? Não entendo. A não ser que o problema de vocês sejam o mesmo do Kenobi.
[]s.
[quote=plentz]Sim Sérgio. Na verdade, não é totalmente sem configuração. Usando annotations você ainda assim precisa declarar seus beans no hibernate.cfg.xml, mas não passa de uma linha:
<mapping class="org.mentawaiframework.User" />
se usar o spring-annotation (lógico isto implica em usar o spring também)
ele tem um utuiltário que detecta automagicamente os beans anotados com @Entity 
Mas que m…, No meu trampo tá tudo engessado no Java 1.4… Muitos clientes e programas muito grandes… Já to sentindo o peso do anacronismo e me sentindo obsoleto…
:thumbdown:

hehehe, tudo bem que a escolha dos frameworks foi meio forçada no exemplo, mas os ganhos com produtividade são visiveis!
A desculpa do povo é que daria muito trabalho pra migrar, e não temos pessoal pra isso, blablabla…
Será que esse argumento é mesmo válido?
EDIT:
E quais são as forçadas do cara no artigo?
as unicas forçadas foram na escolha dos frameworks para a comparação 
struts é um dos frameworks com pior tempo de desenvolvimento 
ou seja, com uma arquitetura melhor para 1.4 não seria 8x o tempo de desenvolvimento do Java 5, apenas a proporção iria ser alterada 
Bom aqui nao temos a felicidade de trabalhar com Java5
pois a aplicacao ira rodar em OAS… ( e deu chega de chorar por isso! )
Entao pra fugir da engenharia reversa que algumas vezes deixa-nos na mao, adotamos o XDoclet com as anotacoes do Hibernate!
Ele gera os HBMs certinho, sim nao é um Spring-Annotation + Hibernate-Annotation da vida mas ja ajuda bastante…
Ex.:
/**
*@hibernate.class table = "Pessoa"
*/
public class Pessoa
Até agora tem dado conta do recado legal…
Ah e voce nao ira fugir de configurar o hibernate.cfg.xml.
Mas fazer o que né…
Mas esse nao é o caso aqui do projeto usamos o Spring pra controle transacional ai tem só o XMLao do Spring…
Valeu? Até… :thumbup:
[]s
Na minha opinião, a principal vantagem dos annotations é as facilidades que um Eclipse da vida te proporciona: auto-complete e detecção do erro de código logo que você digitou facilita MUITO.
Num projeto no qual terminei agora onde tenho mais de 100 classes mapeadas pro hibernate a quantidade de arquivos (HBMs) que nao teria de criar ( mesmo usando XDocler) e dar manutencao seria uma vantagem. Esta tudo na minha classe no mesmo lugar.
Minha experiência diz: NÃO USEM O XDOCLET.
Por que? Por mais que o XDoclet cubra 90% das configurações do Hibernate ele nunca vai cobrir 100%.
Ajustes finos na configuração. O XDoclet não lhe permite fazer muita coisa, que se você fizesse teria um ganho considerado. Uma vez que o XDoclet não suporta, e nunca vai suportar (é impossivel), muita coisa na hora de criar as suas classes você vai sempre pelo que existe no XDoclet, não pelo que existe no Hibernate.
Vamos lá, uma vez que você aprenda o XML do Hibernate é molezinha configurar aquilo. Ainda mais com uma Hibernate IDE da vida.
Se vocês mesmo assim resolverem usar o XDoclet, pelo menos usem o XDoclet 2.
Abraços,
Jose Peleteiro
Por exemplo?
[quote=plentz]Sim Sérgio. Na verdade, não é totalmente sem configuração. Usando annotations você ainda assim precisa declarar seus beans no hibernate.cfg.xml, mas não passa de uma linha:
<mapping class="org.mentawaiframework.User" />
Ueh, vc pode criar a SessionFactory passando um objeto Configuration pra ela. Ou seja, sem nenhum XML.
http://www.hibernate.org/hib_docs/reference/en/html/session-configuration.html

Por exemplo?
Arrays e Maps por exemplo, e um bocado de atributos.
Acredite em mim, eu sou um committer do XDoclet2/Generama e junto com o Konstantin desenvolvedor do plugin para o Hibernate. Hoje eu não uso mais o XDoclet, logo não participo mais do seu desenvolvimento.
Poderia ser mais expecifico ?
Poderia ser mais expecifico ?
Criação de arrays e maps. Da uma olhada na documentação do Hibernate e procura pelas funcionalidade no XDoclet. Vai ter um monte, as principais, mas não todas.
Algumas agente não implementou por que não dava. Faz mais de um ano que abandonei o XDoclet depois de usa-lo intenssamente. Hoje estou muito feliz com o hbml.xml ou então annotation.
O fator principal para não adotarem o 5 está com a IBM - Websphere e suporte ao novo JEE 5 .Assim que a IBM soltar release, muita coisa muda por aqui …
Aliás, veja se o seu chefe começa a cobrar os seus colegas a não usar as palavras-reservadas do Java 5.0 em código Java 1.3 e 1.4. Já vi muito código respeitável que era assim:
for (Enumeration enum = ... bla bla bla) {
}
Para migrar isso para o Java 5 é fácil (trocar o identificador enum por alguma outra coisa, digamos $enum para não bater com absolutamente mais nada nos seus programas), mas dá um monte de trabalho, e principalmente vocês vão ter de retestar tudo.
Ah, mas dai dependendo da quantidade de classes que você tiver mapeada, IMHO, fica bem feiinho 
Mas que dá, isso dá.
mas respondendo a pergunta. sim, hibernate eh simples. acho que desde sua criacao eh a solucao mais simples que resolve os 90% dos problemas que eles dizem resolver seja, na epoca, atraves de java ou xml, ou agora, atraves de annotations.
ps: desde quase sempre era possivel fazer td programaticamente, sem xml nenhum.
config.addClass eh o que ha…
Ah, mas dai dependendo da quantidade de classes que você tiver mapeada, IMHO, fica bem feiinho
Mas que dá, isso dá.
‘Feinho’ eh diminutivo de Fernando. :mrgreen:
addClass rula, pq vc pode agrupar diversas areas diferentes do seu dominio em metodos separados (addLegacySchemaClasses, addMigrationSchemaClasses, addIceCreamFactoryClasses, e por ai vai), e ir construindo a configuracao a partir de codigo eh sempre bom pra sua IDE, que vai saber refatorar seu codigo sempre.
Hum, pensando por esse lado de refatorar e deixar a IDE a par da zona toda até que concordo.
Na verdade, o principal motivo de estarmos usando o xml no projeto que estou agora (mas que pode tranquilamente ser trocado), é que peguei o Hibernate tools, mandei fazer a engenharia reversa da base (e já era um monstrinho de 500+ tabelas) e ele de quebra já gerou o xml pra mim. :mrgreen:
Pessoal li este tópico e pergunto: Como eu gero automáticamente o mapeamento (xml) através do Eclipse???
Obriagdo.
Utilize o pluin HibernateTools, disponível para você no site oficial do Hibernate.
Ele gera automaticamente os xml de mapeamento.
LOL
Como eu sempre digo, quem não gosta de XML é newba. Hibernate é bom a beça, e ele já faz isto há long time ago. Hibernate é um dos melhores frameworks de persistencia já feitos, usa XML pois XML é o padrão de definição para qualquer framework respeitável.
addClass rula, pq vc pode agrupar diversas areas diferentes do seu dominio em metodos separados (addLegacySchemaClasses, addMigrationSchemaClasses, addIceCreamFactoryClasses, e por ai vai), e ir construindo a configuracao a partir de codigo eh sempre bom pra sua IDE, que vai saber refatorar seu codigo sempre.
Hum, brincando um pouco mais, da pra fazer algo tipo isso...
static {
try {
configuration = new AnnotationConfiguration();
for(Class clazz : getClasses("com.foo.model")){
configuration.addAnnotatedClass(clazz);
}
configuration.configure();
sessionFactory = configuration.buildSessionFactory();
} catch (Throwable ex) {
logger.fatal("Something happened here!!! 8-O", ex);
throw new ExceptionInInitializerError(ex);
}
}
public static List<Class> getClasses(String pckgname) throws ClassNotFoundException {
List<Class> classes = new ArrayList<Class>();
ClassLoader cld = Thread.currentThread().getContextClassLoader();
String path = '/' + pckgname.replace('.', '/');
URL resource = cld.getResource(path);
File directory = new File(resource.getFile());
if (directory.exists()) {
String[] files = directory.list();
for (int i = 0; i < files.length; i++) {
if (files[i].endsWith(".class")) {
classes.add(Class.forName(pckgname + '.'
+ files[i].substring(0, files[i].length() - 6)));
}
}
}
return classes;
}
E só ir criando as classes sem stress...
Macho que eh macho usa sexp. XML eh coisa de menininha.