【问题标题】:Setting vsession.program in java app using hibernate 5 and c3po connection pool使用hibernate 5和c3po连接池在java应用程序中设置vsession.program
【发布时间】:2015-12-14 18:31:34
【问题描述】:

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

我需要能够在连接时在 oracle 会话中设置程序名称。现在它只显示为“JDBC 瘦客户端”。我尝试在 java 中设置实体管理器属性,并在我的 persistence.xml 中尝试了许多变体。

Java sn-p

            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();

Persistence.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>

我使用的技术有限,所以我不能按照here的建议使用 EclipseLink

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

【问题讨论】:

    标签: java oracle jpa persistence.xml hibernate-5.x


    【解决方案1】:

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

    代码

    【讨论】:

      猜你喜欢
      • 2021-03-29
      • 2020-02-09
      • 2013-01-10
      • 2014-08-06
      • 2023-03-27
      • 1970-01-01
      • 2023-03-31
      • 2013-09-22
      • 2014-02-09
      相关资源
      最近更新 更多