问题标签 [c3p0]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1340 浏览

java - 使用 java 进行非阻塞 MySQL 更新?

对于我正在开发的多人游戏,我想在不阻塞游戏更新线程的情况下将事件记录到 mysql 数据库中,这样如果数据库繁忙或表被锁定,游戏在等待时不会停止运行写。

实现这一目标的最佳方法是什么?

我正在使用 c3p0 来管理数据库连接池。到目前为止,我最好的想法是将查询更新字符串添加到同步列表中,其中一个独立线程每 100 毫秒检查一次列表并执行它在那里找到的查询。

0 投票
3 回答
20621 浏览

oracle - java.sql.SQLException:不支持的功能

我将 JPA(hibernate) 用于 ORM,将 c3po 用于连接池。虽然我能够执行所有 CRUD 操作,但在访问数据时会出现以下错误:

以下是工具:Hibernate 3.2.1、Oracle 10g、ojdbc14、连接池:c3p0-0.9。

和堆栈跟踪:

对此的任何帮助将不胜感激。

0 投票
1 回答
5114 浏览

mysql - Hibernate-mysql-c3p0 的连接断开问题

这是我在网上看到的一个问题。我会再次提出它,因为到目前为止我还没有修复它。

com.mysql.jdbc.Driver org.hibernate.dialect.MySQLDialect

我的连接池运行良好。白天很好,但是一旦我让它整夜闲置,第二天我发现它给我断线错误。

公共类 HibernateUtil {

}

以上是我的会话工厂代码。而且我只有选择操作。

下面是最常用于执行我的选择查询的方法。我不理解的一件棘手的事情是在我的 findById 方法中,我正在使用这行代码 getSession().beginTransaction(); 没有它,它会给我一个错误,说没有交易就不会发生这种情况。但我无处关闭这笔交易。除了不适用于选择语句的提交或回滚(据我所知)之外,没有其他方法可以关闭事务。

public T findById(ID id, boolean lock) throws HibernateException, DAOException { log.debug("findNyId 调用 ID ="+id+"and lock ="+lock); T实体;getSession().beginTransaction();

谁能建议我该怎么做?我已经通过谷歌搜索、stackoverlow 或休眠论坛尝试了几乎所有可用的解决方案,但无济于事。(在我的情况下,增加 mysql 上的 wait_timeout 不是一个有效的选项)。

0 投票
2 回答
10367 浏览

postgresql - 我应该激活 c3p0 语句池吗?

我们正在运行 java6/hibernate/c3p0/postgresql 堆栈。我们的 JDBC 驱动是 8.4-701.jdbc3

我有几个关于准备好的陈述的问题。我已经阅读了关于准备好的陈述的优秀文件

但我仍然有一个问题如何使用 postgresql 配置 c3p0。

目前我们有

据我了解,准备好的语句和语句池是两个不同的东西:

我们的休眠堆栈使用准备好的语句。Postgresql 正在缓存执行计划。下次使用相同的语句时,postgresql 会重用执行计划。这节省了在 DB 中规划语句的时间。

此外,c3p0 可以缓存“java.sql.PreparedStatement”的 java 实例,这意味着它正在缓存 java 对象。因此,当使用
c3p0.maxStatementsPerConnection = 100 时,它最多缓存 100 个不同的
对象。它节省了创建对象的时间,但这与 postgresql 数据库及其准备好的语句无关。

对?

当我们使用大约 100 种不同的语句时,我会设置 c3p0.maxStatementsPerConnection = 100

但是 c3p0 文档在c3p0 中说已知的缺点

Statement pooling 的开销太高。对于未对 PreparedStatements 执行大量预处理的驱动程序,池化开销超过了任何节省。语句池因此默认关闭。如果您的驱动程序确实对 PreparedStatements 进行了预处理,特别是如果它通过 IPC 和 RDBMS 进行预处理,那么您可能会通过打开 Statement pooling 看到显着的性能提升。(通过将配置属性 maxStatements 或 maxStatementsPerConnection 设置为大于零的值来执行此操作。)。

那么:用 c3p0 和 Postgresql 激活 maxStatementsPerConnection 是否合理?激活它有真正的好处吗?

亲切的问候詹宁

0 投票
6 回答
32106 浏览

java - 如何关闭 java c3p0 连接池库中的日志记录?

大家好,我刚刚开始使用 c3p0 进行数据库连接池。它目前附加到我的 log4j 输出。如何仅为 c3p0 设置注销或至少设置为 SEVERE 级别?我尝试调整属性文件,但不确定它是否被正确拾取。

关于如何最好地关闭它的任何想法?

谢谢

更新:这似乎在 log4j.properties 文件中工作

0 投票
2 回答
17592 浏览

hibernate - 使用 Hibernate 的 C3P0 的 Spring 配置?

我有一个使用 Hibernate 作为 JPA 提供程序的 Spring/JPA 应用程序。我通过以下方式在 Spring 中配置了 C3P0 数据源:

然后我在 Spring 实体管理器工厂中指定了这个数据源,如下所示:

但是,我最近在浏览 maven 工件时注意到“hibernate-c3p0”。这是什么?这是我需要使用的东西吗?还是我已经正确配置了这个?

0 投票
2 回答
2014 浏览

hibernate - Atomikos 回滚不清除 JPA 持久性上下文?

我有一个 Spring/JPA/Hibernate 应用程序,并试图让它通过我针对 H2 和 MySQL 的 Junit 集成测试。目前我使用 Atomikos 进行事务处理,使用 C3P0 进行连接池。

尽管我尽了最大努力,但我的 DAO 集成其中一项测试因 org.hibernate.NonUniqueObjectException 而失败。在失败的测试中,我使用“new”运算符创建了一个对象,设置 ID 并在其上调用persist。

在前面的测试方法中,我做了同样的事情(createNewUser() 是一个帮助方法,它每次都创建一个具有相同 ID 的对象)。我确信创建和持久化具有相同 ID 的第二个对象是原因,但每个测试方法都在自己的事务中,并且我创建的对象绑定到私有测试方法变量。我什至可以在日志中看到 Spring Test 和 Atomikos 正在回滚与每个测试方法关联的事务。

我原以为回滚也会清除持久性上下文。凭直觉,我在错误测试方法的开头添加了对 dao.clear() 的调用,问题就消失了!!所以回滚并没有清除持久化上下文???如果不是,那是谁呢??

我的 EntityManagerFactory 配置如下:

0 投票
2 回答
5046 浏览

java - 数据库连接超时

我在互联网上阅读了很多关于这个问题的文章,但似乎没有一个明确的解决方案。请有人给我一个明确的答案,说明我为什么会出现数据库超时。该应用程序是托管在 Tomcat 5.5 服务器上的 GWT 应用程序。我使用spring,并在applicationContext.xml中创建了会话工厂,如下所示

直到第二天一切正常:

我已经阅读了很多不同的东西(没有一个有效),请帮助

0 投票
1 回答
3710 浏览

hibernate - Hibernate/Spring 框架中的 TestConnectionOnCheckin c3p0 配置属性

我想为 c3p0 设置 testConnectionOnCheckin 属性。

但是我在这样做时遇到了麻烦,因为 c3p0 数据源是在休眠实体管理器 bean 中代表我创建的。

其中每个<prop key...1> 是一个休眠配置键,休眠用它代表我创建一个 c3p0 数据源。

但是,我找不到将设置 c3p0 数据源的 testConnectionsOnCheckin 属性的休眠配置键。

有这样的钥匙吗?如果没有,那么我应该直接设置 entityManagers 数据源吗?在这样做之前我应该​​知道什么技巧吗?

注意: testConnectionsOnCheckout 不是一个可行的选项,它有一个对应的休眠配置键。

0 投票
2 回答
4746 浏览

java - Tomcat 6,休眠,oracle 11 登录被拒绝

eclipse 3.5、wicket、spring、hibernate、oracle 11 数据库和 Tomcat 6 上的项目(它是“wicket in action”一书中的一个示例)。在这个项目中,我无法连接到数据库。有人可以帮忙解决吗?那是日志:

这是配置文件:

我编写了一个测试控制台应用程序来测试 jdbc,它运行良好: