Galera,
Alguém tem algum exemplo de como executar queries simples no Hibernate?
:arrow: Selecionar todos os registros
:arrow: Selecionar registros seguindo uma condição básica
Obrigado
Galera,
Alguém tem algum exemplo de como executar queries simples no Hibernate?
:arrow: Selecionar todos os registros
:arrow: Selecionar registros seguindo uma condição básica
Obrigado
Descobri um pouco sobre as queries, mas agora o problema é com o dialect.
Estou com todos os jars do hibernate no classpath mas ele não encontra o net.sf.hibernate.dialect.MySQLDialect
Alguém sabe onde conseguir o download?
Bom… consegui resolver meus problemas:
:arrow: Selecionar todos os registros:
from estado in class com.marcorochabean.Estado
:arrow: Selecionar todos os registros, com uma condição:
from estado in class com.marcorochabean.Estado where estado.sigla = 'SP'
:arrow: Driver do dialect para o MySQL:
cirrus.hibernate.sql.MySQLDialect
:!: :!: Apenas atentem pois a documentação ainda está desatualizada com relação aos dialects…
Esse topico ta’ parecendo um blog 
Bom, de qqer forma, legal vc ter conseguido se virar 
E, ah, fica meio esperto com a documentacao do Hibernate - ela nao esta sempre atualizada, ainda mais agora que o pessoal passou pra versao 2.0 
cirrus.hibernate.sql.MySQLDialect é do Hibernate
net.sf.hibernate.dialect.MySQLDialect é do Hibernate2
veja no download que vc pode baixar o hibernate ou o hibernate2
http://sourceforge.net/project/showfiles.php?group_id=40712
no hibernate2 não precisa fazer
“from estado in class com.marcorochabean.Estado”
basta fazer
“from estado”
aproveitando o post
ricardo, vc tem algum exemplo bem simples de como usar o hibernate 2???
pois eu segui os exemplos do hibernate 1 aqui do guj e funcionou, agora o hibernate 2 eu nao consegui fazer funcionar
um bem simples, mas que funcione pra mim se baseiar pra iniciar os estudo
pode me enviar via email?
alex.lopes2000(arroba)bol.com.br
valeu
é a mesma coisa, só muda o modo de se obter a SessionFactory
Configuration c = new Configuration();
c.addClass(Pessoa.class); // precisa existir o Pessoa.hbm.xml
SessionFactory sessionFactory = c.buildSessionFactory();
Session session = sessionFactory.openSession();
Pessoa.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="bean.Pessoa" table="Pessoa">
<id name="id" column="ID" type="int">
<generator class="assigned">
</generator>
</id>
<property name="nome" type="string" column="Nome"/>
<property name="fone" type="string" column="Fone"/>
</class>
</hibernate-mapping>
public class Pessoa
{
private int id;
private String nome;
private String fone;
// gets & sets
}
Uma dica para quem quiser fazer pesquisas no banco de dados com alguma flexibilidade é usar a interface Query. Usando esta interface, você pode fazer pesquisas usando funções de agregação (min, max, sum, avg…) joins e o que sua imaginação quiser (você consegue os mesmos resultados usando Session.find() ). Seu uso é bem tranqüilo. Veja aqui: http://hibernate.bluemars.net/hib_docs/reference/html_single/#manipulating-data-s5
aqui nao deu muito certo meus testes com hibernate 2… vou mostrar como esta meu teste.
Pessoa.class
public class Pessoa {
private int id;
private String nome;
private String fone;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getFone() {
return fone;
}
public void setFone(String fone) {
this.fone = fone;
}
public Pessoa() {
}
public Pessoa(int id) {
this.id = id;
}
public Pessoa(int id, String nome, String fone) {
this.id = id;
this.nome = nome;
this.fone = fone;
}
}
PessoaDAO
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class PessoaDAO {
private SessionFactory sessionFactory;
public PessoaDAO() throws Exception {
Configuration c = new Configuration();
c.addClass(Pessoa.class); // precisa existir o Pessoa.hbm.xml
sessionFactory = c.buildSessionFactory();
}
}
Arquivo Pessoa.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="Pessoa" table="Pessoa">
<id name="id" column="ID" type="int">
<generator class="assigned">
</generator>
</id>
<property name="nome" type="string" column="Nome"/>
<property name="fone" type="string" column="Fone"/>
</class>
</hibernate-mapping>
arquivo hibernate.properties
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost:3306/java
hibernate.connection.username = java
hibernate.connection.password = java
hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect
Arquivo Principal
import javax.swing.JOptionPane;
public class Principal {
public Principal() {
try {
PessoaDAO dao = new PessoaDAO();
JOptionPane.showMessageDialog(null,"Funcionou");
} catch (Exception erro) {
erro.printStackTrace();
JOptionPane.showMessageDialog(null,"Erro");
}
}
public static void main(String[] args) {
new Principal();
}
}
Agora o ERRO!!!
28/07/2003 09:08:21 net.sf.hibernate.cfg.Environment <clinit>
INFO: Hibernate 2.0 final
28/07/2003 09:08:21 net.sf.hibernate.cfg.Environment <clinit>
INFO: loaded properties from resource hibernate.properties: {hibernate.connection.username=java, hibernate.connection.password=java, hibernate.cglib.use_reflection_optimizer=true, hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect, hibernate.connection.url=jdbc:mysql://localhost:3306/java, hibernate.connection.driver_class=com.mysql.jdbc.Driver}
28/07/2003 09:08:21 net.sf.hibernate.cfg.Environment <clinit>
INFO: using CGLIB reflection optimizer
28/07/2003 09:08:21 net.sf.hibernate.cfg.Environment <clinit>
INFO: JVM proxy support: true
28/07/2003 09:08:21 net.sf.hibernate.cfg.Configuration addClass
INFO: Mapping resource: Pessoa.hbm.xml
28/07/2003 09:08:22 net.sf.hibernate.cfg.Binder bindRootClass
INFO: Mapping class: Pessoa -> Pessoa
java.lang.ExceptionInInitializerError
at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:613)
at PessoaDAO.<init>(PessoaDAO.java:9)
at Principal.<init>(Principal.java:5)
at Principal.main(Principal.java:13)
Caused by: java.lang.IllegalStateException: No backend found
at net.sf.cglib.CodeGenerator.<init>(CodeGenerator.java:127)
at net.sf.cglib.KeyFactoryGenerator.<init>(KeyFactoryGenerator.java:93)
at net.sf.cglib.KeyFactory.create(KeyFactory.java:114)
at net.sf.hibernate.impl.SessionFactoryImpl.<clinit>(SessionFactoryImpl.java:318)
... 4 more
Exception in thread "main"
Alguma idéia do que pode ser isso??
Alguns detalhes: no hibernate 1 funcionou
eu importei todos os arquvos .jar pra dentro do eclipse(estou testando isso dentro do eclipse), segue abaixo o arquivo de classpath do eclipse
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/commons-collections-2.1/commons-collections.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/commons-lang-1.0.1/commons-lang-1.0.1.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/commons-logging-1.0.2/commons-logging.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/commons-logging-1.0.2/commons-logging-api.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/hibernate2/cglib-1.0.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/hibernate2/commons-beanutils-1.6.1/commons-beanutils.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/hibernate2/dom4j-1.4/dom4j.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/hibernate2/dom4j-1.4/dom4j-full.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/hibernate2/hibernate/hibernate2.jar"/>
<classpathentry kind="lib" path="C:/Java/Ferramentas/mySQL/mysql-connector-java-3.1.0-alpha/mysql-connector-java-3.1.0-alpha-bin.jar"/>
<classpathentry kind="output" path=""/>
</classpath>
o arquivo Pessoa.hbm.xml está no mesmo diretório onde está a classe Pessoa?
sim, esta tudo no mesmo diretorio, ou seja, na raiz da aplicação, eu nao criei pacotes.
fiz tudo na raiz apenas pra testar
o Hibernate 2 usa uma biblioteca chamada CGLIB para trabalhos de reflexão. E é nela que está o problema: eu estava fazendo um framework baseada nesta biblioteca e sempre obtenho o mesmo problema. Mandei um email para o responsável pelo projeto para que ele pudesse me dar uma luz, mas ainda não obtive respostas. Qualquer coisa, dou um toque.
[]s
humm, ta certo Daniel
realmente essa é uma biblioteca que no hibernate 1 nao tinha…
agora o que eu acho estranho é que funciona em um monte de lugar, e porque aqui nao funciona? nem aqui e nem em casa…
aqui uso win2k e em casa o win98, qualquer coisa eu posso testar no Linux que tenho aqui tb.
será que alguem tem um exemplo bem simples que tem certeza que compila, pra mim pegar aqui, tentar compilar aqui pra ver se o problema é aqui tb
valeu