Closed TokgoRonin closed 1 year ago
A Spring Boot Starter is coming soon.
Meanwhile you can define a bean for the driver object and inject it in your service layer.
1- Add SurrealDB server details to your application.properties
or application.yml
# The names can be anything, but change them in SurrealDbConfig
surrealdb.host=localhost
surrealdb.port=8000
surrealdb.use-tls=false
surrealdb.username=root
surrealdb.password=root
surrealdb.namespace=test
surrealdb.database=test
2- Configure a bean for SurrealDB driver
@Slf4j
@Configuration
public class SurrealDbConfig {
@Bean
public SyncSurrealDriver newSyncSurrealDriverBean(
@Value("${surrealdb.host}") String host,
@Value("${surrealdb.port}") int port,
@Value("${surrealdb.use-tls}") boolean useTls,
@Value("${surrealdb.username}") String username,
@Value("${surrealdb.password}") String password,
@Value("${surrealdb.namespace}") String namespace,
@Value("${surrealdb.database}") String database
){
log.info("Trying to connect to SurrealDB server ...");
// setup connection
SurrealConnection connection = new SurrealWebSocketConnection(host, port, useTls);
connection.connect(10);
// setup driver
SyncSurrealDriver driver = new SyncSurrealDriver(connection);
driver.signIn(username, password);
driver.use(namespace, database);
log.info("Connected Successfully");
return driver;
}
}
2- Inject the driver and use it
package com.example.demo.person;
import com.surrealdb.driver.SyncSurrealDriver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class PersonService {
@Autowired
private SyncSurrealDriver surreal;
public List<Person> getAll() {
return surreal.select("person", Person.class);
}
public Person createNew(NewPersonDto dto) {
Person newPerson = new Person();
newPerson.setName(dto.getName());
newPerson.setAge(dto.getAge());
return surreal.create("person", newPerson);
}
}
For a complete example, see the example repo I just created.
Note: Please get the latest JAR from here https://github.com/coder966/surrealdb.java-wip/releases/tag/v0.1.0 until this PR gets merged.
A Spring Boot Starter is coming soon.
Meanwhile you can define a bean for the driver object and inject it in your service layer.
1- Add SurrealDB server details to your
application.properties
orapplication.yml
# The names can be anything, but change them in SurrealDbConfig surrealdb.host=localhost surrealdb.port=8000 surrealdb.use-tls=false surrealdb.username=root surrealdb.password=root surrealdb.namespace=test surrealdb.database=test
2- Configure a bean for SurrealDB driver
@Slf4j @Configuration public class SurrealDbConfig { @Bean public SyncSurrealDriver newSyncSurrealDriverBean( @Value("${surrealdb.host}") String host, @Value("${surrealdb.port}") int port, @Value("${surrealdb.use-tls}") boolean useTls, @Value("${surrealdb.username}") String username, @Value("${surrealdb.password}") String password, @Value("${surrealdb.namespace}") String namespace, @Value("${surrealdb.database}") String database ){ log.info("Trying to connect to SurrealDB server ..."); // setup connection SurrealConnection connection = new SurrealWebSocketConnection(host, port, useTls); connection.connect(10); // setup driver SyncSurrealDriver driver = new SyncSurrealDriver(connection); driver.signIn(username, password); driver.use(namespace, database); log.info("Connected Successfully"); return driver; } }
2- Inject the driver and use it
package com.example.demo.person; import com.surrealdb.driver.SyncSurrealDriver; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class PersonService { @Autowired private SyncSurrealDriver surreal; public List<Person> getAll() { return surreal.select("person", Person.class); } public Person createNew(NewPersonDto dto) { Person newPerson = new Person(); newPerson.setName(dto.getName()); newPerson.setAge(dto.getAge()); return surreal.create("person", newPerson); } }
For a complete example, see the example repo I just created.
Note: Please get the latest JAR from here https://github.com/coder966/surrealdb.java-wip/releases/tag/v0.1.0 until this PR gets merged.
thanks!
i want use it like a spring boot starter, just write some configuration. Now every operation on the database has to re-establish the connection, set namespace and databse, it's too redundant. I want to use it just like datasorce, as a bean for spring.