Caching 如何将缓存存储持久化到关系数据库

Caching 如何将缓存存储持久化到关系数据库,caching,jboss,infinispan,Caching,Jboss,Infinispan,有没有办法将infinispan缓存存储区中的缓存对象持久化到关系数据库表中?我正在尝试将其作为缓存加载程序 <loader class="org.infinispan.loaders.jdbc.stringbased.JdbcStringBasedCacheStore" fetchPersistentState="true" ignoreModifications="false" purgeOnStartup="false"> <properties>

有没有办法将infinispan缓存存储区中的缓存对象持久化到关系数据库表中?我正在尝试将其作为缓存加载程序

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