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

Modernizing Web Applications and Expanding Practical AI around the World

Modernizing Web Applications and Expanding Practical AI around the World

In partnership with El Salvador’s Ministry of Foreign Affairs, Ortus Solutions created a space for business leaders, technology teams, universities, professionals, and developers to explore how modern tools can improve productivity, extend existing applications, and make AI adoption more practical

Maria Jose Herrera
Maria Jose Herrera
July 22, 2026