H2 Plugin
---------
Supports direct access to a H2 database.
H2 is the second generation of HSQL, a popular embedded Java database. The current database is not
a true spatial database as it does not have any form of spatial indexing.
**Maven**
Note that the ``groupId`` is ``org.geotools.jdbc`` for this and other JDBC plugin modules.
::
org.geotools.jdbc
gt-jdbc-h2
${geotools.version}
Connection Parameters
^^^^^^^^^^^^^^^^^^^^^
+---------------+----------------------------------------------+
| Parameter | Description |
+===============+==============================================+
| ``dbtype`` | Must be the string ``h2`` |
+---------------+----------------------------------------------+
| ``database`` | The database to connect to |
+---------------+----------------------------------------------+
| ``user`` | User name |
+---------------+----------------------------------------------+
Creating
^^^^^^^^
Here is a quick example:
.. literalinclude:: /../src/main/java/org/geotools/jdbc/JDBCExamples.java
:language: java
:start-after: // h2Example start
:end-before: // h2Example end
The above will reference a database file named ``geotools`` located in the current working directory.
A full path may also be specified:
.. literalinclude:: /../src/main/java/org/geotools/jdbc/JDBCExamples.java
:language: java
:start-after: // h2AbsPathExample start
:end-before: // h2AbsPathExample end
The above examples create a connection to H2 in *embedded* mode. One limitation to this approach is
that it only allows for a single Java process to access the database at any one time. H2 also offers
a `server mode `_ in which access
to the underlying database is made via traditional client-server TCP connection, and removes the embedded
single process restriction:
.. literalinclude:: /../src/main/java/org/geotools/jdbc/JDBCExamples.java
:language: java
:start-after: // h2TcpExample start
:end-before: // h2TcpExample end