Hibernate connection to seekdb
This topic describes how to use the Hibernate framework and seekdb to build an application that performs basic operations such as creating a table, inserting data, and querying data.
Download the java-oceanbase-hibernate sample project
Prerequisites
-
You have installed seekdb.
-
You have installed JDK 1.8 and Maven.
-
You have installed IntelliJ IDEA.
infoThe tool used to run the code in this topic is IntelliJ IDEA 2021.3.2 (Community Edition). You can also use your preferred tool to run the sample code.
Procedure
The following procedure is based on the Windows environment. If you use other operating systems or compilers, the procedure may be slightly different.
- Obtain the connection string of seekdb.
- Import the
java-oceanbase-hibernateproject into IDEA. - Modify the database connection information in the
java-oceanbase-hibernateproject. - Run the
java-oceanbase-hibernateproject.
Step 1: Obtain the seekdb connection string
-
Contact the seekdb deployment personnel or administrator to obtain the corresponding database connection string.
mysql -hxx.xx.xx.xx -P2881 -uroot -p**** -A -
Fill in the following URL based on the deployed seekdb.
infoThe URL information is needed in the
hibernate.cfg.xmlfile.jdbc:oceanbase://host:port/schema_name?user=$user_name&password=$passwordParameter description:
host: the IP address for connecting to seekdb. Replace it with the actual IP address. You can also use the local IP address or 127.0.0.1.port: the port for connecting to seekdb. Replace it with the actual port. The default port is 2881, which can be customized when deploying seekdb.schema_name: the name of the schema to be accessed.user_name: the username, specified by the-uparameter. The default username isroot.password: the password for the account.
For more information about URL parameters, see Database URL.
Step 2: Import the java-oceanbase-hibernate project into IDEA
-
Open IntelliJ IDEA and select File > Open....

-
In the Open File or Project window that appears, select the corresponding project file and click OK to complete the import.
-
IntelliJ IDEA will automatically recognize various files in the project and display the project structure, file list, module list, and dependencies in the Project tool window. The Project tool window is usually located on the left side of the IntelliJ IDEA interface and is typically open by default. If it is closed, you can reopen it by selecting View > Tool Windows > Project from the menu bar or by using the shortcut key Alt + 1.
infoWhen importing a project using IntelliJ IDEA, it will automatically detect the pom.xml file in the project and download the required dependency libraries based on the described dependencies in the file, and add them to the project.
-
View the project.

Step 3: Modify the database connection information in the java-oceanbase-hibernate project
Modify the database connection information in the hibernate.cfg.xml file based on the information obtained in Step 1: Obtain the seekdb connection string.
For more information about additional properties of the JDBC connection string, see Database URL.
Example:
- The name of the database driver is:
com.mysql.cj.jdbc.Driver - The IP address of seekdb is
172.30.xxx.xxx. - The access port is 2881.
- The name of the schema to be accessed is
test. - The connection account is
root. - The password is
******.
Example code:
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://172.30.xxx.xxx:2881/test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">******</property>
Step 4: Run the java-oceanbase-hibernate project
Running path
- Find the
TestHibernate.javafile in src > test > java in the project structure. - In the tool menu bar, select Run(U) > Run > TestHibernate, or click the green triangle in the upper right corner to run.
- View the project's log information and output results in the IDEA console.
Running result
User{id=2, name='update'}
User{id=3, name='user_insert3'}
User{id=4, name='user_insert4'}
User{id=5, name='user_insert5'}
FAQ
1. Connection timeout
If you encounter a connection timeout issue, you can configure the connection timeout parameter in the JDBC URL:
jdbc:mysql://host:port/database?connectTimeout=30000&socketTimeout=60000
2. Character set issues
To ensure correct character encoding, set the appropriate character set parameter in the JDBC URL:
jdbc:mysql://host:port/database?characterEncoding=utf8&useUnicode=true
3. SSL connection
To enable SSL connections with seekdb, add the following parameter to the JDBC URL:
jdbc:mysql://host:port/database?useSSL=true&requireSSL=true
4. Special characters in username or password
If the username or password contains special characters (such as #), you need to URL-encode them:
String encodedPassword = URLEncoder.encode(password, "UTF-8");
When using MySQL Connector/J 8.x, ensure that the username and password do not contain the # character. Otherwise, you may encounter a connection error.
Project code
Click java-oceanbase-hibernate to download the project code, which is a compressed file named java-oceanbase-hibernate.zip.
After decompressing the file, you will find a folder named java-oceanbase-hibernate. The directory structure is as follows:
│--pom.xml
│
├─.idea
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─oceanbase
│ │ │ ├─dao
│ │ │ │ └─--UserDao.java
│ │ │ │
│ │ │ └─pojo
│ │ │ └─--User.java
│ │ │
│ │ └─resources
│ │ │--hibernate.cfg.xml
│ │ │
│ │ └─com
│ │ └─oceanbase
│ │ └─pojo
│ │ └─--User.hbm.xml
│ │
│ └─test
│ └─java
│ └─--TestHibernate.java
│
└─target
File description:
pom.xml: The configuration file of the Maven project, which contains information about the project's dependencies, plugins, and build settings..idea: A directory used by the IDE (Integrated Development Environment) to store project-related configuration information.src: A directory typically used to store the source code of the project.main: A directory for storing the main source code and resource files.java: A directory for storing Java source code.com: The root directory for storing Java packages.oceanbase: The root directory for storing the project.dao: A directory for storing Data Access Object (DAO) packages, which are used to access databases or other data storage services.UserDao.java: A user DAO, which is used to perform operations such as adding, deleting, modifying, and querying user data.User.java: A user persistence object, which is used to map the fields of the user data table.pojo: Plain Old Java Object (POJO), which is used to store Java classes corresponding to database tables. It is used to map database tables or other data storage structures.resources: A directory for storing resource files, such as configuration files and SQL files.hibernate.cfg.xml: A configuration file for Hibernate, which is used to configure basic parameters and set up the data source.User.hbm.xml: A mapping file for the user persistence object, which defines the mapping relationship between the user persistence object and the user data table.test: A directory for storing test code and resource files.TestHibernate.java: A Java class for testing Hibernate.target: A directory for storing compiled Class files, Jar packages, and other files.
Introduction to the pom.xml file
If you just want to verify the example, you can use the default code without any modifications. You can also modify the pom.xml file based on your specific requirements, as explained below.
The content of the pom.xml configuration file is as follows:
-
File declaration statement.
This statement declares the file as an XML file using XML version
1.0and character encodingUTF-8.Code:
<?xml version="1.0" encoding="UTF-8"?> -
Configure the namespaces and POM model version.
- Use
xmlnsto set the POM namespace tohttp://maven.apache.org/POM/4.0.0. - Use
xmlns:xsito set the XML namespace tohttp://www.w3.org/2001/XMLSchema-instance. - Use
xsi:schemaLocationto set the POM namespace tohttp://maven.apache.org/POM/4.0.0and the location of the POM XSD file tohttp://maven.apache.org/xsd/maven-4.0.0.xsd. - Use
<modelVersion>to set the POM model version used by the POM file to4.0.0.
Code:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
</project> - Use
-
Basic information configuration.
- Use
<groupId>to set the project identifier tocom.oceanbase. - Use
<artifactId>to set the project dependency tojava-oceanbase-hibernate. - Use
<version>to set the project version to1.0-SNAPSHOT.
Code:
<groupId>com.oceanbase</groupId>
<artifactId>java-oceanbase-hibernate</artifactId>
<version>1.0-SNAPSHOT</version> - Use
-
Use
<build>to define the project's build process.- Use
<plugins>to specify the plugins configured in the project. - Use
<plugin>to specify a plugin configured in the project. - Use
<groupId>to set the project identifier toorg.apache.maven.plugins. - Use
<artifactId>to set the project dependency tomaven-compiler-plugin. - Use
<configuration>to specify the parameters of the configured plugin. - Use
<source>to set the compiler's source code version to 8. - Use
<target>to set the compiler's source code version to 8.
Code:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build> - Use
-
Use
<dependencies>to define the components on which the project depends.-
Specify the organization of the dependency as
com.oceanbase, the name asoceanbase-client, and the version as2.4.2.Code:
<dependencies>
<dependency>
<groupId>com.oceanbase</groupId>
<artifactId>oceanbase-client</artifactId>
<version>2.4.2</version>
</dependency>
</dependencies> -
Specify the test architecture of the dependency as
junit, the name asjunit, and the version as4.13.Code:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
</dependencies> -
Specify the architecture of the dependency as
org.hibernate, the core library ashibernate-core, and the version as5.2.17.Final.Code:
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.17.Final</version>
</dependency>
</dependencies> -
Specify the architecture of the dependency as
org.hibernate, the data source library ashibernate-c3p0, and the version as5.2.17.Final.Code:
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.2.17.Final</version>
</dependency>
</dependencies>
-
Introduction to the User.hbm.xml file
The User.hbm.xml file is a Hibernate mapping file used to map Java objects to database tables.
The code of the User.hbm.xml file mainly includes the following parts:
-
File declaration statement.
This statement declares the file as an XML file using XML version
1.0and character encodingUTF-8. It also specifies the DTD version and location of the Hibernate mapping file, setting the DTD document type tohibernate-mapping, the version to 3.0, the language to EN, and the URL of the file tohttp://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd.Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> -
Configure the mapping file.
Define a Hibernate mapping file to map the entity class named
Userto the database table namedtest_hibernate_mysql.- Use the
packageattribute to set the Java package in the mapping file tocom.oceanbase.pojo. - Use the
classtag to map data from the data table, setting thenameattribute to the Java class nameUserand thetableattribute to the database table nametest_hibernate_mysql. - Use
idto define the primary key attribute, setting thenameattribute to the member variableidof the Java classUserand thecolumnattribute to the database field nameUSER_ID. - Use
generatorto define the primary key generation strategy, setting theclassattribute to the type of the primary key generatorsequence, theparamelement to the sequence name in the databaseSQ_USER, thenameattribute to the columnUSER_NAMEin the database table corresponding to this attribute, and specifying the data type of this attribute as a string.
Code:
<hibernate-mapping package="com.oceanbase.pojo">
<class name="User" table="test_hibernate_mysql">
<!-- Configure primary key generation strategy -->
<id name="id" column="USER_ID">
<generator class="sequence">
<param name="sequence">SQ_USER</param>
</generator>
</id>
<!-- Configuration Tables and Properties -->
<property name="name" column="USER_NAME" type="string"/>
</class>
</hibernate-mapping> - Use the
Introduction to the hibernate.cfg.xml file
The hibernate.cfg.xml file is a configuration file for Hibernate, used to configure the runtime environment and database connection parameters.
The code in the hibernate.cfg.xml file mainly includes the following parts:
-
File declaration statement.
This statement declares the file as an XML file using XML version
1.0and character encodingUTF-8. It also specifies the DTD version and location for the Hibernate configuration file, setting the DTD document type tohibernate-configuration, version 3.0, language EN, and the URL tohttp://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd.Sample code:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> -
Configure the
configurationparameter.The
<hibernate-configuration>root element contains the<session-factory>element, which sets up the Hibernate session factory for creating and managing session objects. The session factory includes parameters such as the database driver class name, URL, username, password, connection pool settings, database dialect, SQL output and formatting, automatic table creation, current session context, batch processing, and second-level caching.-
Configure database information.
This section configures the parameters for connecting to the database, including the driver class name, URL, username, and password.
- Use
hibernate.connection.driver_classto specify the database driver class ascom.mysql.cj.jdbc.Driverfor establishing a connection with seekdb. - Use
hibernate.connection.urlto specify the database URL, including the database address, port number, and database name. - Use
hibernate.connection.usernameto specify the username for connecting to the database. - Use
hibernate.connection.passwordto specify the password for connecting to the database.
Sample code:
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:oceanbase://host:port/schema_name</property>
<property name="hibernate.connection.username">user_name</property>
<property name="hibernate.connection.password">******</property> - Use
-
Configure connection pool information.
This section configures the parameters for the connection pool used by Hibernate. It specifies the connection pool as C3P0, with parameters including the maximum and minimum number of connections, timeout, maximum idle time, number of cached Statement objects, idle connection test time, number of connections acquired at once, and connection validation method.
infoThe following parameters are for reference only and do not represent the complete list of supported parameters. For more detailed parameter information, please refer to the relevant documentation.
- Use
hibernate.connection.provider_classto specify the connection pool as C3P0 for managing database connection creation and release. - Use
hibernate.c3p0.max_sizeto set the maximum number of connections in the connection pool to 60. - Use
hibernate.c3p0.min_sizeto set the minimum number of connections in the connection pool to 30. - Use
hibernate.c3p0.checkoutTimeoutto set the timeout for obtaining a connection in the connection pool to 30000 milliseconds. - Use
hibernate.c3p0.timeoutto set the maximum idle time in the connection pool to 2000 milliseconds, after which the connection will be closed. - Use
hibernate.c3p0.max_statementsto set the maximum number of cached SQL statements in the connection pool to 100. - Use
hibernate.c3p0.idle_test_periodto set the idle connection detection period in the connection pool to 3000 milliseconds. - Use
hibernate.c3p0.acquire_incrementto set the connection increment when the connection pool dynamically grows to 3. - Use
hibernate.c3p0.validateto set the connection validation to true.
Sample code:
<property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
<property name="hibernate.c3p0.max_size">60</property>
<property name="hibernate.c3p0.min_size">30</property>
<property name="hibernate.c3p0.checkoutTimeout">30000</property>
<property name="hibernate.c3p0.timeout">20000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<property name="hibernate.c3p0.acquire_increment">3</property>
<property name="hibernate.c3p0.validate">true</property> - Use
-
Configure SQL interaction information. This section configures the parameters for connecting Hibernate to the database, including the database dialect, SQL printing and formatting, automatic table creation, current session context, batch size, cache usage, and loading of mapping files.
- Use
dialectto specify the database dialect as MySQL 5.7 to ensure compatibility with the specific database. - Use
hibernate.show_sqlto set whether to print the SQL statements generated by Hibernate on the console. - Use
hibernate.format_sqlto set whether to format the printed SQL statements. - Use
hbm2ddl.autoto set whether to automatically create tables. - Use
current_session_context_classto specify the current session context at the thread level. - Use
hibernate.jdbc.batch_sizeto set the batch size. - Use
hibernate.cache.use_second_level_cacheto set whether to enable second-level caching. - Specify the mapping file to load as
com/oceanbase/pojo/User.hbm.xml.
Sample code:
<property name="dialect">org.hibernate.dialect.MySQL57Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hbm2ddl.auto">create</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.jdbc.batch_size">10</property>
<property name="hibernate.cache.use_second_level_cache">false</property>
<mapping resource="com/oceanbase/pojo/User.hbm.xml"/> - Use
-