gpt4 book ai didi

java - 使用 hibernate 5 和 c3po 连接池在 java 应用程序中设置 vsession.program

转载 作者:太空宇宙 更新时间:2023-11-04 13:07:41 24 4
gpt4 key购买 nike

我正在尝试从我的 java 应用程序设置 session 程序名称。我正在使用实体管理器从用户输入传递连接凭据。

我需要能够在连接时在 oracle session 中设置程序名称。现在它仅显示为“JDBC Thin Client”。我尝试在 java 中设置实体管理器属性,并在 persistence.xml 中尝试了多种变体。

Java 代码片段

            props.put( hibernate.connection.url, "jdbc:oracle:thin:@localhost:1521:XE");
props.put( "hibernate.connection.username", username );
props.put( "hibernate.connection.password", password );
props.put( "v$session.program", "MYPROGRAM" );

emf = Persistence.createEntityManagerFactory( "MYDB", props );

em = emf.createEntityManager();

持久性.xml

<?xml version="1.0" encoding="UTF-8"?><persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="MYDB">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<!-- Hibernate properties -->
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.cache.use_second_level_cache" value="false"/>
<!-- Connection Pool -->
<property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" />
<property name="hibernate.c3p0.max_size" value="20" />
<property name="hibernate.c3p0.min_size" value="5" />
<property name="hibernate.c3p0.acquire_increment" value="5" />
<property name="hibernate.c3p0.idle_test_period" value="300" />
<property name="hibernate.c3p0.max_statements" value="0" />
<property name="hibernate.c3p0.timeout" value="100" />
<property name="connectionProperties" value="v$session.program:MYPROGRAM" />
</properties>
</persistence-unit>

我所使用的技术有限,因此我无法按照建议使用 EclipseLink here

是否有其他方法可以在 java 应用程序或 persistence.xml 文件中进行设置?

最佳答案

属性 hibernate.connection.X 是传递给 JDBC 的连接属性。您使用的属性也是 JDBC 属性,因此您应该尝试如下设置。它对我有用。

code

<property name="hibernate.connection.v$session.program" value="MYPROGRAM" />

关于java - 使用 hibernate 5 和 c3po 连接池在 java 应用程序中设置 vsession.program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34274117/

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