基于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 { ThreadLocaltransactionStatusThreadLocal = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月07日 00时03分18秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
启用fcitx-qimpanel面板程序
2019-05-03
浅谈Q的基本实现
2019-05-03
阿里云短信服务(JAVA)
2019-05-03
GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
2019-05-03
深入研究 Runloop 与线程保活
2019-05-03
iOS 版本更新(强制更新)检测问题
2019-05-03
Struts2(1)简介
2019-05-03
XSS漏洞解析(一)
2019-05-03
Springboot使用详解
2019-05-03
leetcode算法 111. 二叉树的最小深度
2019-05-03
李洪强iOS开发之-cocopods安装
2019-05-03
实现string toHex(int)把一个十进制转换成十六进制。(完全用算法实现)
2019-05-04
覃仙球- 时装品牌Chilly Chin创始人 | 到「在行」来约见我
2019-05-04
struts2.5.10.1
2019-05-04
活动反作弊服务_防羊毛党_防作弊评论_防刷单_防作弊投票_网易易盾
2019-05-04
浅谈web指纹识别技术 - FreeBuf.COM | 关注黑客与极客
2019-05-04
技术漫谈 | 使用docker-compose进行python开发 - 推酷
2019-05-04
我眼中的领域驱动设计 - richiezhang - 博客园
2019-05-04
新风系统可取代空调吗? - 知乎
2019-05-04