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

MatchBox and WebAssembly: Running BoxLang in the Browser and at the Edge

MatchBox and WebAssembly: Running BoxLang in the Browser and at the Edge

The MatchBox open beta is live at https://boxlang.ortusbooks.com/boxlang-framework/matchbox, and it brings something genuinely new to the BoxLang ecosystem: a path into WebAssembly.

That means BoxLang code can now move into browser applications, static-site deployments, edge runtimes, and WASI-style containers - without requiring a JVM. The feature is still beta, but the core direction is already useful: write BoxLang, compile it with MatchBox, and ship the generated WASM artifact to wherever a small portable runtime makes sense.

Jacob Beers
Jacob Beers
June 04, 2026