Ajuda no Himernate.properties

7 respostas
W

Boa tarde!

Gostaria de uma ajuda de vocês, como fasso para que no Himernate.properties o usuário e senha sejam passados pelo o usuário e não dichar ele explicito no arquivo.

Como fasso para que o hibernate retorne o registro que acabou de ser inserido?

Grato
Wesley Oliveira.

7 Respostas

drsmachado

himernate.properties?
Você vai precisar de uma classe que escreva no arquivo de properties, mas não é algo interessante de se fazer.

romarcio

Dai nesse caso o Usuário e a Senha você vai ter que declarar de maneira programática. Tem como fazer isso na documentação que vem com o Hibernate, da uma olhada.

Rafael_Guerreiro
A forma programática para te ajudar:
AnnotationConfiguration configuration = new AnnotationConfiguration();

		configuration.setProperty("hibernate.connection.username", "root");
		configuration.setProperty("hibernate.connection.password", "");
		configuration.setProperty("hibernate.connection.url",
				"jdbc:mysql://localhost:3306/banco_dados");

		configuration.setProperty("hibernate.connection.driver_class",
				"com.mysql.jdbc.Driver");
		configuration.setProperty("hibernate.dialect",
				"org.hibernate.dialect.MySQL5InnoDBDialect");
		configuration.setProperty("hibernate.hbm2ddl.auto", "update");
		configuration.setProperty("show_sql", "false");
		configuration.setProperty("format_sql", "false");
		configuration.setProperty("hibernate.connection.provider_class",
				"org.hibernate.connection.C3P0ConnectionProvider");
		configuration.setProperty("hibernate.c3p0.acquire_increment", "2");
		configuration.setProperty("hibernate.c3p0.timeout", "25200");
		configuration.setProperty("hibernate.c3p0.min_size", "2");
		configuration.setProperty("hibernate.c3p0.max_size", "10");
		configuration.setProperty("hibernate.c3p0.max_statements", "0");

		configuration.setProperty("hibernate.generate_statistics", "false");
		configuration.addAnnotatedClass(Classes.class);
		this.sessionFactory = configuration.buildSessionFactory();
W

Agradeço a ajuda de todos, aparentemente esta funcionando, estou fazendo mais alguns testes para dar o veridito final.

segue o código, aceito sugestões sobre melhorias.

public class HibernateUtil {

	private static SessionFactory sessionFactory;
	private static String str_usuario;
	private static String str_senha;
	
	public static SessionFactory getSessionFactory(String user, String senha)
	{
		str_usuario = user;
		str_senha = senha;
		
		if( sessionFactory == null )
		{	
			AnnotationConfiguration cfg = new AnnotationConfiguration();
	    	//cfg.configure("/hibernate.cfg.xml");
	    	
			cfg.setProperty("hibernate.connection.username", str_usuario);   
			cfg.setProperty("hibernate.connection.password", str_senha);   
			cfg.setProperty("hibernate.connection.url","jdbc:postgresql://localhost:5432/2011");
			cfg.setProperty("hibernate.connection.driver_class","org.postgresql.Driver");   
			cfg.setProperty("hibernate.dialect","org.hibernate.dialect.PostgreSQLDialect");   
			cfg.setProperty("hibernate.hbm2ddl.auto", "update");   
			cfg.setProperty("show_sql", "true");   
			cfg.setProperty("format_sql", "true");   
			
			/***************************************************************************************************************
			cfg.setProperty("hibernate.connection.provider_class","org.hibernate.connection.C3P0ConnectionProvider");   
			cfg.setProperty("hibernate.c3p0.acquire_increment", "2");   
			cfg.setProperty("hibernate.c3p0.timeout", "25200");   
			cfg.setProperty("hibernate.c3p0.min_size", "2");   
			cfg.setProperty("hibernate.c3p0.max_size", "10");   
			cfg.setProperty("hibernate.c3p0.max_statements", "0");   
			cfg.setProperty("hibernate.generate_statistics", "false");   
			****************************************************************************************************************/

	    	cfg.addAnnotatedClass(Usuario.class);
	    	sessionFactory = cfg.buildSessionFactory();
		}
		
    	return sessionFactory;
    	
	}

e na chamada esta assim:

private UsuarioDao usuarioDao = new UsuarioDao();
	private UsuarioUtils utils = new UsuarioUtils();
	
	
	public Usuario HibernateTeste(String usuario, String senha) throws Exception{
		
		Usuario usuarioLogado = usuarioDao.autenticar(usuario, senha);
		
		return usuarioLogado;
		
	}

Grato

Rafael_Guerreiro

Essa autenticação é, na verdade, a autenticação de usuários?

Ainda não entendi o exemplo prático disso. Cada usuário do seu sistema terá um user no banco?

Rafael_Guerreiro

Ah! É de extrema importância que você configure o C3P0.

Principalmente se você usar o banco de dados MySQL. Pois depois de 8 Horas inativo, o MySQL fecha a conexão e vc vai ter erro de JDBC Commit Failed (sem nem saber porque isso ocorre)

Para tanto, você deve adicionar um JAR referente ao C3P0: c3p0-0.9.1.jar

Se você quiser, eu posso te explicar para que serve cada consiguração do C3P0.

W

Rafael, bom dia!

é exatamente isso, cada usuário tera sua propria senha no banco para eu aproveitar a politica de acesso as tabelas.

eu aceito a explicação sobre o C3P0, meu banco é o PostgreSql.

Gratro

Criado 9 de outubro de 2011
Ultima resposta 11 de out. de 2011
Respostas 7
Participantes 4