Re: [ANN] Cayenne 4.2.M2 release

Andrus Adamchik <[email protected]>
Newsgroups gmane.comp.java.cayenne.user
Message-ID <[email protected]>
To expand a bit, Cayenne basically provides a way to map DB-specific JSON columns to "org.apache.cayenne.value.Json". This gives a (hopefully) smooth experience reading and writing such values. How to use it:

1. Ensure your DB supports native JSON type (e.g. Postgres)
2. Map your DbAttribute as type "OTHER" 
3. Map your ObjAttribute as "org.apache.cayenne.value.Json"

2 & 3 would happen automatically on reverse-engineering if you are using DB-first flow. "org.apache.cayenne.value.Json" is simply a String wrapper. It intentionally doesn't have any parsing logic. Its purpose is to be a performant dependency-free container to pass JSON payload between the app and DB. If you need JSON as a tree, you may take a few more steps:

4. Pick a JSON parser such as Jackson.
5. Map ObjAttribute as a type supported by that parser (e.g. JsonNode in Jackson)
6. Write and register a custom "ValueObjectType<JsonNode, Json>" [1]
7. There is even a way to use DB-specific functions to query JSON [2] 

@Nikita: is it possible to apply custom functions in the WHERE clause as well?

Andrus

[1] https://cayenne.apache.org/docs/4.2/cayenne-guide/#value-object-type <https://cayenne.apache.org/docs/4.2/cayenne-guide/#value-object-type>
[2] https://github.com/apache/cayenne-examples/blob/master/cayenne-jdbc-type-other/src/main/java/org/apache/cayenne/demo/JsonTestCommand.java#L59



> On Oct 13, 2020, at 11:07 AM, Nikita Timofeev <[email protected]> wrote:
> 
> Hi Markus,
> 
> No docs for that yet, but here's an example of new types usage:
> 
> https://github.com/apache/cayenne-examples/tree/master/cayenne-jdbc-type-other
> 
> On Tue, Oct 13, 2020 at 10:41 AM Markus Reich <[email protected]> wrote:
>> 
>> Hi Andrus,
>> 
>> is there an example or doc for the support of JSON types?
>> 
>> regards
>> Meex
>> 
>> Am Di., 13. Okt. 2020 um 08:48 Uhr schrieb Andrus Adamchik <
>> [email protected]>:
>> 
>>> 4.2.M2 release is out [1]. A few cool things in this release:
>>> 
>>> * Support for JSON and geospatial value types.
>>> * Ordering on aggregate functions and in-memory evaluation of aggregate
>>> expressions.
>>> * Modeler support for downloading JDBC drivers from maven central.
>>> * Runtime changes that may be less obvious to the end user, but allow to
>>> handle a variety of edge cases.
>>> * Bug fixes
>>> 
>>> Also looks like we are pretty close to beta freeze. The main scope of 4.2
>>> is done, though of course improvement ideas keep popping up all the time,
>>> especially now that the new stack significantly expanded our SQL vocabulary
>>> and JDBC capabilities. E.g. one such idea is using EXISTS instead of JOIN +
>>> DISTINCT for to-many conditions [2].
>>> 
>>> Enjoy M2!
>>> 
>>> Andrus
>>> 
>>> [1] https://cayenne.apache.org/2020/10/cayenne-42m2-released/
>>> [2] https://issues.apache.org/jira/browse/CAY-2684
>> 
>> 
>> 
>> --
>> *Markus Reich*
>> Waldweg 62
>> 6393 St. Ulrich am Pillersee
>> www.markusreich.at / www.meeximum.at
>> [email protected]
> 
> 
> 
> -- 
> Best regards,
> Nikita Timofeev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.