Java Driver tutorial
Prerequisites
Make sure to install the Java Driver as per Installation page. The TypeDB server is also needs to be installed and running.
Importing Java Driver and connecting to a server
Import the following modules:
-
com.vaticle.typedb.client.TypeDB
-
com.vaticle.typedb.client.api.TypeDBClient
-
com.vaticle.typedb.client.api.TypeDBSession
Connecting
Find out how to create a database in TypeDB on the Quickstart guide page. The name for the database should be |
package com.vaticle.doc.examples;
import com.vaticle.typedb.client.TypeDB;
import com.vaticle.typedb.client.api.TypeDBClient;
import com.vaticle.typedb.client.api.TypeDBSession;
public class TypeDBQuickstartA {
public static void main(String[] args) {
TypeDBClient client = TypeDB.coreClient("localhost:1729");
// client is open
TypeDBSession session = client.session("social_network", TypeDBSession.Type.DATA);
// session is open
session.close();
// session is closed
client.close();
// client is closed
}
}
Creating transactions
Create transactions to use for reading and writing data.
package com.vaticle.doc.examples;
import com.vaticle.typedb.client.api.TypeDBClient;
import com.vaticle.typedb.client.api.TypeDBSession;
import com.vaticle.typedb.client.api.TypeDBTransaction;
import com.vaticle.typedb.client.TypeDB;
public class TypeDBQuickstartB {
public static void main(String[] args) {
TypeDBClient client = TypeDB.coreClient("localhost:1729");
try (TypeDBSession session = client.session("social_network", TypeDBSession.Type.DATA)) {
// creating a write transaction
TypeDBTransaction writeTransaction = session.transaction(TypeDBTransaction.Type.WRITE);
// write transaction is open
// write transaction must always be committed (closed)
writeTransaction.commit();
// creating a read transaction
TypeDBTransaction readTransaction = session.transaction(TypeDBTransaction.Type.READ);
// read transaction is open
// read transaction must always be closed
readTransaction.close();
}
client.close();
}
}
Querying
Running basic retrieval and insertion queries.
package com.vaticle.doc.examples;
import com.vaticle.typedb.client.TypeDB;
import com.vaticle.typedb.client.api.TypeDBClient;
import com.vaticle.typedb.client.api.TypeDBSession;
import com.vaticle.typedb.client.api.TypeDBTransaction;
import com.vaticle.typeql.lang.TypeQL;
import static com.vaticle.typeql.lang.TypeQL.*;
import com.vaticle.typeql.lang.query.TypeQLMatch;
import com.vaticle.typeql.lang.query.TypeQLInsert;
import com.vaticle.typedb.client.api.answer.ConceptMap;
import java.util.List;
import java.util.stream.Stream;
import java.util.stream.Collectors;
public class TypeDBQuickstartC {
public static void main(String[] args) {
TypeDBClient client = TypeDB.coreClient("localhost:1729");
try (TypeDBSession session = client.session("social_network", TypeDBSession.Type.DATA)) {
try (TypeDBTransaction writeTransaction = session.transaction(TypeDBTransaction.Type.WRITE)) {
// Insert a person using a WRITE transaction
TypeQLInsert insertQuery = TypeQL.insert(cVar("x").isa("person").has("email", "[email protected]"));
List<ConceptMap> insertedId = writeTransaction.query().insert(insertQuery).collect(Collectors.toList());
System.out.println("Inserted a person with ID: " + insertedId.get(0).get("x").asThing().getIID());
// to persist changes, a write transaction must always be committed (closed)
writeTransaction.commit();
}
try (TypeDBTransaction readTransaction = session.transaction(TypeDBTransaction.Type.READ)) {
// Read the person using a READ only transaction
TypeQLMatch.Limited getQuery = TypeQL.match(cVar("p").isa("person")).get(cVar("p")).limit(10);
Stream<ConceptMap> answers = readTransaction.query().match(getQuery);
answers.forEach(answer -> System.out.println(answer.get("p").asThing().getIID()));
}
}
client.close();
}
}
Remember that transactions always need to be closed. Committing a write transaction closes it. A read transaction,
however, must be explicitly closed by calling the |
Where to go next
Check out the Response section of API reference page to learn about the available methods on the concepts retrieved as the answers to queries.
To view examples of various TypeQL queries, head over to Writing data and Reading data pages.
For some more Java Driver examples — see the Java implementation on the Sample application page.