图数数据库引擎tinkerpop(3) 使用java调用tinkerpop,存储到mysql数据库

1,图数数据库引擎TinkerPop

本文原文连接: http://blog.csdn.net/freewebsys/article/details/46519901 转载请注明出处!

之前简单测试了下tinkerpop。
http://blog.csdn.net/freewebsys/article/details/46348975
http://blog.csdn.net/freewebsys/article/details/46470651
现在要把数据放到mysql数据库,这样更加接近线上系统使用,TinkerPop不解决数据存储的问题,需要使用扩展放到其他存储上面,通过blueprints 接口存储。
支持MongoDB,hadoop,Titan,Neo4j等存储数据。
同时也支持jpa,我使用的是hibernate实现的jpa。当然支持所有数据库了,这里使用mysql进行存储。
代码和pom 放到github上面了:(1个java类而已)
https://github.com/freewebsys/tinkerpop-demo

2,mysql数据库准备

使用mysql root进行操作:(创建数据库,并创建用户并赋予权限)

CREATE DATABASE tinkerpop DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON tinkerpop.* TO tinkerpop@"%" IDENTIFIED BY "tinkerpop";
FLUSH PRIVILEGES;

配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>tinkerpop-demo</groupId>
    <artifactId>tinkerpop-demo</artifactId>
    <version>1.0</version>

    <!--
        https://maven.apache.org/guides/mini/guide-multiple-repositories.html
        增加wingnest-repo repo。
    -->
    <repositories>
        <repository>
            <id>wingnest-repo</id>
            <name>wingnest repo</name>
            <url>http://www.wingnest.com/mvn-repo/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.apache.tinkerpop</groupId>
            <artifactId>gremlin-core</artifactId>
            <version>3.0.0.M9-incubating</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tinkerpop</groupId>
            <artifactId>gremlin-driver</artifactId>
            <version>3.0.0.M9-incubating</version>
        </dependency>
        <dependency>
            <groupId>com.tinkerpop.blueprints</groupId>
            <artifactId>blueprints-core</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>com.wingnest.blueprints</groupId>
            <artifactId>blueprints-jpa-graph</artifactId>
            <version>2.5.0_01</version>
        </dependency>

        <!-- add hibernate dependency -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.6.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>

        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.11.1.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derbytools</artifactId>
            <version>10.11.1.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.3.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>10.11.1.1</version>
        </dependency>
    </dependencies>

    <!-- 插件管理 -->
    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <!-- 设置路径,读取路径问题. -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>2.5.1</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>2.4</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

java代码:

package com.tinkerpop.demo;

import com.tinkerpop.blueprints.Direction;
import com.tinkerpop.blueprints.Edge;
import com.tinkerpop.blueprints.Vertex;
import com.wingnest.blueprints.impls.jpa.JpaGraph;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

/**
 * 创建数据库:
 * <p/>
 * CREATE DATABASE tinkerpop DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
 * GRANT ALL PRIVILEGES ON tinkerpop.* TO tinkerpop@"%" IDENTIFIED BY "tinkerpop";
 * FLUSH PRIVILEGES;
 */

public class TinkerPopMysqlDemo {

    private JpaGraph jpaGraph = null;

    @Before
    public void setUp() {
        //初始化jpa。保存到数据库中。使用hibernate 自动创建表结构。
        //如果要使用mysql,这里修改属性。
        Map<String, Object> props = new HashMap<String, Object>();

        props.put("javax.persistence.jdbc.driver", "com.mysql.jdbc.Driver");
        props.put("javax.persistence.jdbc.url", String.format("jdbc:mysql://xxx.xxx.xxx.xxx:3306/tinkerpop?characterEncoding=UTF-8"));
        props.put("javax.persistence.jdbc.user", "tinkerpop");
        props.put("javax.persistence.jdbc.password", "tinkerpop");

        jpaGraph = new JpaGraph("HibernateUnit", props);
    }

    @After
    public void tearDown() throws Exception {
        //关闭
        jpaGraph.shutdown();
    }

    @Test
    public void testCreate() {

        //创建张三数据
        Vertex zhangsan = jpaGraph.addVertex(null);
        zhangsan.setProperty("name", "zhangsan");
        System.out.println("zhangsan:" + zhangsan.getId());

        //创建李四数据
        Vertex lisi = jpaGraph.addVertex(null);
        lisi.setProperty("name", "lisi");
        System.out.println("lisi:" + lisi.getId());

        //创建王五数据
        Vertex wangwu = jpaGraph.addVertex(null);
        wangwu.setProperty("name", "wangwu");
        System.out.println("wangwu:" + wangwu.getId());

        //设置李四和王五朋友关系,friend是连接的名字,可以随意取。
        Edge friend1 = jpaGraph.addEdge(null, zhangsan, lisi, "friend");

        //设置王五和李四朋友关系
        Edge friend2 = jpaGraph.addEdge(null, wangwu, lisi, "friend");

        System.out.println("create finish");
    }

    @Test
    public void testQuery() {
        //查询全部数据。
        queryAll();
        queryZhansanFriends();
        System.out.println("query finish");
    }

    private void queryAll() {
        Iterable<Vertex> allVertex = jpaGraph.getVertices();
        System.out.println("######################query all######################");
        for (Vertex vertex : allVertex) {
            System.out.print("name:" + vertex.getProperty("name"));
            System.out.println(",id:" + vertex.getId());
        }
    }

    private void queryZhansanFriends() {
        Vertex zhangsan = jpaGraph.getVertex(1);
        System.out.println("######################query zhangsan friends######################");
        Iterable<Vertex> zhansanFriends = zhangsan.getVertices(Direction.OUT, "friend");
        for (Vertex vertex : zhansanFriends) {
            System.out.print("name:" + vertex.getProperty("name"));
            System.out.println(",id:" + vertex.getId());
        }
    }

    @Test
    public void testDelete() {
        Vertex lisi = jpaGraph.getVertex(2);
        jpaGraph.removeVertex(lisi);
        //删除之后,查询全部。
        queryAll();
        queryZhansanFriends();
    }

}

3,运行结果

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| tinkerpop          |
+--------------------+
2 rows in set (0.01 sec)

mysql> use tinkerpop
Database changed

mysql> show tables;
+---------------------+
| Tables_in_tinkerpop |
+---------------------+
| ENTITY              |
| INDEX_BASE          |
+---------------------+
2 rows in set (0.00 sec)

mysql> select * from ENTITY;
+---------------+----+---------+---------+---------+-----------------+--------+------------+-------------------+-------------------+
| DTYPE         | id | REMOVED | VERSION | KEYNAME | valueData       | LABEL  | element_id | incomingVertex_id | outgoingVertex_id |
+---------------+----+---------+---------+---------+-----------------+--------+------------+-------------------+-------------------+
| BpJpaVertex   |  1 |         |       0 | NULL    | NULL            | NULL   |       NULL |              NULL |              NULL |
| BpJpaVertex   |  2 |         |       0 | NULL    | NULL            | NULL   |       NULL |              NULL |              NULL |
| BpJpaVertex   |  3 |         |       0 | NULL    | NULL            | NULL   |       NULL |              NULL |              NULL |
| BpJpaEdge     |  4 |         |       1 | NULL    | NULL            | friend |       NULL |                 2 |                 1 |
| BpJpaEdge     |  5 |         |       1 | NULL    | NULL            | friend |       NULL |                 2 |                 3 |
| BpJpaProperty |  6 |         |       0 | name    | 
时间: 2024-07-28 20:26:11

图数数据库引擎tinkerpop(3) 使用java调用tinkerpop,存储到mysql数据库的相关文章

rsyslog日志存储到mysql数据库中并利用loganalyzer进行web图形化分析管理

系统日志的重要性,相信大家都深有体会,当发生故障后,第一时间就是查看相关报错信息和日志信息,以定位问题所在,还可以基于日志,进行日志的分析,从而获取系统运行状态的一些规律,本篇就介绍关于系统日志的先关内容,具体分为: 1.rsyslog相关概念的介绍 2.自定义日志存储的信道(facility)和存储位置,让rsyslog作为服务端记录rsyslog客户端的日志信息 3.定义rsyslog的日志存储在mysql数据库中 4.利用loganalyzer实现对存储在mysql数据库中的rsyslog

操作-【急】问一个关于java web中tomcat连接mysql数据库的问题(问题点数40无满意结贴

问题描述 [急]问一个关于java web中tomcat连接mysql数据库的问题(问题点数40无满意结贴 我是计科专业在做毕业设计没接触过java,做一个在线答疑系统,在csdn上下了一个jsp+struts2+spring的感觉比较全的系统,下载地址为http://download.csdn.net/detail/hmshust/6950301,该文是0积分的,下载的如图![图片说明](http://img.ask.csdn.net/upload/201505/07/1431008698_8

java-我如何配这条Java语句所要求的mysql数据库?

问题描述 我如何配这条Java语句所要求的mysql数据库? ct=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/virtual_lab_server","DBAdmin_KK","-1042^6857::mySQL"); RT,现在安装好了mysql并能正常使用,但是没有这个数据库,大大们能不能给出mysql的命令呀? 我已经加载好了数据库驱动,只是没有这个数据库,不知道怎么创

mysql 编码 汉字识别-用Java语言连接wampserver中mysql数据库时,遇到问题,请看内容。

问题描述 用Java语言连接wampserver中mysql数据库时,遇到问题,请看内容. 用Java语言连接wampserver集成中的mysql,当用java代码往mysql数据库插入数据后,代码中的中文字符在数据库中变成了"?",但是使用mysql客户端.http:// localhost/phpmyadmin/ 页面 插入中文时,就没有这种情况发生,请指点. 解决方案 参考 mysql/java charset issue 在连接字符串指定字符集,比如jdbc:mysql://

Java使用JDBC驱动连接MySQL数据库_java

Java使用JDBC驱动连接MySQL数据库的步骤: 1.下载驱动,导入jar包 2.加载驱动 3.设置连接 连接成功后就是一些对数据库中数据的操作 1.下载驱动,导入jar包 当你看到jdbc目录下有相应的jar包说明第一步操作已经完成. 2.加载驱动 3.设置连接 import java.sql.Connection; import java.sql.DriverManager; public class DB_Helper { public static void main(String[

基于Docker的PHP调用基于Docker的Mysql数据库_docker

docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 自从接触docker以来,一直想实现这种玩法.如下是步骤 1:建立基于docker的mysql,参考文章 Mac上将brew安装的MySql改用Docker执行 2:建立基于docker的php image 在当前目录,建立Dockerfile,内容如下 FROM php

php上传文件并存储到mysql数据库的方法_php技巧

本文实例讲述了php上传文件并存储到mysql数据库的方法.分享给大家供大家参考.具体分析如下: 下面的代码分别用于创建mysql表和上传文件保存到mysql数据库 创建mysql表: <?php $con = mysql_connect("localhost", "", ""); mysql_select_db("w3m"); $sql = "CREATE TABLE updfiles (" . &

php上传文件并存储到mysql数据库的方法

 这篇文章主要介绍了php上传文件并存储到mysql数据库的方法,以完整实例形式较为详细的分析了php操作文件上传与数据库存储的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了php上传文件并存储到mysql数据库的方法.分享给大家供大家参考.具体分析如下: 下面的代码分别用于创建mysql表和上传文件保存到mysql数据库 创建mysql表: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $con = mysql_connect(&quo

tinkerpop(2) 使用java调用tinkerpop,存储到derby数据库

1,关于tinkerpop 本文原文连接: http://blog.csdn.net/freewebsys/article/details/46470651 转载请注明出处! 之前体验了下tinkerpop的console服务. 存储数据,然后进行查询数据. 之前写的文章: http://blog.csdn.net/freewebsys/article/details/46348975 2,关于blueprints Blueprints是一组针对属性图数据模型的接口.实现.测试套件,有些类似于J