Programmatically configure Hibernate with dynamic

2019-04-29 14:32发布

问题:

I am implementing a web application where the user needs to authenticate with his database username and password. I woudld like to use the same entered username and password to connect to the database.

In other words, i would like that these two fields:(dbusername and dbpassword) in the hibernate configuration file:

<property name="hibernate.connection.username">dbusername</property>
<property name="hibernate.connection.password">dbpassword</property>

can be filled dynimacally dependant on the user who enterd his username and password to log in the web application.

is this do-able?

thanks

回答1:

Here is how you can acheive

Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml"); //hibernate config xml file name
String newUserName,newPassword;//set them as per your needs
cfg.getProperties().setProperty("hibernate.connection.password",newPassword);
cfg.getProperties().setProperty("hibernate.connection.username",newUserName);
sessionFactory = cfg.buildSessionFactory();


回答2:

Yes, you can set all the hibernate properties dynamically, using

Configuration configuration = new Configuration();
configuration.configure("hibernate_sp.cfg.xml");
ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration
                            .getProperties());
SessionFactory sessionFactory = configuration
                            .buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
Session session = sessionFactory.openSession();
logger.info("Test connection with the database created successfuly.");

set properties using configuration object.