Apache Cayenne: a Java ORM Alternative

25
Apache Cayenne a Java ORM Alternative by Andrus Adamchik @andrus_a

Transcript of Apache Cayenne: a Java ORM Alternative

Page 1: Apache Cayenne: a Java ORM Alternative

Apache Cayennea Java ORM Alternativeby Andrus Adamchik @andrus_a

Page 2: Apache Cayenne: a Java ORM Alternative

About Me

• Member and VP of the Apache Software Foundation.• Run a company called ObjectStyle.• Open source developer: ORM, dependency injection, REST,

no-container, etc.

Page 3: Apache Cayenne: a Java ORM Alternative

What is Apache Cayenne• A mature user-friendly Java ORM with modeling tools.• An alternative object persistence philosophy.• Current dev version is 4.0 (209 new features and bug fixes).• Used by commercial, government and educational orgs on

all continents.

Page 4: Apache Cayenne: a Java ORM Alternative

History• 2001: Inception.• 2002: First Alpha Release and a large production

deployment.• 2006: "ObjectStyle Cayenne" becomes "Apache Cayenne".• 2016: Active project with great community.

Page 5: Apache Cayenne: a Java ORM Alternative

"Community over Code"• A community-driven project under Apache Foundation

umbrella.• Dozens of contributors over the years.• 8 PMC (Project Management Committee) members.• Meritocracy - anyone can earn a vote by contributing.

Page 6: Apache Cayenne: a Java ORM Alternative

Demo

Page 7: Apache Cayenne: a Java ORM Alternative

Project Setup• CayenneModeler helps to setup and maintain the project.• DB-first approach to ORM gets you started quickly with

existing DB.• Auto sync of DB changes without overriding custom

mapping.

Page 8: Apache Cayenne: a Java ORM Alternative

Starting Cayenne

Page 9: Apache Cayenne: a Java ORM Alternative

Obtaining ObjectContext

Page 10: Apache Cayenne: a Java ORM Alternative

Running a Query

Page 11: Apache Cayenne: a Java ORM Alternative

Editing and Saving Objects

Page 12: Apache Cayenne: a Java ORM Alternative

Cayenne vs. JPA / Hibernate

Page 13: Apache Cayenne: a Java ORM Alternative

Transactions• JPA/Hibernate were born in the EJB world. Both are

transaction-centric.• Cayenne transactions are implicit, unless you want it

otherwise.• Cayenne is not connected to DB between JDBC operations.• Better connection pool reuse and no user TX code.

Page 14: Apache Cayenne: a Java ORM Alternative

ObjectContext• An isolated unit of work (each context has its own copy of objects).

• Not holding any open resources (connections, etc.), doesn't need to be closed.

• Fairly cheap - you can create as many instances as you need.

• Can be nested (similar to nested transactions, only in memory).

• Object graph can be expanded lazily as object relationships are traversed.

Page 15: Apache Cayenne: a Java ORM Alternative

Persistent Object• Framework-provided superclass - CayenneDataObject.• No pollution with ORM annotations.• Generic property access API.• Generic mapping - can be created in runtime.

Page 16: Apache Cayenne: a Java ORM Alternative

Other Good Things

Page 17: Apache Cayenne: a Java ORM Alternative

Dependency Injection (DI)

Page 18: Apache Cayenne: a Java ORM Alternative

Nested Contexts

Page 19: Apache Cayenne: a Java ORM Alternative

Remote Object Persistence

Page 20: Apache Cayenne: a Java ORM Alternative

Caching

Page 21: Apache Cayenne: a Java ORM Alternative

Handling Large Result Sets

Page 22: Apache Cayenne: a Java ORM Alternative

Batch Iterator

Page 23: Apache Cayenne: a Java ORM Alternative

cayenne-crypto

Page 24: Apache Cayenne: a Java ORM Alternative

Why Cayenne?• Mature, performant, user-friendly.• Opinionated on the side of usability.• Not obsessed about transactions. Smooth object graph

navigation.• Community-driven. You can have a voice!

Page 25: Apache Cayenne: a Java ORM Alternative

Questions?

• @ApacheCayenne• http://cayenne.apache.org/• https://github.com/apache/cayenne