gpt4 book ai didi

hibernate - 如何动态/以编程方式配置 hibernate 以使用 h2 数据库 jndi 连接池?

转载 作者:行者123 更新时间:2023-11-28 22:25:13 25 4
gpt4 key购买 nike

Hibernate 提示连接池。首先,我尝试使用 Tomcat JDBC Connection Pool .

这需要在 context.xml 中进行资源配置:

<Resource
name="jdbc/mydatasource"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
username="user"
password="pw"
driverClassName="org.h2.Driver"
url="jdbc:h2:path/to/db/dbname" />

对于 xml 配置文件,我一直遇到的问题是数据库位置/url 根据开发/测试/生产而变化。我也不喜欢明文用户/密码。

所以我想知道如何在 webapp 启动期间以编程方式执行此操作。

最佳答案

我想不出用 Tomcat JDBC 连接池包装 H2 数据源,但我发现 H2 附带了它自己的连接池和数据源实现:

// JdbcConnectionPool implements DataSource
org.h2.jdbcx.JdbcConnectionPool connectionPool = JdbcConnectionPool.create(dbUrl, user, pw);
// java:comp/env is read-only, create subcontext that is writable
// https://stackoverflow.com/questions/13734391/bind-jndi-datasource-in-tomcat
new InitialContext().createSubcontext("mywebapp").bind("datasource", connectionPool);

org.hibernate.cfg.Configuration configuration = new Configuration();
configuration.setProperty("hibernate.connection.datasource", "mywebapp/datasource");
configuration.setProperty("hibernate.dialect", H2Dialect.class.getName());

Hibernate 现在似乎很高兴。

关于hibernate - 如何动态/以编程方式配置 hibernate 以使用 h2 数据库 jndi 连接池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48305563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com