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