SpringBoot整合OrientDB

SpringBoot整合OrientDB

最近由于公司业务需求,临时学习了OrientDB的使用,整合到
SpringBoot的项目中作为数据源来使用。记录一下遇到的一系列坑。

下载安装,官网均有详细流程,就不一一说明了。

首先列举一下我遇到的问题:

使用@Autowired自动注入的ODatabaseSession,在创建Vertex(节点)、Edge(关系)时会报状态异常
使用@Autowired自动注入的ODatabaseSession,在执行query语句时,总是会报空指针异常
使用@Autowired自动注入的ODatabaseSession,在创建节点的索引时,会报状态异常

在遇到问题之后,我也进行过各种搜索,但是没能解决我的问题,所以我就只能自己进行摸索。

下边记录一下,如何使用SpringBoot整合Orient。

我使用的是官网上推荐的Maven包

     <dependency>
        <groupId>com.orientechnologies</groupId>
        <artifactId>orientdb-client</artifactId>
        <version>3.0.28</version>
     </dependency>

创建一个配置类

@Configuration
@Component
public class OrientConfig {
    @Value("${orient.url}")
    String url;	
    @Value("${orient.database}")
    String database; 
    @Value("${orient.username}")
    String username;
    @Value("${orient.password}")
    String password;
    @Bean
    public ODatabaseSession oDatabaseSession(){
        OrientDB orient = new OrientDB(url, OrientDBConfig.defaultConfig());
        ODatabaseSession oDatabaseSession = orient.open(database, username, password);
        return oDatabaseSession;
    }

这之后就可以使用@Autowired进行自动注入了,当然,也会遇到一系列相关的问题

最重要的一步是下面的一步

ODatabaseRecordThreadLocal.instance().set((ODatabaseDocumentInternal) oDatabaseSession);//在每个方法中使用之前设置

我的理解是,需要为当前的Orient操作线程设置一个实例,然后才能进行数据库的操作。

其实我遇到的所有问题,都是因为这一条,在SpringBoot中自动注入得到的ODatabaseSession实例,在未将其设置为当前操作线程的实例之前,进行的所有的操作,基本上都会报异常。

以上是我的个人见解,如果有大神路过,还请指出我的错误。

你可能感兴趣的:(Java,OrientDB,SpringBoot)