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.
himernate.properties?
Você vai precisar de uma classe que escreva no arquivo de properties, mas não é algo interessante de se fazer.
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.
A forma programática para te ajudar:
[code]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();[/code]
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.
[code]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;
}[/code]
e na chamada esta assim:
[code]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;
}[/code]
Grato
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?
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.
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