diff --git a/spring-cloud-oci/docs/src/main/asciidoc/db_starters.adoc b/spring-cloud-oci/docs/src/main/asciidoc/db_starters.adoc index 67451eff..7500a6f3 100644 --- a/spring-cloud-oci/docs/src/main/asciidoc/db_starters.adoc +++ b/spring-cloud-oci/docs/src/main/asciidoc/db_starters.adoc @@ -246,3 +246,57 @@ dependencies { implementation 'com.oracle.database.spring:oracle-spring-boot-starter-wallet:24.4.0' } ---- + +=== Oracle JSON Collections + +This starter provides dependencies and tooling for using JSON with Oracle Database, including Oracle Database JSON Relational Duality Views. + +[source,xml] +---- + + com.oracle.database.spring + oracle-spring-boot-starter-json-collections + 24.4.0 + +---- + +For Gradle projects, add this dependency: + +[source,subs="normal"] +---- +dependencies { + implementation 'com.oracle.database.spring:oracle-spring-boot-starter-json-collections:24.4.0' +} +---- + +==== Using the Oracle JSON Collections Starter + +The `JSONB` bean is used to convert Java Obects to and from OSON (Oracle Database serialized JSON), using the `fromOSON` and `toOSON` methods. + +[source,java] +---- +@Autowired +JSONB jsonb; + +// Convert from OSON to Java Object +Student student = jsonb.fromOSON(inputStream, Student.class); +// Convert from Java Object to OSON +byte[] bytes = jsonb.toOSON(student); +---- + +The `JSONBRowMapper` implementation converts OSON database columns to Java Objects: + +[source,java] +---- +RowMapper rowMapper = new JSONBRowMapper<>(this.jsonb, Student.class); +List students = jdbcTemplate.query(con -> { + PreparedStatement ps = con.prepareStatement(""" + select * from students_dv v + where v.data.first_name = ? + and v.data.last_name = ? + """); + ps.setString(1, firstName); + ps.setString(2, lastName); + return ps; +}, rowMapper); +----