gpt4 book ai didi

使用Spring Boot快速构建基于SQLite数据源的应用

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章使用Spring Boot快速构建基于SQLite数据源的应用由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

为了提供一个单包易部署的服务器应用,考虑使用Spring Boot,因为其集成了Apache Tomcat,易于运行,免去绝大部分了服务器配置的步骤.

项目初始化 。

首先从mvn archetype:generate中选择 com.github.mkspcd:simple-webapp(或其他webapp模版) 模版生成项目结构.

更多关于maven请移步Maven - Users Centre 。

在pom.xml中添加parent来获取Spring Boot所需的最小依赖.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<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等相关组件.

配置数据源 。

?
1
2
3
4
5
6
7
8
9
10
11
@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 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@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中引入了.

配置入口 。

?
1
2
3
4
5
6
@SpringBootApplication
public class Application {
   public static void main(String[] args) {
     SpringApplication.run(Application. class );
   }
}

Spring Boot能够从JAR包的入口直接启动整个应用程序.

总结 。

以上所述是小编给大家介绍的使用Spring Boot快速构建基于SQLite数据源的应用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。

原文链接:http://www.cnblogs.com/hwding/p/7356382.html 。

最后此篇关于使用Spring Boot快速构建基于SQLite数据源的应用的文章就讲到这里了,如果你想了解更多关于使用Spring Boot快速构建基于SQLite数据源的应用的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com