diff --git a/spring-data-rest/pom.xml b/spring-data-rest/pom.xml
index a6f12e1904..2fe4715bac 100644
--- a/spring-data-rest/pom.xml
+++ b/spring-data-rest/pom.xml
@@ -33,6 +33,15 @@
com.h2database
h2
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+ org.xerial
+ sqlite-jdbc
+ ${sqlite.version}
+
@@ -43,6 +52,8 @@
+ com.baeldung.SpringDataRestApplication
+ 3.25.2
2.1.0.RELEASE
diff --git a/spring-data-rest/src/main/java/com/baeldung/config/DbConfig.java b/spring-data-rest/src/main/java/com/baeldung/config/DbConfig.java
index 8d1f9de497..26d882d6a0 100644
--- a/spring-data-rest/src/main/java/com/baeldung/config/DbConfig.java
+++ b/spring-data-rest/src/main/java/com/baeldung/config/DbConfig.java
@@ -7,6 +7,7 @@ import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@@ -14,11 +15,12 @@ import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-//@Configuration
+@Configuration
@EnableJpaRepositories(basePackages = "com.baeldung.repositories")
// @PropertySource("persistence-h2.properties")
// @PropertySource("persistence-hsqldb.properties")
// @PropertySource("persistence-derby.properties")
+//@PropertySource("persistence-sqlite.properties")
public class DbConfig {
@Autowired
@@ -59,3 +61,25 @@ public class DbConfig {
}
}
+
+@Configuration
+@Profile("h2")
+@PropertySource("persistence-h2.properties")
+class H2Config {}
+
+@Configuration
+@Profile("hsqldb")
+@PropertySource("persistence-hsqldb.properties")
+class HsqldbConfig {}
+
+
+@Configuration
+@Profile("derby")
+@PropertySource("persistence-derby.properties")
+class DerbyConfig {}
+
+
+@Configuration
+@Profile("sqlite")
+@PropertySource("persistence-sqlite.properties")
+class SqliteConfig {}
diff --git a/spring-data-rest/src/main/java/com/baeldung/dialect/SQLiteDialect.java b/spring-data-rest/src/main/java/com/baeldung/dialect/SQLiteDialect.java
new file mode 100644
index 0000000000..4512f7d34d
--- /dev/null
+++ b/spring-data-rest/src/main/java/com/baeldung/dialect/SQLiteDialect.java
@@ -0,0 +1,78 @@
+package com.baeldung.dialect;
+
+import org.hibernate.dialect.Dialect;
+import org.hibernate.dialect.identity.IdentityColumnSupport;
+
+import java.sql.Types;
+
+public class SQLiteDialect extends Dialect {
+
+ public SQLiteDialect() {
+ registerColumnType(Types.BIT, "integer");
+ registerColumnType(Types.TINYINT, "tinyint");
+ registerColumnType(Types.SMALLINT, "smallint");
+ registerColumnType(Types.INTEGER, "integer");
+ registerColumnType(Types.BIGINT, "bigint");
+ registerColumnType(Types.FLOAT, "float");
+ registerColumnType(Types.REAL, "real");
+ registerColumnType(Types.DOUBLE, "double");
+ registerColumnType(Types.NUMERIC, "numeric");
+ registerColumnType(Types.DECIMAL, "decimal");
+ registerColumnType(Types.CHAR, "char");
+ registerColumnType(Types.VARCHAR, "varchar");
+ registerColumnType(Types.LONGVARCHAR, "longvarchar");
+ registerColumnType(Types.DATE, "date");
+ registerColumnType(Types.TIME, "time");
+ registerColumnType(Types.TIMESTAMP, "timestamp");
+ registerColumnType(Types.BINARY, "blob");
+ registerColumnType(Types.VARBINARY, "blob");
+ registerColumnType(Types.LONGVARBINARY, "blob");
+ registerColumnType(Types.BLOB, "blob");
+ registerColumnType(Types.CLOB, "clob");
+ registerColumnType(Types.BOOLEAN, "integer");
+ }
+
+ public IdentityColumnSupport getIdentityColumnSupport() {
+ return new SQLiteIdentityColumnSupport();
+ }
+
+ public boolean hasAlterTable() {
+ return false;
+ }
+
+ public boolean dropConstraints() {
+ return false;
+ }
+
+ public String getDropForeignKeyString() {
+ return "";
+ }
+
+ public String getAddForeignKeyConstraintString(String constraintName, String[] foreignKey, String referencedTable, String[] primaryKey, boolean referencesPrimaryKey) {
+ return "";
+ }
+
+ public String getAddPrimaryKeyConstraintString(String constraintName) {
+ return "";
+ }
+
+ public String getForUpdateString() {
+ return "";
+ }
+
+ public String getAddColumnString() {
+ return "add column";
+ }
+
+ public boolean supportsOuterJoinForUpdate() {
+ return false;
+ }
+
+ public boolean supportsIfExistsBeforeTableName() {
+ return true;
+ }
+
+ public boolean supportsCascadeDelete() {
+ return false;
+ }
+}
diff --git a/spring-data-rest/src/main/java/com/baeldung/dialect/SQLiteIdentityColumnSupport.java b/spring-data-rest/src/main/java/com/baeldung/dialect/SQLiteIdentityColumnSupport.java
new file mode 100644
index 0000000000..cf6e3a9a97
--- /dev/null
+++ b/spring-data-rest/src/main/java/com/baeldung/dialect/SQLiteIdentityColumnSupport.java
@@ -0,0 +1,22 @@
+package com.baeldung.dialect;
+
+import org.hibernate.MappingException;
+import org.hibernate.dialect.identity.IdentityColumnSupportImpl;
+
+public class SQLiteIdentityColumnSupport extends IdentityColumnSupportImpl {
+
+ @Override
+ public boolean supportsIdentityColumns() {
+ return true;
+ }
+
+ @Override
+ public String getIdentitySelectString(String table, String column, int type) throws MappingException {
+ return "select last_insert_rowid()";
+ }
+
+ @Override
+ public String getIdentityColumnString(int type) throws MappingException {
+ return "integer";
+ }
+}
diff --git a/spring-data-rest/src/main/resources/application.properties b/spring-data-rest/src/main/resources/application.properties
index e69de29bb2..06cb22a4fe 100644
--- a/spring-data-rest/src/main/resources/application.properties
+++ b/spring-data-rest/src/main/resources/application.properties
@@ -0,0 +1 @@
+spring.profiles.default=h2
\ No newline at end of file
diff --git a/spring-data-rest/src/main/resources/persistence-sqlite.properties b/spring-data-rest/src/main/resources/persistence-sqlite.properties
index 018c2cbaca..b6b5f4e4d6 100644
--- a/spring-data-rest/src/main/resources/persistence-sqlite.properties
+++ b/spring-data-rest/src/main/resources/persistence-sqlite.properties
@@ -1,4 +1,7 @@
driverClassName=org.sqlite.JDBC
-url=jdbc:sqlite:memory:myDb
+url=jdbc:sqlite:memory:myDb?cache=shared
username=sa
-password=sa
\ No newline at end of file
+password=sa
+hibernate.dialect=com.baeldung.dialect.SQLiteDialect
+hibernate.hbm2ddl.auto=create-drop
+hibernate.show_sql=true