Problemas com Hibernate..!

Bom dia pessoal,
Estou fazendo um teste com o Hibernate, para ele fazer uma simples listagem no banco MySql e o mesmo me da Erro.
Seguem as classses.
Funcionario

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Funcionario {
	
	@Id
	@GeneratedValue
	private Long id;
	
	private String nome;
	
	private String usuario;
		
	private String senha;
		
	private String email;
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

HibernateUtil

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import br.com.model.Funcionario;

public class HibernateUtil {
	
	private static SessionFactory factory;
	
	static{
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Funcionario.class);		
		
		factory = cfg.buildSessionFactory();
	}	

	public static Session getSession(){		
		return factory.openSession(); 
	}	
}

TesteBusca

public class TesteBusca {
	
	public static void main(String[] args) {
		
		
		Session s = HibernateUtil.getSession();
		//Funcionario f = (Funcionario) s.load(Funcionario.class, 2L);
		
		Funcionario encontrado = (Funcionario) s.load(Funcionario.class, new Long(2));
		
	//	System.out.println("Nome: " +f.getEmail());
	//	System.out.println("Id: " +f.getId());
		
		System.out.println("Select já foi feito");
		System.out.println(encontrado.getNome());
		System.out.println(encontrado.getClass().getName());
	}

}

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory name="session">
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/teste</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">123456</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		<mapping class="br.com.model.Funcionario" />
	</session-factory>
</hibernate-configuration>

O erro que me acontece é o seguinte…

Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.com.teste.TesteBusca.main(TesteBusca.java:14)
Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set
	at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:80)
	at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:62)
	at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:460)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:155)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.com.hibernateUtil.HibernateUtil.<clinit>(HibernateUtil.java:18)
	... 1 more

O que pode estar acontecendo??

Obrigado Fico no Aguardo…!

Ultimamente tem aparecido varios tópicos com esse mesmo problema do DIALECT.

Uma das soluções encontradas é substituir o hibernate.cfg.xml pelo hibernate.properties.

Se nunca usou o hibernate.properties, vou colocar um modelo, só substitui pelas propriedades do mysql.

hibernate.connection.username = usuario
hibernate.connection.password = senha
hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
hibernate.connection.driver_class = oracle.jdbc.driver.OracleDriver
hibernate.connection.url = jdbc:oracle:thin:@10.10.0.21:1521:prod
hibernate.show_sql = true
hibernate.format_sql = true

Certo, na verdade eu já estava utilizando o hibernate.properties.
porem sou iniciante, e minha duvida é o seguinte, por ele ser bem genérico onde o mesmo soh tras a conexão, como vou mapear o restante das classes que ainda farei?

fiquei claro em minha dúvida?

abrasss

[quote=Ace]Certo, na verdade eu já estava utilizando o hibernate.properties.
porem sou iniciante, e minha duvida é o seguinte, por ele ser bem genérico onde o mesmo soh tras a conexão, como vou mapear o restante das classes que ainda farei?

fiquei claro em minha dúvida?

abrasss[/quote]

Vc pode adicionar como fez com Funcionario.

 static{  
         AnnotationConfiguration cfg = new AnnotationConfiguration();  
         cfg.addAnnotatedClass(Funcionario.class)
                .addAnnotatedClass(OutraClasse.class)
                .addAnnotatedClass(MaisOutraClasse.class);         
           
         factory = cfg.buildSessionFactory();  
     }     

Quando vc adiciona elas não sessionFactory, não precisa adiciona-las novamente no arquivo de configuração. Se fizer isso, pode até dar conflito e gerar um erro.

Maravilha romarcio,
isso ficaria em uma má pratica no desenvolvimento,poré de imediato é a unica solução, qualquer solução que eu ache, postarei por aqui…

abras

[quote=Ace]Maravilha romarcio,
isso ficaria em uma má pratica no desenvolvimento,poré de imediato é a unica solução, qualquer solução que eu ache, postarei por aqui…

abras[/quote]

Na verdade não é má prática. Existem varias opções de configurações pelo hibernate.

Por aquivo xml e properties e também direto pelo código java, como vc fez.

Ainda é possivel setar todas as propriedades pelo código:

        SessionFactory sf = new AnnotationConfiguration()
                .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
                .setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver")
                .setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/teste")
                .setProperty("hibernate.connection.username", "root")
                .setProperty("hibernate.connection.password", "")
                .setProperty("hibernate.show_sql", "true")
                .setProperty("hibernate.format_sql", "true")
                .setProperty("hibernate.c3p0.acquire_increment", "1")
                .setProperty("hibernate.c3p0.idle_test_period", "100")
                .setProperty("hibernate.c3p0.max_size", "10")
                .setProperty("hibernate.c3p0.max_statements", "0")
                .setProperty("hibernate.c3p0.min_size", "5")
                .setProperty("hibernate.c3p0.timeout", "100")
                .setProperty("hibernate.hbm2ddl.auto", "false")
                .addAnnotatedClass(Users.class)
                .buildSessionFactory();

Porém, é muito mais prático configurar pelos arquivos.