Blog

ColdBox 4.0 ORM Services

Brad Wood February 12, 2015

Spread the word

Brad Wood

February 12, 2015

Spread the word


Share your thoughts

ColdBox's ORM services have always been a very compelling part of the framework for those using ORM in their applications.  The provide you with an automatic, extendable service layer for an ORM entity complete with common methods, pagination and really sweet syntactical sugar such as dynamic finders:

user = userService.findByLastName("Majano");
users = userService.findAllByLastLoginBetween( "01/01/2014", "01/01/2015" );
count = userService.countByLastLoginGreaterThan( "01/01/2013" );

All that sweetness is still there, but part of the cborm module so it's truly optional for those who want it.  Install cborm with CommandBox with this command while sitting in your web root:

CommandBox> install cborm

This module also replaces the old ORMService plugin as well.  It contains all the same services, but the component paths have been changed.  Here's a quick reference.  Do an extended find on your code base and replace any instances of the old component paths with the new. 

Old component path New component path
coldbox.system.orm.hibernate.VirtualEntityService cborm.models.VirtualEntityService
coldbox.system.orm.hibernate.ActiveEntity cborm.models.ActiveEntity
coldbox.system.orm.hibernate.BaseORMService cborm.models.BaseORMService

The cborm mapping will home in on the root of your ORM module regardless of where it's installed.  Unfortunately, due to the way that ORM is loaded by ColdFusion, if you are using the ORM EventHandler or ActiveEntity or any ColdBox Proxies that require ORM, you must create an Application Mapping in the Application.cfc like this:

this.mappings[ "/cborm" ] = COLDBOX_APP_ROOT_PATH & "modules/cborm";

Adjust the path as necessary to match your installation.

The same WireBox DSL namespaces are still available to you for injecting entity services.  The ORM Module will register these when it is activated.

// Inject a global ORM service
property name="genericEntityservice" inject="entityservice";

// Inject a Virtual entity service according to entityName
property name="foobarService" inject="entityservice:foobar";

 

Add Your Comment

Recent Entries

Into the Box 2025 | Plan Your Trip With Us!

Into the Box 2025 | Plan Your Trip With Us!

Are you ready to join us for Into the Box 2025 from April 30th to May 2nd in Washington, D.C.? Let’s make your trip planning as smooth as possible. Here you’ll find Airfare discounts, Hotel Deals and fun things to do to the the best out of your trip to D.C.

Maria Jose Herrera
Maria Jose Herrera
January 30, 2025
BoxLang YAML Support has landed

BoxLang YAML Support has landed

We’re thrilled to introduce the bx-yaml module for BoxLang!

This powerful new module brings seamless YAML parsing and emitting capabilities to BoxLang. You can now effortlessly serialize BoxLang native types—including structs, queries, arrays, classes, and more—into YAML. The same simplicity applies to deserialization, making it easy to work with YAML data in your BoxLang applications.

Luis Majano
Luis Majano
January 28, 2025
TestBox v6.1.0 Release

TestBox v6.1.0 Release

We’re super excited to announce the release of TestBox 6.1.0! This release introduces native support for BoxLang without the need for a compatibility mode, unlocking new possibilities for developers embracing BoxLang’s dynamic capabilities. Alongside this exciting update, we’ve added valuable features, improved functionality, and resolved key issues to ensure a smoother and more robust testing experience. Dive into the details and see how TestBox 6.1.0 makes your testing even more seamless and efficient!

Luis Majano
Luis Majano
January 28, 2025