You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@submarine.apache.org by ku...@apache.org on 2022/05/04 11:23:29 UTC

[submarine] branch master updated: SUBMARINE-1210. Refactor database in server

This is an automated email from the ASF dual-hosted git repository.

kuanhsun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git


The following commit(s) were added to refs/heads/master by this push:
     new 13bc411b SUBMARINE-1210. Refactor database in server
13bc411b is described below

commit 13bc411b9e8ca3fd6429763848e9905b097e18ff
Author: jeff-901 <b0...@ntu.edu.tw>
AuthorDate: Tue May 3 21:58:45 2022 +0800

    SUBMARINE-1210. Refactor database in server
    
    ### What is this PR for?
    Move database related code to new folder
    Delete hibernetes
    
    ### What type of PR is it?
    Refactoring
    
    ### Todos
    
    ### What is the Jira issue?
    https://issues.apache.org/jira/browse/SUBMARINE-1210
    
    ### How should this be tested?
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Do the license files need updating? No
    * Are there breaking changes for older versions? No
    * Does this need new documentation? No
    
    Author: jeff-901 <b0...@ntu.edu.tw>
    
    Signed-off-by: kuanhsun <ku...@apache.org>
    
    Closes #952 from jeff-901/SUBMARINE-1210 and squashes the following commits:
    
    31926d47 [jeff-901] fix mapper
    7cae5e60 [jeff-901] pom checkstyle
    ecc12ebb [jeff-901] fix workbench test
    92983109 [jeff-901] move workbench test
    86eb3b1b [jeff-901] update version
    28d929bd [jeff-901] fix dict
    ec916268 [jeff-901] move database
    7d9f4d81 [jeff-901] refactor import
    654fe86b [jeff-901] fix rebase
---
 pom.xml                                            |   1 -
 submarine-server/pom.xml                           |   1 +
 submarine-server/server-core/pom.xml               |  12 +-
 .../apache/submarine/server/SubmarineServer.java   |   2 -
 .../server/database/utils/HibernateUtil.java       |  57 ------
 .../server/internal/InternalServiceManager.java    |   6 +-
 .../EnvironmentManager.java                        |   6 +-
 .../{experiment => manager}/ExperimentManager.java |   6 +-
 .../ExperimentTemplateManager.java                 |   7 +-
 .../server/{model => manager}/ModelManager.java    |   6 +-
 .../{notebook => manager}/NotebookManager.java     |   5 +-
 .../submarine/server/rest/EnvironmentRestApi.java  |  20 +-
 .../submarine/server/rest/ExperimentRestApi.java   |   4 +-
 .../server/rest/ExperimentTemplateRestApi.java     |   2 +-
 .../submarine/server/rest/ModelVersionRestApi.java |   9 +-
 .../submarine/server/rest/NotebookRestApi.java     |   2 +-
 .../server/rest/RegisteredModelRestApi.java        |  12 +-
 .../apache/submarine/server/rest/ServeRestApi.java |   2 +-
 .../server/rest/workbench/LoginRestApi.java        |   4 +-
 .../server/rest/workbench/MetricRestApi.java       |   4 +-
 .../server/rest/workbench/ParamRestApi.java        |   4 +-
 .../server/rest/workbench/ProjectRestApi.java      |   4 +-
 .../server/rest/workbench/SysDeptRestApi.java      |  10 +-
 .../server/rest/workbench/SysDictItemRestApi.java  |   6 +-
 .../server/rest/workbench/SysDictRestApi.java      |   4 +-
 .../server/rest/workbench/SysUserRestApi.java      |   4 +-
 .../server/rest/workbench/SystemRestApi.java       |   6 +-
 .../server/rest/workbench/TeamRestApi.java         |   4 +-
 .../server/utils/response/DictAnnotation.java      |   6 +-
 .../src/main/resources/hibernate.cfg.xml           |  44 -----
 .../internal/InternalServiceManagerTest.java       |   6 +-
 .../ExperimentManagerTest.java                     |  18 +-
 .../server/rest/ExperimentRestApiTest.java         |   2 +-
 .../server/rest/ModelVersionRestApiTest.java       |   8 +-
 .../server/rest/RegisteredModelRestApiTest.java    |   4 +-
 .../server/rest/workbench/CommonDataTest.java      |  12 +-
 .../workbench}/DictAnnotationTest.java             |   4 +-
 .../server/rest/workbench/SysDeptRestApiTest.java  |   4 +-
 .../rest/workbench/SysDictItemRestApiTest.java     |   4 +-
 .../server/rest/workbench/SysDictRestApiTest.java  |   2 +-
 .../server/rest/workbench/SysUserRestApiTest.java  |   4 +-
 .../server/utils/response/JsonResponseTest.java    |   2 +-
 submarine-server/server-database/pom.xml           | 203 +++++++++++++++++++++
 .../server/database/entity/BaseEntity.java         |   2 +-
 .../environment}/entity/EnvironmentEntity.java     |   2 +-
 .../environment}/mappers/EnvironmentMapper.java    |   5 +-
 .../experiment}/entity/ExperimentEntity.java       |   4 +-
 .../experiment}/mappers/ExperimentMapper.java      |   4 +-
 .../experiment}/service/ExperimentService.java     |   6 +-
 .../entity/ExperimentTemplateEntity.java           |   2 +-
 .../mappers/ExperimentTemplateMapper.java          |   4 +-
 .../model}/entities/ModelVersionEntity.java        |   2 +-
 .../model}/entities/ModelVersionTagEntity.java     |   2 +-
 .../model}/entities/RegisteredModelEntity.java     |   2 +-
 .../model}/entities/RegisteredModelTagEntity.java  |   2 +-
 .../model}/mappers/ModelVersionMapper.java         |   4 +-
 .../model}/mappers/ModelVersionTagMapper.java      |   4 +-
 .../model}/mappers/RegisteredModelMapper.java      |   4 +-
 .../model}/mappers/RegisteredModelTagMapper.java   |   4 +-
 .../model}/service/ModelVersionService.java        |   6 +-
 .../model}/service/ModelVersionTagService.java     |   6 +-
 .../model}/service/RegisteredModelService.java     |   6 +-
 .../model}/service/RegisteredModelTagService.java  |   6 +-
 .../database/notebook}/entity/NotebookEntity.java  |   4 +-
 .../database/notebook}/mappers/NotebookMapper.java |   4 +-
 .../notebook}/service/NotebookService.java         |   6 +-
 .../server/database/utils/MyBatisUtil.java         |   0
 .../database}/workbench/annotation/Dict.java       |   2 +-
 .../database/workbench}/entity/JobEntity.java      |   2 +-
 .../database/workbench}/entity/MetricEntity.java   |   2 +-
 .../database/workbench}/entity/ParamEntity.java    |   2 +-
 .../database/workbench}/entity/ProjectEntity.java  |   4 +-
 .../workbench}/entity/ProjectFilesEntity.java      |   2 +-
 .../database/workbench}/entity/SysDeptEntity.java  |   2 +-
 .../workbench}/entity/SysDeptSelectEntity.java     |   2 +-
 .../database/workbench}/entity/SysDeptTree.java    |   2 +-
 .../database/workbench}/entity/SysDictEntity.java  |   2 +-
 .../workbench}/entity/SysDictItemEntity.java       |   2 +-
 .../workbench}/entity/SysMessageEntity.java        |   2 +-
 .../database/workbench}/entity/SysUserEntity.java  |   6 +-
 .../database/workbench}/entity/TeamEntity.java     |   2 +-
 .../workbench}/entity/TeamMemberEntity.java        |   2 +-
 .../database/workbench}/mappers/JobMapper.java     |   4 +-
 .../database/workbench}/mappers/MetricMapper.java  |   4 +-
 .../database/workbench}/mappers/ParamMapper.java   |   4 +-
 .../workbench}/mappers/ProjectFilesMapper.java     |   4 +-
 .../database/workbench}/mappers/ProjectMapper.java |   4 +-
 .../database/workbench}/mappers/SysDeptMapper.java |   4 +-
 .../workbench}/mappers/SysDictItemMapper.java      |   4 +-
 .../database/workbench}/mappers/SysDictMapper.java |   4 +-
 .../workbench}/mappers/SysMessageMapper.java       |   4 +-
 .../database/workbench}/mappers/SysUserMapper.java |   4 +-
 .../database/workbench}/mappers/SystemMapper.java  |   2 +-
 .../database/workbench}/mappers/TeamMapper.java    |   4 +-
 .../workbench}/mappers/TeamMemberMapper.java       |   4 +-
 .../database/workbench}/service/JobService.java    |   6 +-
 .../database/workbench}/service/MetricService.java |   6 +-
 .../database/workbench}/service/ParamService.java  |   6 +-
 .../workbench}/service/ProjectFilesService.java    |   6 +-
 .../workbench}/service/ProjectService.java         |  10 +-
 .../workbench}/service/SysDictItemService.java     |   9 +-
 .../workbench}/service/SysMessageService.java      |   6 +-
 .../workbench}/service/SysUserService.java         |   8 +-
 .../workbench}/service/TeamMemberService.java      |   6 +-
 .../database/workbench}/service/TeamService.java   |  10 +-
 .../utils/CustomJsonDateDeserializer.java          |   2 +-
 .../database/workbench}/utils/DepartmentUtil.java  |   8 +-
 .../workbench}/utils/MybatisGenerator.java         |   4 +-
 .../src/main/resources/log4j.properties            |  17 ++
 .../src/main/resources/mbgConfiguration.xml        |   0
 .../main/resources/mybatis-config-metastore.xml    |   0
 .../src/main/resources/mybatis-config.xml          |   0
 .../database/mappers/EnvironmentMapper.xml         |   8 +-
 .../database/mappers/ExperimentMapper.xml          |   8 +-
 .../database/mappers/ExperimentTemplateMapper.xml  |   8 +-
 .../submarine/database/mappers/JobMapper.xml       |  12 +-
 .../submarine/database/mappers/MetricMapper.xml    |   8 +-
 .../database/mappers/ModelVersionMapper.xml        |  10 +-
 .../database/mappers/ModelVersionTagMapper.xml     |   6 +-
 .../submarine/database/mappers/NotebookMapper.xml  |   8 +-
 .../submarine/database/mappers/ParamMapper.xml     |   8 +-
 .../database/mappers/ProjectFilesMapper.xml        |  16 +-
 .../submarine/database/mappers/ProjectMapper.xml   |  12 +-
 .../database/mappers/RegisteredModelMapper.xml     |  12 +-
 .../database/mappers/RegisteredModelTagMapper.xml  |   8 +-
 .../submarine/database/mappers/SysDeptMapper.xml   |   8 +-
 .../database/mappers/SysDictItemMapper.xml         |   8 +-
 .../submarine/database/mappers/SysDictMapper.xml   |   8 +-
 .../database/mappers/SysMessageMapper.xml          |  16 +-
 .../submarine/database/mappers/SysUserMapper.xml   |  10 +-
 .../submarine/database/mappers/SystemMapper.xml    |   2 +-
 .../submarine/database/mappers/TeamMapper.xml      |  12 +-
 .../database/mappers/TeamMemberMapper.xml          |  14 +-
 .../experiment}/ExperimentServiceTest.java         |   6 +-
 .../database/model}/ModelVersionTagTest.java       |  14 +-
 .../server/database/model}/ModelVersionTest.java   |  10 +-
 .../model}/RegisteredModelServiceTest.java         |   6 +-
 .../model}/RegisteredModelTagServiceTest.java      |  10 +-
 .../workbench/database/service/JobServiceTest.java |   4 +-
 .../database/service/MetricServiceTest.java        |   8 +-
 .../database/service/ParamServiceTest.java         |   8 +-
 .../database/service/ProjectServiceTest.java       |   6 +-
 .../database/service/SysUserServiceTest.java       |   4 +-
 .../database/service/TeamMemberServiceTest.java    |   4 +-
 .../database/service/TeamServiceTest.java          |   6 +-
 .../database/utils/DepartmentUtilTest.java         |   8 +-
 .../submitter/k8s/parser/ExperimentSpecParser.java |   2 +-
 .../submitter/k8s/parser/NotebookSpecParser.java   |   2 +-
 .../submitter/k8s/ExperimentSpecParserTest.java    |   2 +-
 149 files changed, 611 insertions(+), 505 deletions(-)

diff --git a/pom.xml b/pom.xml
index 2baecfde..38671903 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,7 +84,6 @@
     <minio.version>7.1.4</minio.version>
 
     <cglib.version>3.3.0</cglib.version>
-    <hibernate.version>5.6.3.Final</hibernate.version>
     <jboss.logging.version>3.4.2.Final</jboss.logging.version>
     <bytebuddy.version>1.11.20</bytebuddy.version>
     <mybatis.version>3.2.8</mybatis.version>
diff --git a/submarine-server/pom.xml b/submarine-server/pom.xml
index 5066fed6..7e18f870 100644
--- a/submarine-server/pom.xml
+++ b/submarine-server/pom.xml
@@ -37,6 +37,7 @@
     <module>server-submitter</module>
     <module>server-core</module>
     <module>server-api</module>
+    <module>server-database</module>
   </modules>
 
   <dependencyManagement>
diff --git a/submarine-server/server-core/pom.xml b/submarine-server/server-core/pom.xml
index 8805f0c9..6a9e6461 100644
--- a/submarine-server/server-core/pom.xml
+++ b/submarine-server/server-core/pom.xml
@@ -257,15 +257,9 @@
     </dependency>
 
     <dependency>
-      <groupId>org.mybatis</groupId>
-      <artifactId>mybatis</artifactId>
-      <version>${mybatis.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.hibernate</groupId>
-      <artifactId>hibernate-core</artifactId>
-      <version>${hibernate.version}</version>
+      <groupId>org.apache.submarine</groupId>
+      <artifactId>submarine-server-database</artifactId>
+      <version>${project.version}</version>
     </dependency>
 
     <dependency>
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java
index d2bf7319..afb1f34a 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/SubmarineServer.java
@@ -19,7 +19,6 @@
 package org.apache.submarine.server;
 
 import org.apache.log4j.PropertyConfigurator;
-import org.apache.submarine.server.database.utils.HibernateUtil;
 import org.apache.submarine.server.rest.provider.YamlEntityProvider;
 import org.apache.submarine.server.workbench.websocket.NotebookServer;
 import org.apache.submarine.commons.cluster.ClusterServer;
@@ -146,7 +145,6 @@ public class SubmarineServer extends ResourceConfig {
                 () -> {
                   LOG.info("Shutting down Submarine Server ... ");
                   try {
-                    HibernateUtil.close();
                     jettyWebServer.stop();
                     Thread.sleep(3000);
                   } catch (InterruptedException e) {
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/database/utils/HibernateUtil.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/database/utils/HibernateUtil.java
deleted file mode 100644
index 06ff94cd..00000000
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/database/utils/HibernateUtil.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.submarine.server.database.utils;
-
-
-import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
-import org.hibernate.SessionFactory;
-import org.hibernate.boot.MetadataSources;
-import org.hibernate.boot.registry.StandardServiceRegistry;
-import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class HibernateUtil {
-  private static final Logger LOG = LoggerFactory.getLogger(HibernateUtil.class);
-
-  private static final SessionFactory sessionFactory = buildSessionFactory();
-
-  public static void close() {
-    if (sessionFactory != null){
-      sessionFactory.close();
-    }
-    LOG.info("Hibernate session is closed.");
-  }
-
-  public static SessionFactory getSessionFactory() {
-    return sessionFactory;
-  }
-
-  private static SessionFactory buildSessionFactory() throws SubmarineRuntimeException {
-    // Default get the hibernate.cfg.xml in resource
-    final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
-    try {
-      return new MetadataSources(registry).buildMetadata().buildSessionFactory();
-    } catch (Exception e) {
-      StandardServiceRegistryBuilder.destroy(registry);
-      LOG.error(e.getMessage(), e);
-      throw new SubmarineRuntimeException("Unable to build session factory");
-    }
-  }
-
-  private HibernateUtil() {}
-}
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/internal/InternalServiceManager.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/internal/InternalServiceManager.java
index c4ec2021..ea61d5d9 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/internal/InternalServiceManager.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/internal/InternalServiceManager.java
@@ -25,9 +25,9 @@ import javax.ws.rs.core.Response.Status;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.api.common.CustomResourceType;
 import org.apache.submarine.server.api.notebook.Notebook;
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.service.ExperimentService;
-import org.apache.submarine.server.notebook.database.service.NotebookService;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.service.ExperimentService;
+import org.apache.submarine.server.database.notebook.service.NotebookService;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/EnvironmentManager.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/EnvironmentManager.java
similarity index 98%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/EnvironmentManager.java
rename to submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/EnvironmentManager.java
index f129251f..e3a0ba80 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/EnvironmentManager.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/EnvironmentManager.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.environment;
+package org.apache.submarine.server.manager;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -34,8 +34,8 @@ import org.apache.submarine.server.api.environment.Environment;
 import org.apache.submarine.server.api.environment.EnvironmentId;
 import org.apache.submarine.server.api.spec.EnvironmentSpec;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.environment.database.entity.EnvironmentEntity;
-import org.apache.submarine.server.environment.database.mappers.EnvironmentMapper;
+import org.apache.submarine.server.database.environment.entity.EnvironmentEntity;
+import org.apache.submarine.server.database.environment.mappers.EnvironmentMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/ExperimentManager.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ExperimentManager.java
similarity index 98%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/ExperimentManager.java
rename to submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ExperimentManager.java
index 45d8eb0e..d1b95469 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/ExperimentManager.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ExperimentManager.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experiment;
+package org.apache.submarine.server.manager;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -42,8 +42,8 @@ import org.apache.submarine.server.api.experiment.ExperimentLog;
 import org.apache.submarine.server.api.experiment.TensorboardInfo;
 import org.apache.submarine.server.api.experiment.MlflowInfo;
 import org.apache.submarine.server.api.spec.ExperimentSpec;
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.service.ExperimentService;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.service.ExperimentService;
 import org.apache.submarine.server.rest.RestConstants;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/ExperimentTemplateManager.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ExperimentTemplateManager.java
similarity index 98%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/ExperimentTemplateManager.java
rename to submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ExperimentTemplateManager.java
index 50efa5c4..1093ae3b 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/ExperimentTemplateManager.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ExperimentTemplateManager.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experimenttemplate;
+package org.apache.submarine.server.manager;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -46,9 +46,8 @@ import org.apache.submarine.server.api.spec.ExperimentTaskSpec;
 import org.apache.submarine.server.api.spec.ExperimentTemplateParamSpec;
 import org.apache.submarine.server.api.spec.ExperimentTemplateSpec;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.experiment.ExperimentManager;
-import org.apache.submarine.server.experimenttemplate.database.entity.ExperimentTemplateEntity;
-import org.apache.submarine.server.experimenttemplate.database.mappers.ExperimentTemplateMapper;
+import org.apache.submarine.server.database.experimenttemplate.entity.ExperimentTemplateEntity;
+import org.apache.submarine.server.database.experimenttemplate.mappers.ExperimentTemplateMapper;
 import org.apache.submarine.server.utils.gson.ExperimentIdDeserializer;
 import org.apache.submarine.server.utils.gson.ExperimentIdSerializer;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/ModelManager.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ModelManager.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/ModelManager.java
rename to submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ModelManager.java
index c6f2427d..378dd0dd 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/ModelManager.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/ModelManager.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model;
+package org.apache.submarine.server.manager;
 
 import org.json.JSONArray;
 import org.json.JSONObject;
@@ -31,8 +31,8 @@ import org.apache.submarine.server.api.Submitter;
 import org.apache.submarine.server.api.model.ServeResponse;
 import org.apache.submarine.server.api.model.ServeSpec;
 import org.apache.submarine.server.api.proto.TritonModelConfig;
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
-import org.apache.submarine.server.model.database.service.ModelVersionService;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.service.ModelVersionService;
 import org.apache.submarine.server.s3.Client;
 import org.apache.submarine.server.s3.S3Constants;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/NotebookManager.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/NotebookManager.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/NotebookManager.java
rename to submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/NotebookManager.java
index 5009b05f..add2eb26 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/NotebookManager.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/manager/NotebookManager.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.notebook;
+package org.apache.submarine.server.manager;
 
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.SubmarineServer;
@@ -27,7 +27,6 @@ import org.apache.submarine.server.api.environment.Environment;
 import org.apache.submarine.server.api.notebook.Notebook;
 import org.apache.submarine.server.api.notebook.NotebookId;
 import org.apache.submarine.server.api.spec.NotebookSpec;
-import org.apache.submarine.server.environment.EnvironmentManager;
 
 import javax.ws.rs.core.Response;
 import java.util.ArrayList;
@@ -35,7 +34,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
-import org.apache.submarine.server.notebook.database.service.NotebookService;
+import org.apache.submarine.server.database.notebook.service.NotebookService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/EnvironmentRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/EnvironmentRestApi.java
index f636de54..cb51b3ca 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/EnvironmentRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/EnvironmentRestApi.java
@@ -36,7 +36,7 @@ import javax.ws.rs.core.Response;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.api.environment.Environment;
 import org.apache.submarine.server.api.spec.EnvironmentSpec;
-import org.apache.submarine.server.environment.EnvironmentManager;
+import org.apache.submarine.server.manager.EnvironmentManager;
 import org.apache.submarine.server.utils.response.JsonResponse;
 
 import io.swagger.v3.oas.annotations.Operation;
@@ -64,7 +64,7 @@ public class EnvironmentRestApi {
   @Operation(summary = "Create a environment",
           tags = {"environment"},
           responses = {
-                  @ApiResponse(description = "successful operation", 
+                  @ApiResponse(description = "successful operation",
                       content = @Content(
                           schema = @Schema(
                               implementation = JsonResponse.class)))})
@@ -77,7 +77,7 @@ public class EnvironmentRestApi {
       return parseEnvironmentServiceException(e);
     }
   }
-  
+
   /**
    * Update environment.
    * @param name Name of the environment
@@ -90,12 +90,12 @@ public class EnvironmentRestApi {
   @Operation(summary = "Update the environment with job spec",
           tags = {"environment"},
           responses = {
-                  @ApiResponse(description = "successful operation", 
+                  @ApiResponse(description = "successful operation",
                       content = @Content(
                           schema = @Schema(
                               implementation = JsonResponse.class))),
                   @ApiResponse(
-                      responseCode = "404", 
+                      responseCode = "404",
                       description = "Environment not found")})
   public Response updateEnvironment(
       @PathParam(RestConstants.ENVIRONMENT_ID) String name,
@@ -120,7 +120,7 @@ public class EnvironmentRestApi {
   @Operation(summary = "Delete the environment",
           tags = {"environment"},
           responses = {
-                  @ApiResponse(description = "successful operation", 
+                  @ApiResponse(description = "successful operation",
                       content = @Content(
                           schema = @Schema(implementation = JsonResponse.class))),
                   @ApiResponse(
@@ -135,7 +135,7 @@ public class EnvironmentRestApi {
       return parseEnvironmentServiceException(e);
     }
   }
-  
+
   /**
    * List all environments.
    * @return environment list
@@ -144,7 +144,7 @@ public class EnvironmentRestApi {
   @Operation(summary = "List of Environments",
           tags = {"environment"},
           responses = {
-                  @ApiResponse(description = "successful operation", 
+                  @ApiResponse(description = "successful operation",
                       content = @Content(
                           schema = @Schema(
                               implementation = JsonResponse.class)))})
@@ -169,11 +169,11 @@ public class EnvironmentRestApi {
   @Operation(summary = "Find environment by name",
           tags = {"environment"},
           responses = {
-                  @ApiResponse(description = "successful operation", 
+                  @ApiResponse(description = "successful operation",
                       content = @Content(
                           schema = @Schema(implementation = JsonResponse.class))),
                   @ApiResponse(
-                      responseCode = "404", 
+                      responseCode = "404",
                       description = "Environment not found")})
   public Response getEnvironment(
       @PathParam(RestConstants.ENVIRONMENT_ID) String name) {
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentRestApi.java
index 221348c3..f9a1c45b 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentRestApi.java
@@ -43,8 +43,8 @@ import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.api.experiment.Experiment;
 import org.apache.submarine.server.api.experiment.TensorboardInfo;
 import org.apache.submarine.server.api.experiment.MlflowInfo;
-import org.apache.submarine.server.experiment.ExperimentManager;
-import org.apache.submarine.server.experimenttemplate.ExperimentTemplateManager;
+import org.apache.submarine.server.manager.ExperimentManager;
+import org.apache.submarine.server.manager.ExperimentTemplateManager;
 import org.apache.submarine.server.api.experiment.ExperimentLog;
 import org.apache.submarine.server.api.experimenttemplate.ExperimentTemplateSubmit;
 import org.apache.submarine.server.api.spec.ExperimentSpec;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentTemplateRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentTemplateRestApi.java
index 22d748b6..26a3c83c 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentTemplateRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ExperimentTemplateRestApi.java
@@ -36,7 +36,7 @@ import javax.ws.rs.core.Response;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.api.experimenttemplate.ExperimentTemplate;
 import org.apache.submarine.server.api.spec.ExperimentTemplateSpec;
-import org.apache.submarine.server.experimenttemplate.ExperimentTemplateManager;
+import org.apache.submarine.server.manager.ExperimentTemplateManager;
 import org.apache.submarine.server.utils.response.JsonResponse;
 
 import io.swagger.v3.oas.annotations.Operation;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ModelVersionRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ModelVersionRestApi.java
index 628cae8e..98817f34 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ModelVersionRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ModelVersionRestApi.java
@@ -40,12 +40,11 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
 
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
-import org.apache.submarine.server.model.database.entities.ModelVersionTagEntity;
-import org.apache.submarine.server.model.database.service.ModelVersionService;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.entities.ModelVersionTagEntity;
+import org.apache.submarine.server.database.model.service.ModelVersionService;
 
-
-import org.apache.submarine.server.model.database.service.ModelVersionTagService;
+import org.apache.submarine.server.database.model.service.ModelVersionTagService;
 import org.apache.submarine.server.s3.Client;
 import org.apache.submarine.server.utils.response.JsonResponse;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/NotebookRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/NotebookRestApi.java
index b7af4ee6..2390dbc7 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/NotebookRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/NotebookRestApi.java
@@ -27,7 +27,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.api.notebook.Notebook;
 import org.apache.submarine.server.api.spec.NotebookSpec;
-import org.apache.submarine.server.notebook.NotebookManager;
+import org.apache.submarine.server.manager.NotebookManager;
 import org.apache.submarine.server.utils.response.JsonResponse;
 
 import javax.ws.rs.Consumes;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/RegisteredModelRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/RegisteredModelRestApi.java
index 002d23f5..8e7825e8 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/RegisteredModelRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/RegisteredModelRestApi.java
@@ -39,13 +39,13 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
 
 
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity;
-import org.apache.submarine.server.model.database.service.ModelVersionService;
-import org.apache.submarine.server.model.database.service.RegisteredModelService;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity;
+import org.apache.submarine.server.database.model.service.ModelVersionService;
+import org.apache.submarine.server.database.model.service.RegisteredModelService;
 
-import org.apache.submarine.server.model.database.service.RegisteredModelTagService;
+import org.apache.submarine.server.database.model.service.RegisteredModelTagService;
 import org.apache.submarine.server.s3.Client;
 import org.apache.submarine.server.utils.response.JsonResponse;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ServeRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ServeRestApi.java
index 2c8208e4..2d6e4b52 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ServeRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/ServeRestApi.java
@@ -34,7 +34,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.api.model.ServeResponse;
 import org.apache.submarine.server.api.model.ServeSpec;
-import org.apache.submarine.server.model.ModelManager;
+import org.apache.submarine.server.manager.ModelManager;
 import org.apache.submarine.server.utils.response.JsonResponse;
 
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/LoginRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/LoginRestApi.java
index 4b474ace..54abc57d 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/LoginRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/LoginRestApi.java
@@ -22,8 +22,8 @@ import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
-import org.apache.submarine.server.workbench.database.mappers.SysUserMapper;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.mappers.SysUserMapper;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/MetricRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/MetricRestApi.java
index e0b7d4c3..9d69727e 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/MetricRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/MetricRestApi.java
@@ -20,8 +20,8 @@ package org.apache.submarine.server.rest.workbench;
 
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.MetricEntity;
-import org.apache.submarine.server.workbench.database.service.MetricService;
+import org.apache.submarine.server.database.workbench.entity.MetricEntity;
+import org.apache.submarine.server.database.workbench.service.MetricService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ParamRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ParamRestApi.java
index 5bbecdde..ae84ceb4 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ParamRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ParamRestApi.java
@@ -20,8 +20,8 @@ package org.apache.submarine.server.rest.workbench;
 
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.ParamEntity;
-import org.apache.submarine.server.workbench.database.service.ParamService;
+import org.apache.submarine.server.database.workbench.entity.ParamEntity;
+import org.apache.submarine.server.database.workbench.service.ParamService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ProjectRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ProjectRestApi.java
index 971bbf12..9c2f96cd 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ProjectRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/ProjectRestApi.java
@@ -23,8 +23,8 @@ import com.github.pagehelper.PageInfo;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.ProjectEntity;
-import org.apache.submarine.server.workbench.database.service.ProjectService;
+import org.apache.submarine.server.database.workbench.entity.ProjectEntity;
+import org.apache.submarine.server.database.workbench.service.ProjectService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDeptRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDeptRestApi.java
index ace2edf0..11c24b26 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDeptRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDeptRestApi.java
@@ -22,11 +22,11 @@ import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.SysDeptSelectEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDeptTree;
-import org.apache.submarine.server.workbench.database.entity.SysDeptEntity;
-import org.apache.submarine.server.workbench.database.mappers.SysDeptMapper;
-import org.apache.submarine.server.workbench.database.utils.DepartmentUtil;
+import org.apache.submarine.server.database.workbench.entity.SysDeptSelectEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptTree;
+import org.apache.submarine.server.database.workbench.entity.SysDeptEntity;
+import org.apache.submarine.server.database.workbench.mappers.SysDeptMapper;
+import org.apache.submarine.server.database.workbench.utils.DepartmentUtil;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApi.java
index 4bbfbfac..c888d734 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApi.java
@@ -23,9 +23,9 @@ import com.google.gson.Gson;
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.SysDictItemEntity;
-import org.apache.submarine.server.workbench.database.mappers.SysDictItemMapper;
-import org.apache.submarine.server.workbench.database.service.SysDictItemService;
+import org.apache.submarine.server.database.workbench.entity.SysDictItemEntity;
+import org.apache.submarine.server.database.workbench.mappers.SysDictItemMapper;
+import org.apache.submarine.server.database.workbench.service.SysDictItemService;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictRestApi.java
index 4fdae27a..e943680f 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysDictRestApi.java
@@ -23,8 +23,8 @@ import com.google.gson.Gson;
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.SysDictEntity;
-import org.apache.submarine.server.workbench.database.mappers.SysDictMapper;
+import org.apache.submarine.server.database.workbench.entity.SysDictEntity;
+import org.apache.submarine.server.database.workbench.mappers.SysDictMapper;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysUserRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysUserRestApi.java
index f8a74bf8..d8e41e75 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysUserRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SysUserRestApi.java
@@ -24,8 +24,8 @@ import com.google.gson.Gson;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
-import org.apache.submarine.server.workbench.database.service.SysUserService;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.service.SysUserService;
 import org.apache.submarine.server.api.workbench.Action;
 import org.apache.submarine.server.api.workbench.Permission;
 import org.apache.submarine.server.api.workbench.Role;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SystemRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SystemRestApi.java
index 9727d1cf..733dd846 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SystemRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/SystemRestApi.java
@@ -22,9 +22,9 @@ import com.github.pagehelper.PageInfo;
 import org.apache.commons.lang.StringUtils;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
-import org.apache.submarine.server.workbench.database.mappers.SystemMapper;
-import org.apache.submarine.server.workbench.database.service.SysUserService;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.mappers.SystemMapper;
+import org.apache.submarine.server.database.workbench.service.SysUserService;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/TeamRestApi.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/TeamRestApi.java
index 2f11f527..2214467e 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/TeamRestApi.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/TeamRestApi.java
@@ -23,8 +23,8 @@ import com.github.pagehelper.PageInfo;
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
 import org.apache.submarine.server.rest.workbench.annotation.SubmarineApi;
-import org.apache.submarine.server.workbench.database.entity.TeamEntity;
-import org.apache.submarine.server.workbench.database.service.TeamService;
+import org.apache.submarine.server.database.workbench.entity.TeamEntity;
+import org.apache.submarine.server.database.workbench.service.TeamService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/response/DictAnnotation.java b/submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/response/DictAnnotation.java
index 07d0a29d..110cc0df 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/response/DictAnnotation.java
+++ b/submarine-server/server-core/src/main/java/org/apache/submarine/server/utils/response/DictAnnotation.java
@@ -22,9 +22,9 @@ import net.sf.cglib.beans.BeanGenerator;
 import net.sf.cglib.beans.BeanMap;
 import org.apache.commons.lang.StringUtils;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
-import org.apache.submarine.server.rest.workbench.annotation.Dict;
-import org.apache.submarine.server.workbench.database.entity.SysDictItemEntity;
-import org.apache.submarine.server.workbench.database.service.SysDictItemService;
+import org.apache.submarine.server.database.workbench.annotation.Dict;
+import org.apache.submarine.server.database.workbench.entity.SysDictItemEntity;
+import org.apache.submarine.server.database.workbench.service.SysDictItemService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/resources/hibernate.cfg.xml b/submarine-server/server-core/src/main/resources/hibernate.cfg.xml
deleted file mode 100644
index 318bc969..00000000
--- a/submarine-server/server-core/src/main/resources/hibernate.cfg.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one
-  or more contributor license agreements.  See the NOTICE file
-  distributed with this work for additional information
-  regarding copyright ownership.  The ASF licenses this file
-  to you under the Apache License, Version 2.0 (the
-  "License"); you may not use this file except in compliance
-  with the License.  You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing,
-  software distributed under the License is distributed on an
-  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  KIND, either express or implied.  See the License for the
-  specific language governing permissions and limitations
-  under the License.
--->
-<!DOCTYPE hibernate-configuration SYSTEM
-  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-<hibernate-configuration>
-  <session-factory>
-    <property name="hibernate.dialect">
-      org.hibernate.dialect.MySQL57Dialect
-    </property>
-    <property name="hibernate.connection.driver_class">
-      com.mysql.jdbc.Driver
-    </property>
-    <property name="hibernate.connection.url">
-      jdbc:mysql://127.0.0.1:3306/submarine?useUnicode=true&amp;characterEncoding=UTF-8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false&amp;allowMultiQueries=true
-    </property>
-    <property name="hibernate.connection.username">
-      submarine
-    </property>
-    <property name="hibernate.connection.password">
-      password
-    </property>
-    <!-- Echo all executed SQL to stdout -->
-    <property name="show_sql">true</property>
-    <!-- Validate schema matches to database -->
-    <property name="hibernate.hbm2ddl.auto">validate</property>
-  </session-factory>
-</hibernate-configuration>
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/internal/InternalServiceManagerTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/internal/InternalServiceManagerTest.java
index bc96300c..07e6babd 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/internal/InternalServiceManagerTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/internal/InternalServiceManagerTest.java
@@ -24,9 +24,9 @@ import org.apache.submarine.server.api.common.CustomResourceType;
 import org.apache.submarine.server.api.notebook.Notebook;
 import org.apache.submarine.server.api.notebook.NotebookId;
 import org.apache.submarine.server.api.spec.NotebookSpec;
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.service.ExperimentService;
-import org.apache.submarine.server.notebook.database.service.NotebookService;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.service.ExperimentService;
+import org.apache.submarine.server.database.notebook.service.NotebookService;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/experiment/ExperimentManagerTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/manager/ExperimentManagerTest.java
similarity index 97%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/experiment/ExperimentManagerTest.java
rename to submarine-server/server-core/src/test/java/org/apache/submarine/server/manager/ExperimentManagerTest.java
index 601f6c5d..92e5f723 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/experiment/ExperimentManagerTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/manager/ExperimentManagerTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experiment;
+package org.apache.submarine.server.manager;
 
 
 import com.google.gson.Gson;
@@ -28,8 +28,8 @@ import org.apache.submarine.server.api.Submitter;
 import org.apache.submarine.server.api.experiment.Experiment;
 import org.apache.submarine.server.api.experiment.ExperimentId;
 import org.apache.submarine.server.api.spec.ExperimentSpec;
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.service.ExperimentService;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.service.ExperimentService;
 import org.joda.time.DateTime;
 import org.junit.Before;
 import org.junit.Test;
@@ -159,7 +159,7 @@ public class ExperimentManagerTest {
     if (result.getCreatedTime() != null) {
       entity.setCreateTime(DateTime.parse(result.getCreatedTime()).toDate());
     } else {
-      entity.setCreateTime(null);  
+      entity.setCreateTime(null);
     }
     if (result.getAcceptedTime() != null) {
       entity.setAcceptedTime(DateTime.parse(result.getAcceptedTime()).toDate());
@@ -169,15 +169,15 @@ public class ExperimentManagerTest {
     if (result.getRunningTime() != null) {
       entity.setRunningTime(DateTime.parse(result.getRunningTime()).toDate());
     } else {
-      entity.setRunningTime(null);      
+      entity.setRunningTime(null);
     }
     if (result.getFinishedTime() != null) {
       entity.setFinishedTime(DateTime.parse(result.getFinishedTime()).toDate());
     } else {
       entity.setFinishedTime(null);
-    }    
+    }
     entity.setExperimentStatus(result.getStatus());
-    
+
     // Construct expected result
     Experiment expectedExperiment = new Experiment();
     expectedExperiment.setSpec(spec);
@@ -302,14 +302,14 @@ public class ExperimentManagerTest {
   private void verifyTimeResult(String expected, String actual) {
     if ((expected == null && actual == null) || ((expected != null && actual == null) ||
             (expected == null && actual != null))) {
-      assertEquals(expected, actual);   
+      assertEquals(expected, actual);
     } else {
       DateTime expectedTime = DateTime.parse(expected);
       DateTime actualTime = DateTime.parse(actual);
       assertTrue(expectedTime.isEqual(actualTime));
     }
   }
-  
+
   private Object buildFromJsonFile(Object obj, String filePath) throws SubmarineException {
     Gson gson = new GsonBuilder().create();
     try (Reader reader = Files.newBufferedReader(getCustomJobSpecFile(filePath).toPath(),
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ExperimentRestApiTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ExperimentRestApiTest.java
index a8ba16e7..af5c4860 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ExperimentRestApiTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ExperimentRestApiTest.java
@@ -32,7 +32,7 @@ import org.apache.submarine.server.api.spec.EnvironmentSpec;
 import org.apache.submarine.server.api.spec.ExperimentMeta;
 import org.apache.submarine.server.api.spec.ExperimentSpec;
 import org.apache.submarine.server.api.spec.KernelSpec;
-import org.apache.submarine.server.experiment.ExperimentManager;
+import org.apache.submarine.server.manager.ExperimentManager;
 import org.apache.submarine.server.utils.gson.ExperimentIdDeserializer;
 import org.apache.submarine.server.utils.gson.ExperimentIdSerializer;
 import org.junit.Ignore;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ModelVersionRestApiTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ModelVersionRestApiTest.java
index 9b7793a7..2a1bc63f 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ModelVersionRestApiTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/ModelVersionRestApiTest.java
@@ -34,10 +34,10 @@ import java.util.ArrayList;
 import java.util.List;
 import javax.ws.rs.core.Response;
 import org.apache.submarine.server.api.experiment.ExperimentId;
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.service.ModelVersionService;
-import org.apache.submarine.server.model.database.service.RegisteredModelService;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.service.ModelVersionService;
+import org.apache.submarine.server.database.model.service.RegisteredModelService;
 import org.apache.submarine.server.utils.gson.ExperimentIdDeserializer;
 import org.apache.submarine.server.utils.gson.ExperimentIdSerializer;
 
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/RegisteredModelRestApiTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/RegisteredModelRestApiTest.java
index 4b2d0cf7..c8535b9e 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/RegisteredModelRestApiTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/RegisteredModelRestApiTest.java
@@ -33,8 +33,8 @@ import java.util.ArrayList;
 import java.util.List;
 import javax.ws.rs.core.Response;
 import org.apache.submarine.server.api.experiment.ExperimentId;
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.service.RegisteredModelService;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.service.RegisteredModelService;
 import org.apache.submarine.server.utils.gson.ExperimentIdDeserializer;
 import org.apache.submarine.server.utils.gson.ExperimentIdSerializer;
 
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/CommonDataTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/CommonDataTest.java
index f223b0eb..f45c2f80 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/CommonDataTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/CommonDataTest.java
@@ -24,12 +24,12 @@ import com.google.gson.reflect.TypeToken;
 
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
-import org.apache.submarine.server.workbench.database.entity.SysDeptEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDeptTree;
-import org.apache.submarine.server.workbench.database.entity.SysDictEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDictItemEntity;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
-import org.apache.submarine.server.workbench.database.service.SysUserService;
+import org.apache.submarine.server.database.workbench.entity.SysDeptEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptTree;
+import org.apache.submarine.server.database.workbench.entity.SysDictEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDictItemEntity;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.service.SysUserService;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/utils/DictAnnotationTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/DictAnnotationTest.java
similarity index 92%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/utils/DictAnnotationTest.java
rename to submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/DictAnnotationTest.java
index 136bd00a..198466f9 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/utils/DictAnnotationTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/DictAnnotationTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.utils;
+package org.apache.submarine.server.rest.workbench;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -25,8 +25,6 @@ import com.google.gson.reflect.TypeToken;
 
 import org.apache.submarine.server.utils.response.DictAnnotation;
 import org.apache.submarine.server.utils.response.JsonResponse;
-import org.apache.submarine.server.rest.workbench.CommonDataTest;
-import org.apache.submarine.server.rest.workbench.SysUserRestApi;
 import org.junit.Test;
 
 import javax.ws.rs.core.Response;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDeptRestApiTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDeptRestApiTest.java
index f15d7f30..20ebf43a 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDeptRestApiTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDeptRestApiTest.java
@@ -23,8 +23,8 @@ import com.google.gson.GsonBuilder;
 
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
-import org.apache.submarine.server.workbench.database.entity.SysDeptEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDeptTree;
+import org.apache.submarine.server.database.workbench.entity.SysDeptEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptTree;
 import org.junit.After;
 import org.junit.Test;
 
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApiTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApiTest.java
index 76313773..5cf108dd 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApiTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictItemRestApiTest.java
@@ -24,8 +24,8 @@ import com.google.gson.reflect.TypeToken;
 
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
-import org.apache.submarine.server.workbench.database.entity.SysDictEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDictItemEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDictEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDictItemEntity;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictRestApiTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictRestApiTest.java
index 60bc75e5..3e68658e 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictRestApiTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysDictRestApiTest.java
@@ -24,7 +24,7 @@ import com.google.gson.reflect.TypeToken;
 
 import org.apache.submarine.server.utils.response.JsonResponse;
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
-import org.apache.submarine.server.workbench.database.entity.SysDictEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDictEntity;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysUserRestApiTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysUserRestApiTest.java
index 8cbecb20..7aa31db5 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysUserRestApiTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/rest/workbench/SysUserRestApiTest.java
@@ -21,8 +21,8 @@ package org.apache.submarine.server.rest.workbench;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import org.apache.commons.lang.time.DateUtils;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
-import org.apache.submarine.server.workbench.database.service.SysUserService;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.service.SysUserService;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/utils/response/JsonResponseTest.java b/submarine-server/server-core/src/test/java/org/apache/submarine/server/utils/response/JsonResponseTest.java
index 3f20ddcc..2bd2083c 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/utils/response/JsonResponseTest.java
+++ b/submarine-server/server-core/src/test/java/org/apache/submarine/server/utils/response/JsonResponseTest.java
@@ -22,7 +22,7 @@ import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 
 import org.apache.submarine.server.utils.response.JsonResponse.ListResult;
-import org.apache.submarine.server.workbench.database.entity.SysDictEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDictEntity;
 import org.junit.Test;
 
 import javax.ws.rs.core.Response;
diff --git a/submarine-server/server-database/pom.xml b/submarine-server/server-database/pom.xml
new file mode 100644
index 00000000..72ed97e3
--- /dev/null
+++ b/submarine-server/server-database/pom.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  -->
+
+<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">
+  <parent>
+    <artifactId>submarine-server</artifactId>
+    <groupId>org.apache.submarine</groupId>
+    <version>0.8.0-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>submarine-server-database</artifactId>
+  <name>Submarine: Server Database</name>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.submarine</groupId>
+      <artifactId>submarine-commons-runtime</artifactId>
+      <version>${project.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>com.google.code.findbugs</groupId>
+          <artifactId>jsr305</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.jcraft</groupId>
+          <artifactId>jsch</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.apache.commons</groupId>
+          <artifactId>commons-math3</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.codehaus.mojo</groupId>
+          <artifactId>animal-sniffer-annotations</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.google.errorprone</groupId>
+          <artifactId>error_prone_annotations</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-http</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-io</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-servlet</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-util</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-webapp</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.fasterxml.jackson.module</groupId>
+          <artifactId>jackson-module-jaxb-annotations</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.jersey</groupId>
+          <artifactId>jersey-core</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.jersey</groupId>
+          <artifactId>jersey-json</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.jersey</groupId>
+          <artifactId>jersey-server</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>com.sun.jersey</groupId>
+          <artifactId>jersey-client</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.eclipse.jetty</groupId>
+          <artifactId>jetty-server</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>javax.servlet</groupId>
+          <artifactId>servlet-api</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.ow2.asm</groupId>
+          <artifactId>asm</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>io.grpc</groupId>
+          <artifactId>grpc-protobuf</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <dependency>
+      <groupId>org.mybatis</groupId>
+      <artifactId>mybatis</artifactId>
+      <version>${mybatis.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.mybatis.generator</groupId>
+      <artifactId>mybatis-generator-core</artifactId>
+      <version>${mybatis-generator.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-annotations</artifactId>
+      <version>${jackson-annotations.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+      <version>${jackson-databind.version}</version>
+      <exclusions>
+        <exclusion>
+          <groupId>com.fasterxml.jackson.core</groupId>
+          <artifactId>jackson-annotations</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-core</artifactId>
+      <version>${jackson-core.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>com.google.code.gson</groupId>
+      <artifactId>gson</artifactId>
+      <version>${gson.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.submarine</groupId>
+      <artifactId>submarine-server-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>joda-time</groupId>
+      <artifactId>joda-time</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.ws.rs</groupId>
+      <artifactId>javax.ws.rs-api</artifactId>
+      <version>${javax.ws.rsapi.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>${junit.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <configuration>
+          <skip>false</skip>
+        </configuration>
+      </plugin>
+
+      <plugin>
+        <artifactId>maven-enforcer-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/database/entity/BaseEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/entity/BaseEntity.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/database/entity/BaseEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/entity/BaseEntity.java
index 507ee9c0..0828f7f7 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/database/entity/BaseEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/entity/BaseEntity.java
@@ -20,7 +20,7 @@ package org.apache.submarine.server.database.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.google.common.annotations.VisibleForTesting;
-import org.apache.submarine.server.workbench.database.utils.CustomJsonDateDeserializer;
+import org.apache.submarine.server.database.workbench.utils.CustomJsonDateDeserializer;
 
 import java.lang.reflect.Field;
 import java.util.Date;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/database/entity/EnvironmentEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/environment/entity/EnvironmentEntity.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/database/entity/EnvironmentEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/environment/entity/EnvironmentEntity.java
index 78d3ed0a..ff7befec 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/database/entity/EnvironmentEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/environment/entity/EnvironmentEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.environment.database.entity;
+package org.apache.submarine.server.database.environment.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/database/mappers/EnvironmentMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/environment/mappers/EnvironmentMapper.java
similarity index 89%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/database/mappers/EnvironmentMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/environment/mappers/EnvironmentMapper.java
index 43b1a3c4..800925f0 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/environment/database/mappers/EnvironmentMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/environment/mappers/EnvironmentMapper.java
@@ -16,9 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.environment.database.mappers;
 
-import org.apache.submarine.server.environment.database.entity.EnvironmentEntity;
+package org.apache.submarine.server.database.environment.mappers;
+
+import org.apache.submarine.server.database.environment.entity.EnvironmentEntity;
 
 import java.util.List;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/entity/ExperimentEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/entity/ExperimentEntity.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/entity/ExperimentEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/entity/ExperimentEntity.java
index 197ed01e..e0450fc2 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/entity/ExperimentEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/entity/ExperimentEntity.java
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experiment.database.entity;
+package org.apache.submarine.server.database.experiment.entity;
 
 import java.util.Date;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
-import org.apache.submarine.server.workbench.database.utils.CustomJsonDateDeserializer;
+import org.apache.submarine.server.database.workbench.utils.CustomJsonDateDeserializer;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/mappers/ExperimentMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/mappers/ExperimentMapper.java
similarity index 89%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/mappers/ExperimentMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/mappers/ExperimentMapper.java
index edefabbf..7b6c9033 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/mappers/ExperimentMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/mappers/ExperimentMapper.java
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experiment.database.mappers;
+package org.apache.submarine.server.database.experiment.mappers;
 
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
 
 import java.util.List;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/service/ExperimentService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/service/ExperimentService.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/service/ExperimentService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/service/ExperimentService.java
index b60eca81..c0b3397e 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experiment/database/service/ExperimentService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experiment/service/ExperimentService.java
@@ -17,13 +17,13 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experiment.database.service;
+package org.apache.submarine.server.database.experiment.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.mappers.ExperimentMapper;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.mappers.ExperimentMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/database/entity/ExperimentTemplateEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experimenttemplate/entity/ExperimentTemplateEntity.java
similarity index 93%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/database/entity/ExperimentTemplateEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experimenttemplate/entity/ExperimentTemplateEntity.java
index 55cb338f..00619359 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/database/entity/ExperimentTemplateEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experimenttemplate/entity/ExperimentTemplateEntity.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experimenttemplate.database.entity;
+package org.apache.submarine.server.database.experimenttemplate.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/database/mappers/ExperimentTemplateMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experimenttemplate/mappers/ExperimentTemplateMapper.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/database/mappers/ExperimentTemplateMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experimenttemplate/mappers/ExperimentTemplateMapper.java
index 553e05ce..21cafad0 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/experimenttemplate/database/mappers/ExperimentTemplateMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/experimenttemplate/mappers/ExperimentTemplateMapper.java
@@ -17,11 +17,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.experimenttemplate.database.mappers;
+package org.apache.submarine.server.database.experimenttemplate.mappers;
 
 import java.util.List;
 
-import org.apache.submarine.server.experimenttemplate.database.entity.ExperimentTemplateEntity;
+import org.apache.submarine.server.database.experimenttemplate.entity.ExperimentTemplateEntity;
 
 
 public interface ExperimentTemplateMapper {
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/ModelVersionEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/ModelVersionEntity.java
similarity index 98%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/ModelVersionEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/ModelVersionEntity.java
index 6e30209d..e5a945b5 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/ModelVersionEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/ModelVersionEntity.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.entities;
+package org.apache.submarine.server.database.model.entities;
 
 import java.sql.Timestamp;
 import java.util.List;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/ModelVersionTagEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/ModelVersionTagEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/ModelVersionTagEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/ModelVersionTagEntity.java
index b7b85f3e..1b0fbda3 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/ModelVersionTagEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/ModelVersionTagEntity.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.entities;
+package org.apache.submarine.server.database.model.entities;
 
 public class ModelVersionTagEntity {
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/RegisteredModelEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/RegisteredModelEntity.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/RegisteredModelEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/RegisteredModelEntity.java
index 9bfa0168..e52cac7d 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/RegisteredModelEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/RegisteredModelEntity.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.entities;
+package org.apache.submarine.server.database.model.entities;
 
 import java.sql.Timestamp;
 import java.util.List;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/RegisteredModelTagEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/RegisteredModelTagEntity.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/RegisteredModelTagEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/RegisteredModelTagEntity.java
index c8277244..bd3b0e65 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/entities/RegisteredModelTagEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/entities/RegisteredModelTagEntity.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.entities;
+package org.apache.submarine.server.database.model.entities;
 
 public class RegisteredModelTagEntity {
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/ModelVersionMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/ModelVersionMapper.java
similarity index 91%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/ModelVersionMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/ModelVersionMapper.java
index af7339c5..08c8f02c 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/ModelVersionMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/ModelVersionMapper.java
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.mappers;
+package org.apache.submarine.server.database.model.mappers;
 
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
 
 public interface ModelVersionMapper {
   List<ModelVersionEntity> selectAllVersions(String name);
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/ModelVersionTagMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/ModelVersionTagMapper.java
similarity index 88%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/ModelVersionTagMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/ModelVersionTagMapper.java
index 7611153c..e4008f17 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/ModelVersionTagMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/ModelVersionTagMapper.java
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.mappers;
+package org.apache.submarine.server.database.model.mappers;
 
-import org.apache.submarine.server.model.database.entities.ModelVersionTagEntity;
+import org.apache.submarine.server.database.model.entities.ModelVersionTagEntity;
 
 
 public interface ModelVersionTagMapper {
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/RegisteredModelMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/RegisteredModelMapper.java
similarity index 91%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/RegisteredModelMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/RegisteredModelMapper.java
index df107ed4..7a658b7e 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/RegisteredModelMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/RegisteredModelMapper.java
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.mappers;
+package org.apache.submarine.server.database.model.mappers;
 
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
 
 public interface RegisteredModelMapper {
   List<RegisteredModelEntity> selectAll();
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/RegisteredModelTagMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/RegisteredModelTagMapper.java
similarity index 88%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/RegisteredModelTagMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/RegisteredModelTagMapper.java
index 0ba67d5b..96bac7e4 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/mappers/RegisteredModelTagMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/mappers/RegisteredModelTagMapper.java
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.mappers;
+package org.apache.submarine.server.database.model.mappers;
 
-import org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity;
 
 
 public interface RegisteredModelTagMapper {
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/ModelVersionService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/ModelVersionService.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/ModelVersionService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/ModelVersionService.java
index 8588a2e2..a0560dcc 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/ModelVersionService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/ModelVersionService.java
@@ -17,13 +17,13 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.service;
+package org.apache.submarine.server.database.model.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
-import org.apache.submarine.server.model.database.mappers.ModelVersionMapper;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.mappers.ModelVersionMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/ModelVersionTagService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/ModelVersionTagService.java
similarity index 92%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/ModelVersionTagService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/ModelVersionTagService.java
index 937fcf83..de2d550e 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/ModelVersionTagService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/ModelVersionTagService.java
@@ -17,13 +17,13 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.service;
+package org.apache.submarine.server.database.model.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.model.database.entities.ModelVersionTagEntity;
-import org.apache.submarine.server.model.database.mappers.ModelVersionTagMapper;
+import org.apache.submarine.server.database.model.entities.ModelVersionTagEntity;
+import org.apache.submarine.server.database.model.mappers.ModelVersionTagMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/RegisteredModelService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/RegisteredModelService.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/RegisteredModelService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/RegisteredModelService.java
index 76ffd8ad..408bd719 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/RegisteredModelService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/RegisteredModelService.java
@@ -17,13 +17,13 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.service;
+package org.apache.submarine.server.database.model.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.mappers.RegisteredModelMapper;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.mappers.RegisteredModelMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/RegisteredModelTagService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/RegisteredModelTagService.java
similarity index 93%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/RegisteredModelTagService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/RegisteredModelTagService.java
index 400f764d..c36e3f79 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/model/database/service/RegisteredModelTagService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/model/service/RegisteredModelTagService.java
@@ -17,13 +17,13 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database.service;
+package org.apache.submarine.server.database.model.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.commons.utils.exception.SubmarineRuntimeException;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity;
-import org.apache.submarine.server.model.database.mappers.RegisteredModelTagMapper;
+import org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity;
+import org.apache.submarine.server.database.model.mappers.RegisteredModelTagMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/entity/NotebookEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/entity/NotebookEntity.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/entity/NotebookEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/entity/NotebookEntity.java
index 5590d4cf..4a5a5fc3 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/entity/NotebookEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/entity/NotebookEntity.java
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-package org.apache.submarine.server.notebook.database.entity;
+package org.apache.submarine.server.database.notebook.entity;
 
 import java.util.Date;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
-import org.apache.submarine.server.workbench.database.utils.CustomJsonDateDeserializer;
+import org.apache.submarine.server.database.workbench.utils.CustomJsonDateDeserializer;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/mappers/NotebookMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/mappers/NotebookMapper.java
similarity index 89%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/mappers/NotebookMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/mappers/NotebookMapper.java
index f29936a9..b5c626f8 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/mappers/NotebookMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/mappers/NotebookMapper.java
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-package org.apache.submarine.server.notebook.database.mappers;
+package org.apache.submarine.server.database.notebook.mappers;
 
-import org.apache.submarine.server.notebook.database.entity.NotebookEntity;
+import org.apache.submarine.server.database.notebook.entity.NotebookEntity;
 
 import java.util.List;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/service/NotebookService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/service/NotebookService.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/service/NotebookService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/service/NotebookService.java
index 68113098..c303fdcf 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/notebook/database/service/NotebookService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/notebook/service/NotebookService.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.notebook.database.service;
+package org.apache.submarine.server.database.notebook.service;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -29,8 +29,8 @@ import org.apache.submarine.server.api.notebook.Notebook;
 import org.apache.submarine.server.api.notebook.NotebookId;
 import org.apache.submarine.server.api.spec.NotebookSpec;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.notebook.database.entity.NotebookEntity;
-import org.apache.submarine.server.notebook.database.mappers.NotebookMapper;
+import org.apache.submarine.server.database.notebook.entity.NotebookEntity;
+import org.apache.submarine.server.database.notebook.mappers.NotebookMapper;
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/database/utils/MyBatisUtil.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/utils/MyBatisUtil.java
similarity index 100%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/database/utils/MyBatisUtil.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/utils/MyBatisUtil.java
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/annotation/Dict.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/annotation/Dict.java
similarity index 94%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/annotation/Dict.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/annotation/Dict.java
index 2d650079..a58b1eb5 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/rest/workbench/annotation/Dict.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/annotation/Dict.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.rest.workbench.annotation;
+package org.apache.submarine.server.database.workbench.annotation;
 
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/JobEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/JobEntity.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/JobEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/JobEntity.java
index e6621ac3..f1077004 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/JobEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/JobEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/MetricEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/MetricEntity.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/MetricEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/MetricEntity.java
index 6763a899..d30fbb47 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/MetricEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/MetricEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ParamEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ParamEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ParamEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ParamEntity.java
index 115d4c07..246c2337 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ParamEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ParamEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ProjectEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ProjectEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ProjectEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ProjectEntity.java
index 4e87c281..965d9930 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ProjectEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ProjectEntity.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
-import org.apache.submarine.server.rest.workbench.annotation.Dict;
+import org.apache.submarine.server.database.workbench.annotation.Dict;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ProjectFilesEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ProjectFilesEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ProjectFilesEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ProjectFilesEntity.java
index 80794f87..ffa5a828 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/ProjectFilesEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/ProjectFilesEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptEntity.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptEntity.java
index 581d92dc..f240e66f 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptSelectEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptSelectEntity.java
similarity index 97%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptSelectEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptSelectEntity.java
index e31bcd33..b679eed6 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptSelectEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptSelectEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptTree.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptTree.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptTree.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptTree.java
index 100646ba..616348f7 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDeptTree.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDeptTree.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDictEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDictEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDictEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDictEntity.java
index 2c8309c0..c0e7f0ab 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDictEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDictEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDictItemEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDictItemEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDictItemEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDictItemEntity.java
index 3172940b..ee97bce5 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysDictItemEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysDictItemEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysMessageEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysMessageEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysMessageEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysMessageEntity.java
index fab7e438..17da2181 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysMessageEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysMessageEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysUserEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysUserEntity.java
similarity index 94%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysUserEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysUserEntity.java
index d0fbfa85..203ea713 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/SysUserEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/SysUserEntity.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
-import org.apache.submarine.server.rest.workbench.annotation.Dict;
-import org.apache.submarine.server.workbench.database.utils.CustomJsonDateDeserializer;
+import org.apache.submarine.server.database.workbench.utils.CustomJsonDateDeserializer;
+import org.apache.submarine.server.database.workbench.annotation.Dict;
 
 import java.util.Date;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/TeamEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/TeamEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/TeamEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/TeamEntity.java
index e1a0e0cb..cb11ae46 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/TeamEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/TeamEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/TeamMemberEntity.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/TeamMemberEntity.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/TeamMemberEntity.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/TeamMemberEntity.java
index 6491a9e0..68d61346 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/entity/TeamMemberEntity.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/entity/TeamMemberEntity.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.entity;
+package org.apache.submarine.server.database.workbench.entity;
 
 import org.apache.submarine.server.database.entity.BaseEntity;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/JobMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/JobMapper.java
similarity index 91%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/JobMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/JobMapper.java
index f84ab3e0..14b77b4a 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/JobMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/JobMapper.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import org.apache.ibatis.session.RowBounds;
-import org.apache.submarine.server.workbench.database.entity.JobEntity;
+import org.apache.submarine.server.database.workbench.entity.JobEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/MetricMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/MetricMapper.java
similarity index 89%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/MetricMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/MetricMapper.java
index 32eb6f50..d3deb996 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/MetricMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/MetricMapper.java
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import java.util.List;
 
-import org.apache.submarine.server.workbench.database.entity.MetricEntity;
+import org.apache.submarine.server.database.workbench.entity.MetricEntity;
 
 public interface MetricMapper {
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ParamMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ParamMapper.java
similarity index 89%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ParamMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ParamMapper.java
index 28f566af..5d999a3e 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ParamMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ParamMapper.java
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import java.util.List;
 
-import org.apache.submarine.server.workbench.database.entity.ParamEntity;
+import org.apache.submarine.server.database.workbench.entity.ParamEntity;
 
 public interface ParamMapper {
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ProjectFilesMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ProjectFilesMapper.java
similarity index 91%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ProjectFilesMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ProjectFilesMapper.java
index a1f0a4ff..ac16137c 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ProjectFilesMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ProjectFilesMapper.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
-import org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity;
+import org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ProjectMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ProjectMapper.java
similarity index 91%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ProjectMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ProjectMapper.java
index 2b01e562..f2d38f69 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/ProjectMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/ProjectMapper.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import org.apache.ibatis.session.RowBounds;
-import org.apache.submarine.server.workbench.database.entity.ProjectEntity;
+import org.apache.submarine.server.database.workbench.entity.ProjectEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDeptMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDeptMapper.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDeptMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDeptMapper.java
index 6b61c7ab..0fded834 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDeptMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDeptMapper.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
-import org.apache.submarine.server.workbench.database.entity.SysDeptEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDictItemMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDictItemMapper.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDictItemMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDictItemMapper.java
index 597f955d..19171f52 100755
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDictItemMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDictItemMapper.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import org.apache.ibatis.session.RowBounds;
-import org.apache.submarine.server.workbench.database.entity.SysDictItemEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDictItemEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDictMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDictMapper.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDictMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDictMapper.java
index 1924455a..326382b7 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysDictMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysDictMapper.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import org.apache.ibatis.session.RowBounds;
-import org.apache.submarine.server.workbench.database.entity.SysDictEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDictEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysMessageMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysMessageMapper.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysMessageMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysMessageMapper.java
index c7d4c8ad..94b22106 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysMessageMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysMessageMapper.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
-import org.apache.submarine.server.workbench.database.entity.SysMessageEntity;
+import org.apache.submarine.server.database.workbench.entity.SysMessageEntity;
 
 public interface SysMessageMapper {
   int deleteByPrimaryKey(String id);
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysUserMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysUserMapper.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysUserMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysUserMapper.java
index af02d986..1528566a 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SysUserMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SysUserMapper.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import org.apache.ibatis.session.RowBounds;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SystemMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SystemMapper.java
similarity index 93%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SystemMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SystemMapper.java
index 0b5ffe60..e234308e 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/SystemMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/SystemMapper.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import java.util.Map;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/TeamMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/TeamMapper.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/TeamMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/TeamMapper.java
index c834ed65..9abd2323 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/TeamMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/TeamMapper.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
 import org.apache.ibatis.session.RowBounds;
-import org.apache.submarine.server.workbench.database.entity.TeamEntity;
+import org.apache.submarine.server.database.workbench.entity.TeamEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/TeamMemberMapper.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/TeamMemberMapper.java
similarity index 91%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/TeamMemberMapper.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/TeamMemberMapper.java
index 3d8317cd..e3a60b64 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/mappers/TeamMemberMapper.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/mappers/TeamMemberMapper.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.mappers;
+package org.apache.submarine.server.database.workbench.mappers;
 
-import org.apache.submarine.server.workbench.database.entity.TeamMemberEntity;
+import org.apache.submarine.server.database.workbench.entity.TeamMemberEntity;
 
 import java.util.List;
 import java.util.Map;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/JobService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/JobService.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/JobService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/JobService.java
index bb8074dd..268e48a7 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/JobService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/JobService.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.JobEntity;
-import org.apache.submarine.server.workbench.database.mappers.JobMapper;
+import org.apache.submarine.server.database.workbench.entity.JobEntity;
+import org.apache.submarine.server.database.workbench.mappers.JobMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/MetricService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/MetricService.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/MetricService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/MetricService.java
index 6bf2d42b..b245681b 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/MetricService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/MetricService.java
@@ -17,11 +17,11 @@
  * under the License.
  */
 
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.MetricEntity;
-import org.apache.submarine.server.workbench.database.mappers.MetricMapper;
+import org.apache.submarine.server.database.workbench.entity.MetricEntity;
+import org.apache.submarine.server.database.workbench.mappers.MetricMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ParamService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ParamService.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ParamService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ParamService.java
index f3e59397..acf48048 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ParamService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ParamService.java
@@ -16,14 +16,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import java.util.List;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.ParamEntity;
-import org.apache.submarine.server.workbench.database.mappers.ParamMapper;
+import org.apache.submarine.server.database.workbench.entity.ParamEntity;
+import org.apache.submarine.server.database.workbench.mappers.ParamMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ProjectFilesService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ProjectFilesService.java
similarity index 90%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ProjectFilesService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ProjectFilesService.java
index aeddba2e..6273b750 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ProjectFilesService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ProjectFilesService.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity;
-import org.apache.submarine.server.workbench.database.mappers.ProjectFilesMapper;
+import org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity;
+import org.apache.submarine.server.database.workbench.mappers.ProjectFilesMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ProjectService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ProjectService.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ProjectService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ProjectService.java
index 11e74c8d..030e1b17 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/ProjectService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/ProjectService.java
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.ProjectEntity;
-import org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity;
-import org.apache.submarine.server.workbench.database.mappers.ProjectFilesMapper;
-import org.apache.submarine.server.workbench.database.mappers.ProjectMapper;
+import org.apache.submarine.server.database.workbench.entity.ProjectEntity;
+import org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity;
+import org.apache.submarine.server.database.workbench.mappers.ProjectFilesMapper;
+import org.apache.submarine.server.database.workbench.mappers.ProjectMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysDictItemService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysDictItemService.java
similarity index 85%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysDictItemService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysDictItemService.java
index 5e87d5d8..7163c01c 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysDictItemService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysDictItemService.java
@@ -16,20 +16,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.rest.workbench.SysDictRestApi;
-import org.apache.submarine.server.workbench.database.entity.SysDictItemEntity;
-import org.apache.submarine.server.workbench.database.mappers.SysDictItemMapper;
+import org.apache.submarine.server.database.workbench.entity.SysDictItemEntity;
+import org.apache.submarine.server.database.workbench.mappers.SysDictItemMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.List;
 
 public class SysDictItemService {
-  private static final Logger LOG = LoggerFactory.getLogger(SysDictRestApi.class);
+  private static final Logger LOG = LoggerFactory.getLogger(SysDictItemService.class);
 
   public List<SysDictItemEntity> queryDictByCode(String dictCode) {
     List<SysDictItemEntity> dictItems = null;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysMessageService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysMessageService.java
similarity index 89%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysMessageService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysMessageService.java
index 35ce9a3d..7db43fbc 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysMessageService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysMessageService.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.SysMessageEntity;
-import org.apache.submarine.server.workbench.database.mappers.SysMessageMapper;
+import org.apache.submarine.server.database.workbench.entity.SysMessageEntity;
+import org.apache.submarine.server.database.workbench.mappers.SysMessageMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysUserService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysUserService.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysUserService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysUserService.java
index 7bc3be19..91d2c12e 100755
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/SysUserService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/SysUserService.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
-import org.apache.submarine.server.workbench.database.mappers.SysUserMapper;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.mappers.SysUserMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,7 +34,7 @@ public class SysUserService {
   private static final Logger LOG = LoggerFactory.getLogger(SysUserService.class);
 
   private static String GET_USER_BY_NAME_STATEMENT
-      = "org.apache.submarine.server.workbench.database.mappers.SysUserMapper.getUserByName";
+      = "org.apache.submarine.server.database.workbench.mappers.SysUserMapper.getUserByName";
 
   public SysUserEntity getUserByName(String name, String password) throws Exception {
     SysUserEntity sysUser = null;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/TeamMemberService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/TeamMemberService.java
similarity index 93%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/TeamMemberService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/TeamMemberService.java
index 04b6d84a..f83bfcf3 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/TeamMemberService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/TeamMemberService.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.TeamMemberEntity;
-import org.apache.submarine.server.workbench.database.mappers.TeamMemberMapper;
+import org.apache.submarine.server.database.workbench.entity.TeamMemberEntity;
+import org.apache.submarine.server.database.workbench.mappers.TeamMemberMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/TeamService.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/TeamService.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/TeamService.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/TeamService.java
index 8ef09d30..e2463083 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/service/TeamService.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/service/TeamService.java
@@ -16,15 +16,15 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.submarine.server.database.utils.MyBatisUtil;
-import org.apache.submarine.server.workbench.database.entity.TeamEntity;
-import org.apache.submarine.server.workbench.database.entity.TeamMemberEntity;
-import org.apache.submarine.server.workbench.database.mappers.TeamMapper;
-import org.apache.submarine.server.workbench.database.mappers.TeamMemberMapper;
+import org.apache.submarine.server.database.workbench.entity.TeamEntity;
+import org.apache.submarine.server.database.workbench.entity.TeamMemberEntity;
+import org.apache.submarine.server.database.workbench.mappers.TeamMapper;
+import org.apache.submarine.server.database.workbench.mappers.TeamMemberMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/CustomJsonDateDeserializer.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/CustomJsonDateDeserializer.java
similarity index 96%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/CustomJsonDateDeserializer.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/CustomJsonDateDeserializer.java
index 30cb6f0f..3dc0e45a 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/CustomJsonDateDeserializer.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/CustomJsonDateDeserializer.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.utils;
+package org.apache.submarine.server.database.workbench.utils;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/DepartmentUtil.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/DepartmentUtil.java
similarity index 94%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/DepartmentUtil.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/DepartmentUtil.java
index 2fd0c0a8..61a60a8d 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/DepartmentUtil.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/DepartmentUtil.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.utils;
+package org.apache.submarine.server.database.workbench.utils;
 
-import org.apache.submarine.server.workbench.database.entity.SysDeptSelectEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDeptTree;
-import org.apache.submarine.server.workbench.database.entity.SysDeptEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptSelectEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptTree;
+import org.apache.submarine.server.database.workbench.entity.SysDeptEntity;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/MybatisGenerator.java b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/MybatisGenerator.java
similarity index 95%
rename from submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/MybatisGenerator.java
rename to submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/MybatisGenerator.java
index 5636ce4b..eb3b453a 100644
--- a/submarine-server/server-core/src/main/java/org/apache/submarine/server/workbench/database/utils/MybatisGenerator.java
+++ b/submarine-server/server-database/src/main/java/org/apache/submarine/server/database/workbench/utils/MybatisGenerator.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.utils;
+package org.apache.submarine.server.database.workbench.utils;
 
-import org.apache.submarine.server.workbench.database.service.TeamService;
+import org.apache.submarine.server.database.workbench.service.TeamService;
 import org.mybatis.generator.api.MyBatisGenerator;
 import org.mybatis.generator.config.Configuration;
 import org.mybatis.generator.config.xml.ConfigurationParser;
diff --git a/submarine-server/server-database/src/main/resources/log4j.properties b/submarine-server/server-database/src/main/resources/log4j.properties
new file mode 100644
index 00000000..55e02b6d
--- /dev/null
+++ b/submarine-server/server-database/src/main/resources/log4j.properties
@@ -0,0 +1,17 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License. See accompanying LICENSE file.
+log4j.rootLogger = info, stdout
+
+log4j.appender.stdout = org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target = System.out
+log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
diff --git a/submarine-server/server-core/src/main/resources/mbgConfiguration.xml b/submarine-server/server-database/src/main/resources/mbgConfiguration.xml
similarity index 100%
rename from submarine-server/server-core/src/main/resources/mbgConfiguration.xml
rename to submarine-server/server-database/src/main/resources/mbgConfiguration.xml
diff --git a/submarine-server/server-core/src/main/resources/mybatis-config-metastore.xml b/submarine-server/server-database/src/main/resources/mybatis-config-metastore.xml
similarity index 100%
rename from submarine-server/server-core/src/main/resources/mybatis-config-metastore.xml
rename to submarine-server/server-database/src/main/resources/mybatis-config-metastore.xml
diff --git a/submarine-server/server-core/src/main/resources/mybatis-config.xml b/submarine-server/server-database/src/main/resources/mybatis-config.xml
similarity index 100%
rename from submarine-server/server-core/src/main/resources/mybatis-config.xml
rename to submarine-server/server-database/src/main/resources/mybatis-config.xml
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/EnvironmentMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/EnvironmentMapper.xml
similarity index 90%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/EnvironmentMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/EnvironmentMapper.xml
index 4d870b75..6577024e 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/EnvironmentMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/EnvironmentMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.environment.database.mappers.EnvironmentMapper">
+<mapper namespace="org.apache.submarine.server.database.environment.mappers.EnvironmentMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
   	<id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.environment.database.entity.EnvironmentEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.environment.entity.EnvironmentEntity" extends="BaseEntityResultMap">
     <result column="environment_name" jdbcType="VARCHAR" property="environmentName" />
     <result column="environment_spec" jdbcType="VARCHAR" property="environmentSpec" />
   </resultMap>
@@ -54,14 +54,14 @@
     where environment_name = #{environment_name,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.environment.database.entity.EnvironmentEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.environment.entity.EnvironmentEntity">
     insert into environment (id, environment_name, environment_spec,
       create_by, create_time, update_by, update_time)
     values (#{id,jdbcType=VARCHAR}, #{environmentName,jdbcType=VARCHAR}, #{environmentSpec,jdbcType=VARCHAR},
      #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now())
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.environment.database.entity.EnvironmentEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.environment.entity.EnvironmentEntity">
     update environment
     <set>
       <if test="environmentSpec != null">
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ExperimentMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ExperimentMapper.xml
similarity index 93%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ExperimentMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ExperimentMapper.xml
index 17996f5a..58a23d65 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ExperimentMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ExperimentMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.experiment.database.mappers.ExperimentMapper">
+<mapper namespace="org.apache.submarine.server.database.experiment.mappers.ExperimentMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="ExperimentEntityResultMap" type="org.apache.submarine.server.experiment.database.entity.ExperimentEntity" extends="BaseEntityResultMap">
+  <resultMap id="ExperimentEntityResultMap" type="org.apache.submarine.server.database.experiment.entity.ExperimentEntity" extends="BaseEntityResultMap">
     <result column="experiment_spec" jdbcType="VARCHAR" property="experimentSpec" />
     <result column="experiment_status" property="experimentStatus"/>
     <result column="accepted_time" property="acceptedTime"/>
@@ -58,14 +58,14 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.experiment.database.entity.ExperimentEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.experiment.entity.ExperimentEntity">
     insert into experiment (id, experiment_spec, create_by, create_time, update_by, update_time, experiment_status, accepted_time, running_time, finished_time, uid)
     values (#{id,jdbcType=VARCHAR}, #{experimentSpec,jdbcType=VARCHAR},
             #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now(), #{experimentStatus,jdbcType=VARCHAR},
             #{acceptedTime,jdbcType=TIMESTAMP}, #{runningTime,jdbcType=TIMESTAMP}, #{finishedTime,jdbcType=TIMESTAMP}, #{uid,jdbcType=VARCHAR})
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.experiment.database.entity.ExperimentEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.experiment.entity.ExperimentEntity">
     update experiment
     <set>
       <if test="experimentSpec != null and experimentStatus != null">
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ExperimentTemplateMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ExperimentTemplateMapper.xml
similarity index 88%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ExperimentTemplateMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ExperimentTemplateMapper.xml
index 9643b57e..901b3deb 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ExperimentTemplateMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ExperimentTemplateMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.experimenttemplate.database.mappers.ExperimentTemplateMapper">
+<mapper namespace="org.apache.submarine.server.database.experimenttemplate.mappers.ExperimentTemplateMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
   	<id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.experimenttemplate.database.entity.ExperimentTemplateEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.experimenttemplate.entity.ExperimentTemplateEntity" extends="BaseEntityResultMap">
     <result column="experimentTemplate_name" jdbcType="VARCHAR" property="experimentTemplateName" />
     <result column="experimentTemplate_spec" jdbcType="VARCHAR" property="experimentTemplateSpec" />
   </resultMap>
@@ -48,7 +48,7 @@
     where experimentTemplate_name = #{experimentTemplate_name,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.experimenttemplate.database.entity.ExperimentTemplateEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.experimenttemplate.entity.ExperimentTemplateEntity">
     insert into experiment_template (id, experimentTemplate_name, experimentTemplate_spec,
       create_by, create_time, update_by, update_time)
     values (#{id,jdbcType=VARCHAR}, 
@@ -57,7 +57,7 @@
     #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now())
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.experimenttemplate.database.entity.ExperimentTemplateEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.experimenttemplate.entity.ExperimentTemplateEntity">
     update experiment_template
     <set>
       <if test="experimentTemplateSpec != null">
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/JobMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/JobMapper.xml
similarity index 94%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/JobMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/JobMapper.xml
index de9fdf62..ecc1b7bd 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/JobMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/JobMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.JobMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.JobMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.JobEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.JobEntity" extends="BaseEntityResultMap">
     <result column="job_id" jdbcType="VARCHAR" property="jobId" />
     <result column="job_name" jdbcType="VARCHAR" property="jobName" />
     <result column="job_type" jdbcType="VARCHAR" property="jobType" />
@@ -75,7 +75,7 @@
     where job_id = #{jobId,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.JobEntity"
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.JobEntity"
           useGeneratedKeys="true" keyProperty="id">
     insert into job (job_id, job_name, job_type, job_namespace,
       job_status, job_final_status, user_name,
@@ -86,7 +86,7 @@
       #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now())
   </insert>
 
-  <insert id="insertSelective" parameterType="org.apache.submarine.server.workbench.database.entity.JobEntity">
+  <insert id="insertSelective" parameterType="org.apache.submarine.server.database.workbench.entity.JobEntity">
     insert into job
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -166,7 +166,7 @@
     </trim>
   </insert>
 
-  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.workbench.database.entity.JobEntity">
+  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.database.workbench.entity.JobEntity">
     update job
     <set>
       <if test="jobId != null">
@@ -201,7 +201,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </update>
 
-  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.workbench.database.entity.JobEntity">
+  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.database.workbench.entity.JobEntity">
     update job
     set job_id = #{jobId,jdbcType=VARCHAR},
       job_name = #{jobName,jdbcType=VARCHAR},
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/MetricMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/MetricMapper.xml
similarity index 92%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/MetricMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/MetricMapper.xml
index 2b52917e..ed3e2c54 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/MetricMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/MetricMapper.xml
@@ -18,12 +18,12 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.MetricMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.MetricMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.MetricEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.MetricEntity" extends="BaseEntityResultMap">
     <result column="key" jdbcType="VARCHAR" property="key" />
     <result column="value" jdbcType="FLOAT" property="value" />
     <result column="worker_index" jdbcType="VARCHAR" property="workerIndex" />
@@ -56,7 +56,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.MetricEntity"
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.MetricEntity"
           keyProperty="id, key, worker_index, timestamp">
     insert into metric (id, `key`, value, worker_index, timestamp, step, is_nan)
     values (#{id,jdbcType=VARCHAR},
@@ -68,7 +68,7 @@
       #{isNan,jdbcType=BOOLEAN})
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.workbench.database.entity.MetricEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.workbench.entity.MetricEntity">
     update metric
     set `key` = #{key,jdbcType=VARCHAR},
       value = #{value,jdbcType=FLOAT},
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ModelVersionMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ModelVersionMapper.xml
similarity index 93%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ModelVersionMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ModelVersionMapper.xml
index ad878796..e16e95ae 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ModelVersionMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ModelVersionMapper.xml
@@ -18,8 +18,8 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.model.database.mappers.ModelVersionMapper">
-  <resultMap id="resultMap" type="org.apache.submarine.server.model.database.entities.ModelVersionEntity">
+<mapper namespace="org.apache.submarine.server.database.model.mappers.ModelVersionMapper">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.model.entities.ModelVersionEntity">
     <result column="name" property="name" />
     <result column="version" property="version" />
     <result column="id" property="id" />
@@ -33,7 +33,7 @@
     <result column="description" property="description" />
   </resultMap>
 
-  <resultMap id="resultMapWithTag" type="org.apache.submarine.server.model.database.entities.ModelVersionEntity">
+  <resultMap id="resultMapWithTag" type="org.apache.submarine.server.database.model.entities.ModelVersionEntity">
     <result column="name" property="name" />
     <result column="version" property="version" />
     <result column="id" property="id" />
@@ -76,7 +76,7 @@
     where mv.name = #{name,jdbcType=VARCHAR}
   </select>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.model.database.entities.ModelVersionEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.model.entities.ModelVersionEntity">
     insert into model_version (name, version, id, user_id, experiment_id, model_type, current_stage, creation_time, last_updated_time, dataset, description)
     values (#{name,jdbcType=VARCHAR}, #{version,jdbcType=INTEGER}, #{id,jdbcType=VARCHAR}, #{userId,jdbcType=VARCHAR},
             #{experimentId,jdbcType=VARCHAR}, #{modelType,jdbcType=VARCHAR}, #{currentStage,jdbcType=VARCHAR},
@@ -89,7 +89,7 @@
     </if>
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.model.database.entities.ModelVersionEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.model.entities.ModelVersionEntity">
     update model_version
     <set>
       <if test="currentStage != null">
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ModelVersionTagMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ModelVersionTagMapper.xml
similarity index 87%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ModelVersionTagMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ModelVersionTagMapper.xml
index a76f4eeb..7719f8cd 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ModelVersionTagMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ModelVersionTagMapper.xml
@@ -18,8 +18,8 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.model.database.mappers.ModelVersionTagMapper">
-  <resultMap id="resultMap" type="org.apache.submarine.server.model.database.entities.ModelVersionTagEntity">
+<mapper namespace="org.apache.submarine.server.database.model.mappers.ModelVersionTagMapper">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.model.entities.ModelVersionTagEntity">
     <result column="name" property="name" />
     <result column="tag" property="tag" />
   </resultMap>
@@ -33,7 +33,7 @@
     where name = #{name,jdbcType=VARCHAR} AND tag = #{tag,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.model.database.entities.ModelVersionTagEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.model.entities.ModelVersionTagEntity">
     insert into model_version_tag (name, version, tag)
     values (#{name,jdbcType=VARCHAR}, #{version,jdbcType=INTEGER}, #{tag,jdbcType=VARCHAR})
   </insert>
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/NotebookMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/NotebookMapper.xml
similarity index 94%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/NotebookMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/NotebookMapper.xml
index 0d5ceaca..578fb499 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/NotebookMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/NotebookMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.notebook.database.mappers.NotebookMapper">
+<mapper namespace="org.apache.submarine.server.database.notebook.mappers.NotebookMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="NotebookEntityResultMap" type="org.apache.submarine.server.notebook.database.entity.NotebookEntity" extends="BaseEntityResultMap">
+  <resultMap id="NotebookEntityResultMap" type="org.apache.submarine.server.database.notebook.entity.NotebookEntity" extends="BaseEntityResultMap">
     <result column="notebook_spec" jdbcType="VARCHAR" property="notebookSpec" />
     <result column="notebook_status" jdbcType="VARCHAR" property="notebookStatus" />
     <result column="notebook_url" jdbcType="VARCHAR" property="notebookUrl" />
@@ -57,7 +57,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.notebook.database.entity.NotebookEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.notebook.entity.NotebookEntity">
     insert into notebook (id, notebook_spec, create_by, create_time, update_by, update_time,
      notebook_status, notebook_url, reason, deleted_time)
     values (#{id,jdbcType=VARCHAR}, #{notebookSpec,jdbcType=VARCHAR},
@@ -66,7 +66,7 @@
             #{reason,jdbcType=VARCHAR},null)
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.notebook.database.entity.NotebookEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.notebook.entity.NotebookEntity">
     update notebook
     <set>
       <if test="notebookSpec != null and notebookStatus != null">
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ParamMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ParamMapper.xml
similarity index 90%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ParamMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ParamMapper.xml
index 770ada2f..f500ccdb 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ParamMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ParamMapper.xml
@@ -18,12 +18,12 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.ParamMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.ParamMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.ParamEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.ParamEntity" extends="BaseEntityResultMap">
     <result column="key" jdbcType="VARCHAR" property="key" />
     <result column="value" jdbcType="FLOAT" property="value" />
     <result column="worker_index" jdbcType="VARCHAR" property="workerIndex" />
@@ -53,13 +53,13 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.ParamEntity"
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.ParamEntity"
           keyProperty="id, key, worker_index">
     insert into param (id, `key`, value, worker_index)
     values (#{id,jdbcType=VARCHAR}, #{key,jdbcType=VARCHAR}, #{value,jdbcType=FLOAT}, #{workerIndex,jdbcType=VARCHAR})
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.workbench.database.entity.ParamEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.workbench.entity.ParamEntity">
     update param
     set `key` = #{key,jdbcType=VARCHAR},
       value = #{value,jdbcType=FLOAT},
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ProjectFilesMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ProjectFilesMapper.xml
similarity index 91%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ProjectFilesMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ProjectFilesMapper.xml
index 25acbdce..df18b56d 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ProjectFilesMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ProjectFilesMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.ProjectFilesMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.ProjectFilesMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity" extends="BaseEntityResultMap">
     <result column="project_id" jdbcType="VARCHAR" property="projectId" />
     <result column="file_name" jdbcType="VARCHAR" property="fileName" />
     <result column="file_content" jdbcType="LONGVARCHAR" property="fileContent" />
@@ -59,7 +59,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <delete id="deleteSelective" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity">
+  <delete id="deleteSelective" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity">
     delete from project_files
     where 1 = 1
     <if test="projectId != null">
@@ -67,7 +67,7 @@
     </if>
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity">
     <selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
       SELECT REPLACE(UUID(),"-","")
     </selectKey>
@@ -77,7 +77,7 @@
       #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now(), #{fileContent,jdbcType=LONGVARCHAR})
   </insert>
 
-  <insert id="insertSelective" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity">
+  <insert id="insertSelective" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity">
     insert into project_files
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -123,7 +123,7 @@
     </trim>
   </insert>
 
-  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity">
+  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity">
     update project_files
     <set>
       <if test="projectId != null">
@@ -145,7 +145,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </update>
 
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity">
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity">
     update project_files
     set project_id = #{projectId,jdbcType=VARCHAR},
       file_name = #{fileName,jdbcType=VARCHAR},
@@ -157,7 +157,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </update>
 
-  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity">
+  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity">
     update project_files
     set project_id = #{projectId,jdbcType=VARCHAR},
       file_name = #{fileName,jdbcType=VARCHAR},
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ProjectMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ProjectMapper.xml
similarity index 94%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ProjectMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ProjectMapper.xml
index af1809a7..cfded7d4 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/ProjectMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/ProjectMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.ProjectMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.ProjectMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.ProjectEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.ProjectEntity" extends="BaseEntityResultMap">
     <result column="name" jdbcType="VARCHAR" property="name" />
     <result column="visibility" jdbcType="VARCHAR" property="visibility" />
     <result column="permission" jdbcType="VARCHAR" property="permission" />
@@ -63,7 +63,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectEntity">
     <selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
       SELECT REPLACE(UUID(),"-","")
     </selectKey>
@@ -77,7 +77,7 @@
       #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now())
   </insert>
 
-  <insert id="insertSelective" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectEntity">
+  <insert id="insertSelective" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectEntity">
     insert into project
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -157,7 +157,7 @@
     </trim>
   </insert>
 
-  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectEntity">
+  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectEntity">
     update project
     <set>
       <if test="name != null">
@@ -189,7 +189,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </update>
 
-  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.workbench.database.entity.ProjectEntity">
+  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.database.workbench.entity.ProjectEntity">
     update project
     set name = #{name,jdbcType=VARCHAR},
       visibility = #{visibility,jdbcType=VARCHAR},
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelMapper.xml
similarity index 90%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelMapper.xml
index 6c5ecb43..eb165858 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelMapper.xml
@@ -18,20 +18,20 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.model.database.mappers.RegisteredModelMapper">
-  <resultMap id="RegisteredModelTagMap" type="org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity">
+<mapper namespace="org.apache.submarine.server.database.model.mappers.RegisteredModelMapper">
+  <resultMap id="RegisteredModelTagMap" type="org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity">
     <result column="name" property="name" />
     <result column="tag" property="tag" />
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.model.database.entities.RegisteredModelEntity">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.model.entities.RegisteredModelEntity">
     <result column="name" property="name" />
     <result column="creation_time" property="creationTime" />
     <result column="last_updated_time" property="lastUpdatedTime" />
     <result column="description" property="description" />
   </resultMap>
 
-  <resultMap id="resultMapWithTag" type="org.apache.submarine.server.model.database.entities.RegisteredModelEntity">
+  <resultMap id="resultMapWithTag" type="org.apache.submarine.server.database.model.entities.RegisteredModelEntity">
     <result column="name" property="name" />
     <result column="creation_time" property="creationTime" />
     <result column="last_updated_time" property="lastUpdatedTime" />
@@ -63,7 +63,7 @@
     from registered_model rm left join registered_model_tag tag on tag.name = rm.name
   </select>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.model.database.entities.RegisteredModelEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.model.entities.RegisteredModelEntity">
     insert into registered_model (name, creation_time, last_updated_time, description)
     values (#{name,jdbcType=VARCHAR}, NOW(3), NOW(3), #{description,jdbcType=VARCHAR});
     <if test="tags != null and !tags.isEmpty()">
@@ -74,7 +74,7 @@
     </if>
   </insert>
 
-  <update id="update" parameterType="org.apache.submarine.server.model.database.entities.RegisteredModelEntity">
+  <update id="update" parameterType="org.apache.submarine.server.database.model.entities.RegisteredModelEntity">
     update registered_model
     <set>
       <if test="description != null">
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelTagMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelTagMapper.xml
similarity index 84%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelTagMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelTagMapper.xml
index b9993c36..9f4afea9 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelTagMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/RegisteredModelTagMapper.xml
@@ -18,8 +18,8 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.model.database.mappers.RegisteredModelTagMapper">
-  <resultMap id="resultMap" type="org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity">
+<mapper namespace="org.apache.submarine.server.database.model.mappers.RegisteredModelTagMapper">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity">
     <result column="name" property="name" />
     <result column="tag" property="tag" />
   </resultMap>
@@ -28,12 +28,12 @@
     name, tag
   </sql>
 
-  <delete id="delete" parameterType="org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity">
+  <delete id="delete" parameterType="org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity">
     delete from registered_model_tag
     where name = #{name,jdbcType=VARCHAR} AND tag = #{tag,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity">
     insert into registered_model_tag (name, tag)
     values (#{name,jdbcType=VARCHAR}, #{tag,jdbcType=VARCHAR})
   </insert>
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDeptMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDeptMapper.xml
similarity index 92%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDeptMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDeptMapper.xml
index 949aba8a..a11ee519 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDeptMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDeptMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.SysDeptMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.SysDeptMapper">
 
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id" />
@@ -28,7 +28,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.SysDeptEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.SysDeptEntity" extends="BaseEntityResultMap">
     <result column="dept_code" property="deptCode"/>
     <result column="dept_name" property="deptName"/>
     <result column="parent_code" property="parentCode"/>
@@ -47,7 +47,7 @@
     ORDER BY a.sort_order
   </select>
 
-  <insert id="add" parameterType="org.apache.submarine.server.workbench.database.entity.SysDeptEntity">
+  <insert id="add" parameterType="org.apache.submarine.server.database.workbench.entity.SysDeptEntity">
     <selectKey keyProperty="id" resultType="String" order="BEFORE">
       select REPLACE(UUID(),"-","")
     </selectKey>
@@ -72,7 +72,7 @@
     DELETE FROM sys_department WHERE id = #{id}
   </delete>
 
-  <update id="updateBy" parameterType="org.apache.submarine.server.workbench.database.entity.SysDeptEntity">
+  <update id="updateBy" parameterType="org.apache.submarine.server.database.workbench.entity.SysDeptEntity">
     UPDATE sys_department SET
     <if test="deptCode!=null and deptCode!=''">`dept_code` = #{deptCode},</if>
     <if test="deptName!=null and deptName!=''">`dept_name` = #{deptName},</if>
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDictItemMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDictItemMapper.xml
similarity index 92%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDictItemMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDictItemMapper.xml
index 3abff048..731bb700 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDictItemMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDictItemMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.SysDictItemMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.SysDictItemMapper">
 
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id" />
@@ -35,7 +35,7 @@
     <if test="itemName!=null and itemName!=''"> AND `item_name` like '%${itemName}%'</if>
     ORDER BY sort_order
   </select>
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.SysDictItemEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.SysDictItemEntity" extends="BaseEntityResultMap">
     <result column="dict_code" property="dictCode"/>
     <result column="item_code" property="itemCode"/>
     <result column="item_name" property="itemName"/>
@@ -44,7 +44,7 @@
     <result column="deleted" property="deleted"/>
   </resultMap>
 
-  <insert id="insertSysDictItem" parameterType="org.apache.submarine.server.workbench.database.entity.SysDictItemEntity">
+  <insert id="insertSysDictItem" parameterType="org.apache.submarine.server.database.workbench.entity.SysDictItemEntity">
     INSERT INTO sys_dict_item (`id`, `dict_code`, `item_code`, `item_name`, `description`,
     <if test="sortOrder!=null"> `sort_order`, </if>
     <if test="deleted!=null"> `deleted`, </if>
@@ -63,7 +63,7 @@
     DELETE FROM sys_dict_item WHERE id = #{id}
   </delete>
 
-  <update id="updateBy" parameterType="org.apache.submarine.server.workbench.database.entity.SysDictItemEntity">
+  <update id="updateBy" parameterType="org.apache.submarine.server.database.workbench.entity.SysDictItemEntity">
     UPDATE sys_dict_item SET
     <if test="dictCode!=null and dictCode!=''">`dict_code` = #{dictCode},</if>
     <if test="itemCode!=null and itemCode!=''">`item_code` = #{itemCode},</if>
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDictMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDictMapper.xml
similarity index 91%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDictMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDictMapper.xml
index 9fa496f4..55db3a9b 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysDictMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysDictMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.SysDictMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.SysDictMapper">
 
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
@@ -35,7 +35,7 @@
     <if test="dictName!=null and dictName!=''">AND `dict_name` like '%${dictName}%'</if>
     ORDER BY id
   </select>
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.SysDictEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.SysDictEntity" extends="BaseEntityResultMap">
     <result column="dict_code" property="dictCode"/>
     <result column="dict_name" property="dictName"/>
     <result column="description" property="description"/>
@@ -43,7 +43,7 @@
     <result column="type" property="type"/>
   </resultMap>
 
-  <insert id="insertSysDict" parameterType="org.apache.submarine.server.workbench.database.entity.SysDictEntity">
+  <insert id="insertSysDict" parameterType="org.apache.submarine.server.database.workbench.entity.SysDictEntity">
     INSERT INTO sys_dict(`id`, `dict_code`, `dict_name`, `description`,
     <if test="deleted!=null">`deleted`,</if>
     <if test="type!=null">`type`,</if>
@@ -71,7 +71,7 @@
     DELETE FROM sys_dict WHERE id = #{id}
   </delete>
 
-  <update id="updateBy" parameterType="org.apache.submarine.server.workbench.database.entity.SysDictEntity">
+  <update id="updateBy" parameterType="org.apache.submarine.server.database.workbench.entity.SysDictEntity">
     UPDATE sys_dict SET
     <if test="dictCode!=null and dictCode!=''">`dict_code`=#{dictCode},</if>
     <if test="dictName!=null and dictName!=''">`dict_name`=#{dictName},</if>
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysMessageMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysMessageMapper.xml
similarity index 92%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysMessageMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysMessageMapper.xml
index 9b171c90..fa93089e 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysMessageMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysMessageMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.SysMessageMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.SysMessageMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.SysMessageEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.SysMessageEntity" extends="BaseEntityResultMap">
     <result column="sender" jdbcType="VARCHAR" property="sender"/>
     <result column="receiver" jdbcType="VARCHAR" property="receiver"/>
     <result column="type" jdbcType="VARCHAR" property="type"/>
@@ -35,7 +35,7 @@
     <result column="context" jdbcType="LONGVARCHAR" property="context"/>
   </resultMap>
 
-  <resultMap extends="resultMap" id="ResultMapWithBLOBs" type="org.apache.submarine.server.workbench.database.entity.SysMessageEntity">
+  <resultMap extends="resultMap" id="ResultMapWithBLOBs" type="org.apache.submarine.server.database.workbench.entity.SysMessageEntity">
     <result column="context" jdbcType="LONGVARCHAR" property="context"/>
   </resultMap>
 
@@ -60,7 +60,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.SysMessageEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.SysMessageEntity">
     insert into sys_message (id, sender, receiver,
       type, status, create_by,
       create_time, update_time,
@@ -71,7 +71,7 @@
       #{context,jdbcType=LONGVARCHAR})
   </insert>
 
-  <insert id="insertSelective" parameterType="org.apache.submarine.server.workbench.database.entity.SysMessageEntity">
+  <insert id="insertSelective" parameterType="org.apache.submarine.server.database.workbench.entity.SysMessageEntity">
     insert into sys_message
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -139,7 +139,7 @@
     </trim>
   </insert>
 
-  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.workbench.database.entity.SysMessageEntity">
+  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.database.workbench.entity.SysMessageEntity">
     update sys_message
     <set>
       <if test="sender != null">
@@ -173,7 +173,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </update>
 
-  <update id="updateByPrimaryKeyWithBLOBs" parameterType="org.apache.submarine.server.workbench.database.entity.SysMessageEntity">
+  <update id="updateByPrimaryKeyWithBLOBs" parameterType="org.apache.submarine.server.database.workbench.entity.SysMessageEntity">
     update sys_message
     set sender = #{sender,jdbcType=VARCHAR},
       receiver = #{receiver,jdbcType=VARCHAR},
@@ -187,7 +187,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </update>
 
-  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.workbench.database.entity.SysMessageEntity">
+  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.database.workbench.entity.SysMessageEntity">
     update sys_message
     set sender = #{sender,jdbcType=VARCHAR},
       receiver = #{receiver,jdbcType=VARCHAR},
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysUserMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysUserMapper.xml
similarity index 92%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysUserMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysUserMapper.xml
index 1a54e217..f4b6f884 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SysUserMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SysUserMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.SysUserMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.SysUserMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id" />
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.SysUserEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.SysUserEntity" extends="BaseEntityResultMap">
     <result column="user_name" property="userName"/>
     <result column="real_name" property="realName"/>
     <result column="dept_code" property="deptCode"/>
@@ -53,7 +53,7 @@
     SELECT * FROM sys_user WHERE user_name = #{username} AND password = #{password}
   </select>
 
-  <insert id="add" parameterType="org.apache.submarine.server.workbench.database.entity.SysUserEntity">
+  <insert id="add" parameterType="org.apache.submarine.server.database.workbench.entity.SysUserEntity">
     <selectKey keyProperty="id" resultType="String" order="BEFORE">
       select REPLACE(UUID(),"-","")
     </selectKey>
@@ -90,7 +90,7 @@
     #{createBy}, now(), now())
   </insert>
 
-  <update id="updateBy" parameterType="org.apache.submarine.server.workbench.database.entity.SysUserEntity">
+  <update id="updateBy" parameterType="org.apache.submarine.server.database.workbench.entity.SysUserEntity">
     UPDATE sys_user SET
     <if test="userName!=null and userName!=''">`user_name` = #{userName},</if>
     <if test="realName!=null and realName!=''">`real_name` = #{realName},</if>
@@ -138,7 +138,7 @@
     DELETE FROM sys_user WHERE id = #{id}
   </delete>
 
-  <update id="changePassword" parameterType="org.apache.submarine.server.workbench.database.entity.SysUserEntity">
+  <update id="changePassword" parameterType="org.apache.submarine.server.database.workbench.entity.SysUserEntity">
     UPDATE sys_user SET password = #{password}, `update_time`=now()
     WHERE id = #{id}
   </update>
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SystemMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SystemMapper.xml
similarity index 93%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SystemMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SystemMapper.xml
index 41a218d2..22f8402e 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/SystemMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/SystemMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.SystemMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.SystemMapper">
 
   <select id="duplicateCheck" resultType="Long"  parameterType="java.util.Map">
     SELECT COUNT(*) FROM ${tableName} WHERE ${fieldName} = #{fieldVal}
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/TeamMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/TeamMapper.xml
similarity index 91%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/TeamMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/TeamMapper.xml
index 35c2f839..4bd3fafd 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/TeamMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/TeamMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.TeamMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.TeamMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id"/>
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.TeamEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.TeamEntity" extends="BaseEntityResultMap">
     <result column="owner" jdbcType="VARCHAR" property="owner"/>
     <result column="team_name" jdbcType="VARCHAR" property="teamName"/>
   </resultMap>
@@ -57,7 +57,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.TeamEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.TeamEntity">
     <selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
       SELECT REPLACE(UUID(),"-","")
     </selectKey>
@@ -66,7 +66,7 @@
     #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now())
   </insert>
 
-  <insert id="insertSelective" parameterType="org.apache.submarine.server.workbench.database.entity.TeamEntity">
+  <insert id="insertSelective" parameterType="org.apache.submarine.server.database.workbench.entity.TeamEntity">
     insert into team
     <trim prefix="(" suffix=")" suffixOverrides=",">
       <if test="id != null">
@@ -116,7 +116,7 @@
     </trim>
   </insert>
 
-  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.workbench.database.entity.TeamEntity">
+  <update id="updateByPrimaryKeySelective" parameterType="org.apache.submarine.server.database.workbench.entity.TeamEntity">
     update team
     <set>
       <if test="owner != null">
@@ -133,7 +133,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </update>
 
-  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.workbench.database.entity.TeamEntity">
+  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.database.workbench.entity.TeamEntity">
     update team
     set owner = #{owner,jdbcType=VARCHAR},
       team_name = #{teamName,jdbcType=VARCHAR},
diff --git a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/TeamMemberMapper.xml b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/TeamMemberMapper.xml
similarity index 92%
rename from submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/TeamMemberMapper.xml
rename to submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/TeamMemberMapper.xml
index 6b6981e5..0d00a141 100644
--- a/submarine-server/server-core/src/main/resources/org/apache/submarine/database/mappers/TeamMemberMapper.xml
+++ b/submarine-server/server-database/src/main/resources/org/apache/submarine/database/mappers/TeamMemberMapper.xml
@@ -18,7 +18,7 @@
   under the License.
 -->
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.apache.submarine.server.workbench.database.mappers.TeamMemberMapper">
+<mapper namespace="org.apache.submarine.server.database.workbench.mappers.TeamMemberMapper">
   <resultMap id="BaseEntityResultMap" type="org.apache.submarine.server.database.entity.BaseEntity">
     <id property="id" column="id" />
     <result column="create_by" property="createBy"/>
@@ -27,7 +27,7 @@
     <result column="update_time" property="updateTime"/>
   </resultMap>
 
-  <resultMap id="resultMap" type="org.apache.submarine.server.workbench.database.entity.TeamMemberEntity" extends="BaseEntityResultMap">
+  <resultMap id="resultMap" type="org.apache.submarine.server.database.workbench.entity.TeamMemberEntity" extends="BaseEntityResultMap">
     <result column="team_id" jdbcType="VARCHAR" property="teamId"/>
     <result column="team_name" jdbcType="VARCHAR" property="teamName"/>
     <result column="member" jdbcType="VARCHAR" property="member"/>
@@ -60,7 +60,7 @@
     where id = #{id,jdbcType=VARCHAR}
   </delete>
 
-  <delete id="deleteSelective" parameterType="org.apache.submarine.server.workbench.database.entity.TeamMemberEntity">
+  <delete id="deleteSelective" parameterType="org.apache.submarine.server.database.workbench.entity.TeamMemberEntity">
     delete from team_member
     where 1 = 1
     <if test="teamId != null">
@@ -68,7 +68,7 @@
     </if>
   </delete>
 
-  <insert id="insert" parameterType="org.apache.submarine.server.workbench.database.entity.TeamMemberEntity">
+  <insert id="insert" parameterType="org.apache.submarine.server.database.workbench.entity.TeamMemberEntity">
     <selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
       SELECT REPLACE(UUID(),"-","")
     </selectKey>
@@ -78,7 +78,7 @@
       #{inviter,jdbcType=INTEGER}, #{createBy,jdbcType=VARCHAR}, now(), #{updateBy,jdbcType=VARCHAR}, now())
   </insert>
 
-  <insert id="insertSelective" parameterType="org.apache.submarine.server.workbench.database.entity.TeamMemberEntity">
+  <insert id="insertSelective" parameterType="org.apache.submarine.server.database.workbench.entity.TeamMemberEntity">
     <selectKey keyProperty="id" resultType="java.lang.String" order="BEFORE">
       SELECT REPLACE(UUID(),"-","")
     </selectKey>
@@ -131,7 +131,7 @@
     </trim>
   </insert>
 
-  <update id="updateSelective" parameterType="org.apache.submarine.server.workbench.database.entity.TeamMemberEntity">
+  <update id="updateSelective" parameterType="org.apache.submarine.server.database.workbench.entity.TeamMemberEntity">
     update team_member
     <set>
       <if test="teamName != null">
@@ -165,7 +165,7 @@
     </if>
   </update>
 
-  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.workbench.database.entity.TeamMemberEntity">
+  <update id="updateByPrimaryKey" parameterType="org.apache.submarine.server.database.workbench.entity.TeamMemberEntity">
     update team_member
     set team_id = #{teamId,jdbcType=VARCHAR},
       team_name = #{teamName,jdbcType=VARCHAR},
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/experiment/database/ExperimentServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/experiment/ExperimentServiceTest.java
similarity index 95%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/experiment/database/ExperimentServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/experiment/ExperimentServiceTest.java
index 92f9a7f6..fe187bce 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/experiment/database/ExperimentServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/experiment/ExperimentServiceTest.java
@@ -17,10 +17,10 @@
  * under the License.
  */
 
-package org.apache.submarine.server.experiment.database;
+package org.apache.submarine.server.database.experiment;
 
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.service.ExperimentService;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.service.ExperimentService;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/ModelVersionTagTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/ModelVersionTagTest.java
similarity index 86%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/ModelVersionTagTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/ModelVersionTagTest.java
index 95a32d92..99e3965a 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/ModelVersionTagTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/ModelVersionTagTest.java
@@ -17,14 +17,14 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database;
+package org.apache.submarine.server.database.model;
 
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
-import org.apache.submarine.server.model.database.entities.ModelVersionTagEntity;
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.service.ModelVersionService;
-import org.apache.submarine.server.model.database.service.ModelVersionTagService;
-import org.apache.submarine.server.model.database.service.RegisteredModelService;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.entities.ModelVersionTagEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.service.ModelVersionService;
+import org.apache.submarine.server.database.model.service.ModelVersionTagService;
+import org.apache.submarine.server.database.model.service.RegisteredModelService;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/ModelVersionTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/ModelVersionTest.java
similarity index 95%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/ModelVersionTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/ModelVersionTest.java
index 72bf72b1..05b5c509 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/ModelVersionTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/ModelVersionTest.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database;
+package org.apache.submarine.server.database.model;
 
 import org.junit.After;
 import org.junit.Assert;
@@ -25,10 +25,10 @@ import org.junit.Test;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.submarine.server.model.database.entities.ModelVersionEntity;
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.service.ModelVersionService;
-import org.apache.submarine.server.model.database.service.RegisteredModelService;
+import org.apache.submarine.server.database.model.entities.ModelVersionEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.service.ModelVersionService;
+import org.apache.submarine.server.database.model.service.RegisteredModelService;
 
 public class ModelVersionTest {
   RegisteredModelService registeredModelService = new RegisteredModelService();
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/RegisteredModelServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/RegisteredModelServiceTest.java
similarity index 97%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/RegisteredModelServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/RegisteredModelServiceTest.java
index 93322f02..64266be8 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/RegisteredModelServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/RegisteredModelServiceTest.java
@@ -17,10 +17,10 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database;
+package org.apache.submarine.server.database.model;
 
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.service.RegisteredModelService;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.service.RegisteredModelService;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/RegisteredModelTagServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/RegisteredModelTagServiceTest.java
similarity index 88%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/RegisteredModelTagServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/RegisteredModelTagServiceTest.java
index 1f59ab2f..c122da32 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/model/database/RegisteredModelTagServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/model/RegisteredModelTagServiceTest.java
@@ -17,12 +17,12 @@
  * under the License.
  */
 
-package org.apache.submarine.server.model.database;
+package org.apache.submarine.server.database.model;
 
-import org.apache.submarine.server.model.database.entities.RegisteredModelEntity;
-import org.apache.submarine.server.model.database.entities.RegisteredModelTagEntity;
-import org.apache.submarine.server.model.database.service.RegisteredModelService;
-import org.apache.submarine.server.model.database.service.RegisteredModelTagService;
+import org.apache.submarine.server.database.model.entities.RegisteredModelEntity;
+import org.apache.submarine.server.database.model.entities.RegisteredModelTagEntity;
+import org.apache.submarine.server.database.model.service.RegisteredModelService;
+import org.apache.submarine.server.database.model.service.RegisteredModelTagService;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/JobServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/JobServiceTest.java
similarity index 97%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/JobServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/JobServiceTest.java
index 4c137722..c9628e45 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/JobServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/JobServiceTest.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
-import org.apache.submarine.server.workbench.database.entity.JobEntity;
+import org.apache.submarine.server.database.workbench.entity.JobEntity;
 import org.junit.After;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/MetricServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/MetricServiceTest.java
similarity index 95%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/MetricServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/MetricServiceTest.java
index ddbabf32..3ccdf22a 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/MetricServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/MetricServiceTest.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.service.ExperimentService;
-import org.apache.submarine.server.workbench.database.entity.MetricEntity;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.service.ExperimentService;
+import org.apache.submarine.server.database.workbench.entity.MetricEntity;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/ParamServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/ParamServiceTest.java
similarity index 94%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/ParamServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/ParamServiceTest.java
index 611603f3..2b7418db 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/ParamServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/ParamServiceTest.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
-import org.apache.submarine.server.experiment.database.entity.ExperimentEntity;
-import org.apache.submarine.server.experiment.database.service.ExperimentService;
-import org.apache.submarine.server.workbench.database.entity.ParamEntity;
+import org.apache.submarine.server.database.experiment.entity.ExperimentEntity;
+import org.apache.submarine.server.database.experiment.service.ExperimentService;
+import org.apache.submarine.server.database.workbench.entity.ParamEntity;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/ProjectServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/ProjectServiceTest.java
similarity index 97%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/ProjectServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/ProjectServiceTest.java
index a90bf980..40200036 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/ProjectServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/ProjectServiceTest.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
-import org.apache.submarine.server.workbench.database.entity.ProjectEntity;
-import org.apache.submarine.server.workbench.database.entity.ProjectFilesEntity;
+import org.apache.submarine.server.database.workbench.entity.ProjectEntity;
+import org.apache.submarine.server.database.workbench.entity.ProjectFilesEntity;
 import org.junit.After;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/SysUserServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/SysUserServiceTest.java
similarity index 98%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/SysUserServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/SysUserServiceTest.java
index ffb525ee..bbeb4ace 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/SysUserServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/SysUserServiceTest.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
 import org.apache.commons.lang.time.DateUtils;
-import org.apache.submarine.server.workbench.database.entity.SysUserEntity;
+import org.apache.submarine.server.database.workbench.entity.SysUserEntity;
 import org.junit.After;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/TeamMemberServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/TeamMemberServiceTest.java
similarity index 95%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/TeamMemberServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/TeamMemberServiceTest.java
index ab557b11..3c4f24eb 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/TeamMemberServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/TeamMemberServiceTest.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
-import org.apache.submarine.server.workbench.database.entity.TeamMemberEntity;
+import org.apache.submarine.server.database.workbench.entity.TeamMemberEntity;
 import org.junit.After;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/TeamServiceTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/TeamServiceTest.java
similarity index 96%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/TeamServiceTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/TeamServiceTest.java
index 541af1b4..383883c2 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/service/TeamServiceTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/service/TeamServiceTest.java
@@ -16,10 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.service;
+package org.apache.submarine.server.database.workbench.service;
 
-import org.apache.submarine.server.workbench.database.entity.TeamEntity;
-import org.apache.submarine.server.workbench.database.entity.TeamMemberEntity;
+import org.apache.submarine.server.database.workbench.entity.TeamEntity;
+import org.apache.submarine.server.database.workbench.entity.TeamMemberEntity;
 import org.junit.After;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/utils/DepartmentUtilTest.java b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/utils/DepartmentUtilTest.java
similarity index 92%
rename from submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/utils/DepartmentUtilTest.java
rename to submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/utils/DepartmentUtilTest.java
index aeaef425..1afbe9f3 100644
--- a/submarine-server/server-core/src/test/java/org/apache/submarine/server/workbench/database/utils/DepartmentUtilTest.java
+++ b/submarine-server/server-database/src/test/java/org/apache/submarine/server/database/workbench/database/utils/DepartmentUtilTest.java
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.submarine.server.workbench.database.utils;
+package org.apache.submarine.server.database.workbench.utils;
 
-import org.apache.submarine.server.workbench.database.entity.SysDeptEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDeptSelectEntity;
-import org.apache.submarine.server.workbench.database.entity.SysDeptTree;
+import org.apache.submarine.server.database.workbench.entity.SysDeptEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptSelectEntity;
+import org.apache.submarine.server.database.workbench.entity.SysDeptTree;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/ExperimentSpecParser.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/ExperimentSpecParser.java
index 5a46be51..91f57165 100644
--- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/ExperimentSpecParser.java
+++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/ExperimentSpecParser.java
@@ -40,7 +40,7 @@ import org.apache.submarine.server.api.spec.ExperimentMeta;
 import org.apache.submarine.server.api.spec.ExperimentSpec;
 import org.apache.submarine.server.api.spec.ExperimentTaskSpec;
 import org.apache.submarine.server.api.spec.EnvironmentSpec;
-import org.apache.submarine.server.environment.EnvironmentManager;
+import org.apache.submarine.server.manager.EnvironmentManager;
 import org.apache.submarine.server.submitter.k8s.experiment.codelocalizer.AbstractCodeLocalizer;
 import org.apache.submarine.server.submitter.k8s.experiment.codelocalizer.CodeLocalizer;
 import org.apache.submarine.server.submitter.k8s.experiment.codelocalizer.SSHGitCodeLocalizer;
diff --git a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
index 4cc8b4fd..55ae4c02 100644
--- a/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
+++ b/submarine-server/server-submitter/submitter-k8s/src/main/java/org/apache/submarine/server/submitter/k8s/parser/NotebookSpecParser.java
@@ -39,7 +39,7 @@ import org.apache.submarine.server.api.spec.EnvironmentSpec;
 import org.apache.submarine.server.api.spec.KernelSpec;
 import org.apache.submarine.server.api.spec.NotebookPodSpec;
 import org.apache.submarine.server.api.spec.NotebookSpec;
-import org.apache.submarine.server.environment.EnvironmentManager;
+import org.apache.submarine.server.manager.EnvironmentManager;
 import org.apache.submarine.server.submitter.k8s.model.notebook.NotebookCR;
 import org.apache.submarine.server.submitter.k8s.model.notebook.NotebookCRSpec;
 import org.apache.submarine.server.submitter.k8s.util.NotebookUtils;
diff --git a/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/ExperimentSpecParserTest.java b/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/ExperimentSpecParserTest.java
index eece2892..3c7fa686 100644
--- a/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/ExperimentSpecParserTest.java
+++ b/submarine-server/server-submitter/submitter-k8s/src/test/java/org/apache/submarine/server/submitter/k8s/ExperimentSpecParserTest.java
@@ -35,7 +35,7 @@ import org.apache.submarine.server.api.spec.ExperimentSpec;
 import org.apache.submarine.server.api.spec.ExperimentTaskSpec;
 import org.apache.submarine.server.api.spec.EnvironmentSpec;
 import org.apache.submarine.server.api.spec.KernelSpec;
-import org.apache.submarine.server.environment.EnvironmentManager;
+import org.apache.submarine.server.manager.EnvironmentManager;
 import org.apache.submarine.server.submitter.k8s.model.mljob.MLJob;
 import org.apache.submarine.server.submitter.k8s.model.mljob.MLJobReplicaSpec;
 import org.apache.submarine.server.submitter.k8s.model.mljob.MLJobReplicaType;


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@submarine.apache.org
For additional commands, e-mail: dev-help@submarine.apache.org