中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Spring Boot快速構建基于SQLite數據源的應用

發布時間:2020-09-13 11:15:59 來源:腳本之家 閱讀:393 作者:hwding 欄目:編程語言

為了提供一個單包易部署的服務器應用,考慮使用Spring Boot,因為其集成了Apache Tomcat,易于運行,免去絕大部分了服務器配置的步驟。

項目初始化

首先從mvn archetype:generate中選擇 com.github.mkspcd:simple-webapp(或其他webapp模版) 模版生成項目結構。

更多關于maven請移步Maven - Users Centre

在pom.xml中添加parent來獲取Spring Boot所需的最小依賴。

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.github.hwding.example</groupId>
  <artifactId>example</artifactId>
  <packaging>jar</packaging>
  <version>0.0.1</version>
  <name>an example</name>
  <url>https://github.com/hwding</url>
  <!-- 添加Spring的Repository以便于添加相關組件 -->
  <repositories>
    <repository>
      <url>http://repo.spring.io/milestone/</url>
      <id>repo-spring</id>
    </repository>
  </repositories>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.6.RELEASE</version>
  </parent>
  <build>
    <finalName>example</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <!-- 編譯級別,可選 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- 用于Hibernate4的SQLite3 Dialect -->
    <dependency>
      <groupId>com.enigmabridge</groupId>
      <artifactId>hibernate4-sqlite-dialect</artifactId>
      <version>0.1.2</version>
    </dependency>
    <!-- 用于配置數據源 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-dbcp2</artifactId>
      <version>2.1.1</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>javax.persistence</artifactId>
      <version>2.2.0-RC1</version>
    </dependency>
    <!-- SQLite3 驅動 -->
    <dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.20.0</version>
    </dependency>
  </dependencies>
</project>

pom中同時添加了Hibernate以及Spring JPA等相關組件。

配置數據源

@Configuration
public class DataSourceConfiguration {
  @Bean(destroyMethod = "", name = "EmbeddeddataSource")
  public DataSource dataSource() {
    DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
    dataSourceBuilder.driverClassName("org.sqlite.JDBC");
    dataSourceBuilder.url("jdbc:sqlite:" + "example.db");
    dataSourceBuilder.type(SQLiteDataSource.class);
    return dataSourceBuilder.build();
  }
}

這里設置了該Bean的destroyMethod = ""是為了防止停止服務器時容器管理器兩次銷毀導致的異常,name = "EmbeddeddataSource"用于在自動裝配Bean時與其他dataSource加以區分。

為了使該獨立服務易部署易分發,使用SQLite3作為數據存取的源,值得注意的是,該場景非常少見。

配置Spring Data JPA

@Configuration
@EnableJpaRepositories(
    basePackages = "com.github.hwding.example.data.repository",
    transactionManagerRef = "jpaTransactionManager",
    entityManagerFactoryRef = "localContainerEntityManagerFactoryBean"
)
@EnableTransactionManagement
public class JpaConfiguration {
  @Autowired
  @Bean
  public JpaTransactionManager jpaTransactionManager(@Qualifier(value = "EmbeddeddataSource") DataSource dataSource, EntityManagerFactory entityManagerFactory) {
    JpaTransactionManager jpaTransactionManager
        = new JpaTransactionManager();
    jpaTransactionManager.setEntityManagerFactory(entityManagerFactory);
    jpaTransactionManager.setDataSource(dataSource);
    return jpaTransactionManager;
  }
  @Autowired
  @Bean
  LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean(@Qualifier(value = "EmbeddeddataSource") DataSource dataSource, JpaVendorAdapter jpaVendorAdapter) {
    LocalContainerEntityManagerFactoryBean localContainerEntityManagerFactoryBean
        = new LocalContainerEntityManagerFactoryBean();
    localContainerEntityManagerFactoryBean.setDataSource(dataSource);
    localContainerEntityManagerFactoryBean.setPackagesToScan("com.github.hwding.example.data.model.local");
    localContainerEntityManagerFactoryBean.setJpaVendorAdapter(jpaVendorAdapter);
    return localContainerEntityManagerFactoryBean;
  }
  @Bean
  public JpaVendorAdapter jpaVendorAdapter() {
    HibernateJpaVendorAdapter hibernateJpaVendorAdapter = new HibernateJpaVendorAdapter();
    hibernateJpaVendorAdapter.setGenerateDdl(true);
    hibernateJpaVendorAdapter.setShowSql(true);
    hibernateJpaVendorAdapter.setDatabasePlatform("com.enigmabridge.hibernate.dialect.SQLiteDialect");
    return hibernateJpaVendorAdapter;
  }
}

注意Repository和Entity掃描的包路徑需要根據實際進行調整。

hibernateJpaVendorAdapter.setGenerateDdl(true);能夠在初次運行時自動根據Entity的定義生成DDL并自動創建SQLite3的 .db 數據文件,在本例中是 example.db ,DDL會最小程度的滿足Entity的定義;如果該文件已經存在,則并不會對其進行覆蓋。

由于Hibernate并不對SQLite3提供支持,所以需要提供第三方Dialect給它:hibernateJpaVendorAdapter.setDatabasePlatform("com.enigmabridge.hibernate.dialect.SQLiteDialect");,這個類我們已經在pom中引入了。

配置入口

@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class);
  }
}

Spring Boot能夠從JAR包的入口直接啟動整個應用程序。

總結

以上所述是小編給大家介紹的使用Spring Boot快速構建基于SQLite數據源的應用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳东县| 平阳县| 乐都县| 清新县| 容城县| 石景山区| 南宫市| 甘南县| 康保县| 离岛区| 大冶市| 香河县| 六盘水市| 汝州市| 正蓝旗| 海口市| 象山县| 定边县| 麻阳| 博爱县| 达孜县| 报价| 溧阳市| 上思县| 宁南县| 沙坪坝区| 高碑店市| 浦东新区| 乐昌市| 平远县| 新野县| 武鸣县| 石阡县| 漳平市| 乌兰浩特市| 凤冈县| 社旗县| 莫力| 广州市| 扎赉特旗| 清涧县|