您能否向我解释如何在我的基于toplink的JPA项目中添加独立的c3pO或DBCP连接池?
我有一个persistence.xml文件,每次我想查询数据库时,我都是这样做的:
EntityManagerFactory emf = this.getEntityManagerFactory(); 的
的//当然使用persistence.xml来设置工厂
EntityManager em = emf.createEntityManager(); ... 的
我在哪里建立外部连接池管理器和Toplink之间的桥梁?欢迎任何想法或链接。
此致 让
答案 0 :(得分:0)
我没有使用Toplink所以我没有对此进行测试,但是我对通过网络找到的各种资源的理解是,您需要提供SessionCustomizer
的实现。在此实现中,使用JNDIConnector
类使用c3p0方法提供 DataSource
对象(setDataSource(javax.sql.DataSource)
实现DataSource API)。
调整Working with a non JTA DataSource in Toplink Essentials的样本。
答案 1 :(得分:0)
我真的不明白该怎么做。这是一个初学者的模糊页面。不过,我已经创建了一个SessionCustomizer类。这是我的customize()方法,使用c3p0:
public void customize(Session session) throws Exception{
DataSource ds = DataSources.unpooledDataSource("myServerURL", "login", "pwd");
DataSource pooled = DataSources.pooledDataSource(ds);
JNDIConnector conn = (JNDIConnector)session.getLogin().getConnector();
conn.setDataSource(pooled);
conn.setLookupType(JNDIConnector.STRING_LOOKUP);
}
我甚至认为这不对。我把我的连接信息放在代码中,非常奇怪。
其次,在链接的persistence.xml示例中,他们放了:
<non-jta-data-source>java:comp/env/jdbc/DefaultDS</non-jta-data-source>
<class>sample.MyEntity</class>
<properties>
<property name="toplink.session.customizer" value="es.claro.commons.ds.DataSourceSessionCustomizer"/>
</properties>
我应该放入什么,尤其是“非jta-data-source”标签?有没有办法在该xml而不是代码中放置连接信息?
帮助。