基于Neo4j实现数据血缘管理
发布日期:2021-11-11 12:48:05 浏览次数:2 分类:技术文章

本文共 7359 字,大约阅读时间需要 24 分钟。

1、Maven依赖

org.springframework.boot
spring-boot-starter-data-neo4j
org.neo4j.driver
neo4j-java-driver
1.7.2
org.neo4j
neo4j
3.3.4

2、yml配置

spring:    data:    neo4j:      uri: bolt://localhost:7687      username: neo4j      password: neo4jj

3、配置类

package com.grg.data.meta.aop;import org.aspectj.lang.annotation.Aspect;import org.neo4j.ogm.session.SessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.DependsOn;import org.springframework.context.annotation.Primary;import org.springframework.data.neo4j.transaction.Neo4jTransactionManager;import org.springframework.data.transaction.ChainedTransactionManager;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;import org.springframework.transaction.TransactionStatus;import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")@Aspect@Configuration@DependsOn("sessionFactory")@EnableTransactionManagementpublic class TransactionAspect {    ThreadLocal
transactionStatusThreadLocal = new ThreadLocal<>(); /** * 定义mysql事务管理器,必须有transactionManager作为默认事务管理器 * * @param dataSource * @return */ @Bean("transactionManager") @Primary public DataSourceTransactionManager transactionManager(DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } /** * 定义neo4j事务管理器 * * @param sessionFactory * @return */ @Bean("neo4jTransactionManager") public Neo4jTransactionManager neo4jTransactionManager(SessionFactory sessionFactory) { return new Neo4jTransactionManager(sessionFactory); } @Autowired @Bean(name = "multiTransactionManager") public PlatformTransactionManager multiTransactionManager( Neo4jTransactionManager neo4jTransactionManager, DataSourceTransactionManager mysqlTransactionManager) { return new ChainedTransactionManager( neo4jTransactionManager, mysqlTransactionManager); }}
package com.grg.data.meta.config;import org.neo4j.ogm.session.SessionFactory;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;import org.springframework.data.neo4j.transaction.Neo4jTransactionManager;@Configuration@EnableNeo4jRepositories(basePackages = "com.grg.data.meta.repository")public class Neo4jConfig {    @Bean("neo4jTransaction")    public Neo4jTransactionManager neo4jTransactionManager(SessionFactory sessionFactory) {        return new Neo4jTransactionManager(sessionFactory);    }}

4、节点类和关系类

package com.grg.data.meta.entity.neo4j.node;import lombok.Builder;import lombok.Data;import org.neo4j.ogm.annotation.GeneratedValue;import org.neo4j.ogm.annotation.Id;import org.neo4j.ogm.annotation.NodeEntity;import org.neo4j.ogm.annotation.Property;@Builder@Data@NodeEntity(label = "TABLE")public class TableNode {    @Id    @GeneratedValue    private Long id;    @Property(name = "pid")    private Long pid;    @Property(name = "cnName")    private String cnName;    @Property(name = "name")    private String name;    @Property(name = "dbName")    private String dbName;    @Property(name = "dbCnName")    private String dbCnName;    @Property(name = "type")    private String type;}
package com.grg.data.meta.entity.neo4j.node;import lombok.Data;import org.neo4j.ogm.annotation.GeneratedValue;import org.neo4j.ogm.annotation.Id;import org.neo4j.ogm.annotation.NodeEntity;import org.neo4j.ogm.annotation.Property;@Data@NodeEntity(label = "COLUMN")public class ColumnNode {    @Id    @GeneratedValue    private Long id;    @Property(name = "pid")    private Long pid;    @Property(name = "name")    private String name;    @Property(name = "cnName")    private String cnName;        @Property(name = "dbName")    private String dbName;    @Property(name = "dbCnName")    private String dbCnName;    @Property(name = "tableName")    private String tableName;    @Property(name = "tbCnName")    private String tbCnName;    @Property(name = "type")    private String type;}
package com.grg.data.meta.entity.neo4j.relation;import com.grg.data.meta.entity.neo4j.node.TableNode;import lombok.Data;import org.neo4j.ogm.annotation.*;@Data@RelationshipEntity(type = "tblood")public class TableRelation {    @Id    @GeneratedValue    private Long id;    @StartNode    private TableNode startNode;    @EndNode    private TableNode endNode;}
package com.grg.data.meta.entity.neo4j.relation;import com.grg.data.meta.entity.neo4j.node.ColumnNode;import lombok.Data;import org.neo4j.ogm.annotation.*;@Data@RelationshipEntity(type = "blood")public class ColumnRelation {    @Id    @GeneratedValue    private Long id;    @StartNode    private ColumnNode startNode;    @EndNode    private ColumnNode endNode;}
package com.grg.data.meta.entity.neo4j.relation;import com.grg.data.meta.entity.neo4j.node.ColumnNode;import com.grg.data.meta.entity.neo4j.node.TableNode;import lombok.Data;import org.neo4j.ogm.annotation.*;@Data@RelationshipEntity(type = "has")public class TableColumnRelation {    @Id    @GeneratedValue    private Long id;    @StartNode    private TableNode tableNode;    @EndNode    private ColumnNode columnNode;}

5、Repository类

package com.grg.data.meta.repository;import com.grg.data.meta.entity.neo4j.node.TableNode;import org.springframework.data.neo4j.repository.Neo4jRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface TableRepository extends Neo4jRepository
{}
package com.grg.data.meta.repository;import com.grg.data.meta.entity.neo4j.node.ColumnNode;import org.springframework.data.neo4j.repository.Neo4jRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface ColumnRepository extends Neo4jRepository
{}

package com.grg.data.meta.repository;import com.grg.data.meta.entity.neo4j.relation.TableRelation;import org.springframework.data.neo4j.repository.Neo4jRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface TableRelationRepository extends Neo4jRepository
{}
package com.grg.data.meta.repository;import com.grg.data.meta.entity.neo4j.relation.ColumnRelation;import org.springframework.data.neo4j.repository.Neo4jRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface ColumnRelationRepository extends Neo4jRepository
{}
package com.grg.data.meta.repository;import com.grg.data.meta.entity.neo4j.relation.TableColumnRelation;import org.springframework.data.neo4j.repository.Neo4jRepository;import org.springframework.stereotype.Repository;@Repositorypublic interface TableColumnRelationRepository extends Neo4jRepository
{}

6、实现类

待补充

转载地址:https://blog.csdn.net/Carson073/article/details/120325042 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:DataX快速入门Demo
下一篇:SpringMVC Controller List参数的校验工具方法

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月07日 00时03分18秒