Tengo que hacer una aplicación que tenga un login para entrar a la base de datos como administrador, sin tener que usar los parámetros de usuario y contraseña del archivo de configuración, pero no puedo conseguirlo, ¿me podrían ayudar?
public class HibernateUtil { private static SessionFactory sessionFactory; public static void configureHibernateUtil(String user, String pass) { try { Configuration cfg = new Configuration(); cfg.configure("/dao/hibernate.cfg.xml"); //hibernate config xml file name String newUserName = null, newPassword = null;//set them as per your needs cfg.getProperties().setProperty("hibernate.connection.password", newPassword); cfg.getProperties().setProperty("hibernate.connection.username", newUserName); //In next line you just tell Hibernate which classes are you going to query StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()); sessionFactory = cfg.buildSessionFactory(ssrb.build()); } catch (HibernateException he) { System.err.println("Ocurrió un error en la inicialización de la SessionFactory: " + he); throw new ExceptionInInitializerError(he); } } public static SessionFactory getSessionFactory() { return sessionFactory; }}
El parámetro de método user y pass NO reemplaza las propiedades de cfg . Entonces el método no funciona. Aquí está el código modificado:
public static void configureHibernateUtil(String user, String pass) { try { Configuration cfg = new Configuration(); cfg.configure("/dao/hibernate.cfg.xml"); //hibernate config xml file name //String newUserName = null, newPassword = null;//set them as per your needs cfg.getProperties().setProperty("hibernate.connection.password", pass); cfg.getProperties().setProperty("hibernate.connection.username", user); //In next line you just tell Hibernate which classes are you going to query StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder() .applySettings(cfg.getProperties()); sessionFactory = cfg.buildSessionFactory(ssrb.build()); } catch (HibernateException he) { System.err.println("Ocurrió un error en la inicialización de la SessionFactory: " + he); throw new ExceptionInInitializerError(he); } }