Caching 如何将缓存存储持久化到关系数据库
有没有办法将infinispan缓存存储区中的缓存对象持久化到关系数据库表中?我正在尝试将其作为缓存加载程序Caching 如何将缓存存储持久化到关系数据库,caching,jboss,infinispan,Caching,Jboss,Infinispan,有没有办法将infinispan缓存存储区中的缓存对象持久化到关系数据库表中?我正在尝试将其作为缓存加载程序 <loader class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore" fetchPersistentState="true" ignoreModifications="false" purgeOnStartup="false"> <properties>
<loader class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore" fetchPersistentState="true" ignoreModifications="false" purgeOnStartup="false">
<properties>
<property name="stringsTableNamePrefix" value="ISPN_STRING_TABLE"/>
<property name="idColumnName" value="ID_COLUMN"/>
<property name="dataColumnName" value="DATA_COLUMN"/>
<property name="timestampColumnName" value="TIMESTAMP_COLUMN"/>
<property name="timestampColumnType" value="BIGINT"/>
<property name="connectionFactoryClass" value="org.infinispan.loaders.jdbc.connectionfactory.PooledConnectionFactory"/>
<property name="connectionUrl" value="jdbc:derby://localhost:1527/DB;create=true"/>
<property name="userName" value="user"/>
<property name="password" value="password"/>
<property name="driverClass" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="idColumnType" value="VARCHAR(255)"/>
<property name="dataColumnType" value="BLOB"/>
<property name="dropTableOnExit" value="false"/>
<property name="createTableOnStart" value="true"/>
</properties>
</loader>
从此,键和值存储在ISPN\u字符串\u表\u测试\u存储中,其中。它将ID列中的键和DATA_列中的值保存为Blob。我想将此Blob包含的数据放入关系数据库(而不是对象)。例如,当我将Employee对象放入缓存时,它应该将数据库表作为Employee表,并将Employee属性作为该表中的字段。(Emp名称、年龄..等)。有什么方法可以做到这一点吗?有一个示例介绍了如何使用MySQL作为关系数据库配置JdbcStringBasedCacheStore。在本例中,连接URL中使用了一个数据源,但是根据您的需要对其进行调整并不困难。希望对您有所帮助
问候
事情似乎发生了变化。这似乎适用于Infinispan 5.2和5.3
<loaders [...]>
<stringKeyedJdbcStore
xmlns="urn:infinispan:config:jdbc:5.2"
fetchPersistentState="false"
ignoreModifications="false"
purgeOnStartup="false">
<dataSource jndiUrl="java:jboss/datasources/MySQLDS" />
<!--
<connectionPool connectionUrl="jdbc:mysql://[host][:port]/[database]"
username="xxxx"
password="xxxx"
driverClass="com.mysql.jdbc.Driver"/>
-->
<stringKeyedTable dropOnExit="true"
createOnStart="true"
prefix="ISPN_STRING_TABLE">
<idColumn name="ID_COLUMN" type="VARCHAR(255)" />
<dataColumn name="DATA_COLUMN" type="BINARY" />
<timestampColumn name="TIMESTAMP_COLUMN" type="BIGINT" />
</stringKeyedTable>
</stringKeyedJdbcStore>
</loaders>
使用xmlns(schemaLocation at link)实际上我想使用infinispan作为缓存加载程序写入JPA或Hibernate支持。它的支持缓存项作为BLOB写入DB。如果你能提供缓存加载器JPA写支持的例子非常感谢。阴影爬行,谢谢你的回答。我会投赞成票,但我没有足够的声誉。我将infinispan 5.3与postgresql数据库一起使用,它运行在“connectionPool”中。只需将infinispan-cachestore-jdbc-5.3.0.Final.jar和c3p0-0.9.1.2.jar添加到我的构建中。
<loaders [...]>
<stringKeyedJdbcStore
xmlns="urn:infinispan:config:jdbc:5.2"
fetchPersistentState="false"
ignoreModifications="false"
purgeOnStartup="false">
<dataSource jndiUrl="java:jboss/datasources/MySQLDS" />
<!--
<connectionPool connectionUrl="jdbc:mysql://[host][:port]/[database]"
username="xxxx"
password="xxxx"
driverClass="com.mysql.jdbc.Driver"/>
-->
<stringKeyedTable dropOnExit="true"
createOnStart="true"
prefix="ISPN_STRING_TABLE">
<idColumn name="ID_COLUMN" type="VARCHAR(255)" />
<dataColumn name="DATA_COLUMN" type="BINARY" />
<timestampColumn name="TIMESTAMP_COLUMN" type="BIGINT" />
</stringKeyedTable>
</stringKeyedJdbcStore>
</loaders>