Class SimpleDbPersistenceManager

  • All Implemented Interfaces:
    PersistenceManager, DatabaseAware
    Direct Known Subclasses:
    DerbyPersistenceManager, MSSqlPersistenceManager, OraclePersistenceManager

    @Deprecated
    public class SimpleDbPersistenceManager
    extends DatabasePersistenceManager
    implements DatabaseAware
    Deprecated.
    Please migrate to a bundle persistence manager (JCR-2802)
    SimpleDbPersistenceManager is a generic JDBC-based PersistenceManager for Jackrabbit that persists ItemState and NodeReferences objects using a simple custom binary serialization format (see Serializer) and a very basic non-normalized database schema (in essence tables with one 'key' and one 'data' column).

    It is configured through the following properties:

    • driver: the FQN name of the JDBC driver class
    • url: the database url of the form jdbc:subprotocol:subname
    • user: the database user
    • password: the user's password
    • schema: type of schema to be used (e.g. mysql, mssql, etc.);
    • schemaObjectPrefix: prefix to be prepended to schema objects
    • externalBLOBs: if true (the default) BINARY values (BLOBs) are stored in the local file system; if false BLOBs are stored in the database
    The required schema objects are automatically created by executing the DDL statements read from the [schema].ddl file. The .ddl file is read from the resources by calling getClass().getResourceAsStream(schema + ".ddl"). Every line in the specified .ddl file is executed separately by calling java.sql.Statement.execute(String) where every occurrence of the the string "${schemaObjectPrefix}" has been replaced with the value of the property schemaObjectPrefix.

    The following is a fragment from a sample configuration using MySQL:

       <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
           <param name="driver" value="com.mysql.jdbc.Driver"/>
           <param name="url" value="jdbc:mysql:///test?autoReconnect=true"/>
           <param name="schema" value="mysql"/>
           <param name="schemaObjectPrefix" value="${wsp.name}_"/>
           <param name="externalBLOBs" value="false"/>
       </PersistenceManager>
     
    The following is a fragment from a sample configuration using Daffodil One$DB Embedded:
       <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
           <param name="driver" value="in.co.daffodil.db.jdbc.DaffodilDBDriver"/>
           <param name="url" value="jdbc:daffodilDB_embedded:${wsp.name};path=${wsp.home}/../../databases;create=true"/>
           <param name="user" value="daffodil"/>
           <param name="password" value="daffodil"/>
           <param name="schema" value="daffodil"/>
           <param name="schemaObjectPrefix" value="${wsp.name}_"/>
           <param name="externalBLOBs" value="false"/>
       </PersistenceManager>
     
    The following is a fragment from a sample configuration using DB2:
       <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
           <param name="driver" value="com.ibm.db2.jcc.DB2Driver"/>
           <param name="url" value="jdbc:db2:test"/>
           <param name="schema" value="db2"/>
           <param name="schemaObjectPrefix" value="${wsp.name}_"/>
           <param name="externalBLOBs" value="false"/>
       </PersistenceManager>
     
    The following is a fragment from a sample configuration using MSSQL:
       <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
           <param name="driver" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"/>
           <param name="url" value="jdbc:microsoft:sqlserver://localhost:1433;;DatabaseName=test;SelectMethod=Cursor;"/>
           <param name="schema" value="mssql"/>
           <param name="user" value="sa"/>
           <param name="password" value=""/>
           <param name="schemaObjectPrefix" value="${wsp.name}_"/>
           <param name="externalBLOBs" value="false"/>
       </PersistenceManager>
     
    The following is a fragment from a sample configuration using Ingres:
       <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
           <param name="driver" value="com.ingres.jdbc.IngresDriver"/>
           <param name="url" value="jdbc:ingres://localhost:II7/test"/>
           <param name="schema" value="ingres"/>
           <param name="user" value="ingres"/>
           <param name="password" value="ingres"/>
           <param name="schemaObjectPrefix" value="${wsp.name}_"/>
           <param name="externalBLOBs" value="false"/>
       </PersistenceManager>
     
    The following is a fragment from a sample configuration using PostgreSQL:
       <PersistenceManager class="org.apache.jackrabbit.core.persistence.db.SimpleDbPersistenceManager">
           <param name="driver" value="org.postgresql.Driver"/>
           <param name="url" value="jdbc:postgresql://localhost/test"/>
           <param name="schema" value="postgresql"/>
           <param name="user" value="postgres"/>
           <param name="password" value="postgres"/>
           <param name="schemaObjectPrefix" value="${wsp.name}_"/>
           <param name="externalBLOBs" value="false"/>
       </PersistenceManager>
     
    JNDI can be used to get the connection. In this case, use the javax.naming.InitialContext as the driver, and the JNDI name as the URL. If the user and password are configured in the JNDI resource, they should not be configured here. Example JNDI settings:
     <param name="driver" value="javax.naming.InitialContext" />
     <param name="url" value="java:comp/env/jdbc/Test" />
     
    See also DerbyPersistenceManager, OraclePersistenceManager.