Bx orm configuration
Skill ortus-boxlang/skills/boxlang-modules/bx-orm/bx-orm-configuration
Use this skill when configuring bx-orm in BoxLang: Application.bx ormSettings, enabling the ORM, datasource setup, dbcreate options, dialect selection, entity paths, event handling, session management settings, and secondary cache configuration.From its SKILL.md
npx -y skills add ortus-boxlang/skills --skill bx-orm-configurationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.9 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
bx-orm: Configuration
Enabling ORM in Application.bx
class {
this.datasource = "myApp" // default datasource for ORM
this.ORMenabled = true
this.ormSettings = {
// required — always specify to avoid startup performance hit
entityPaths : [ "models/entities" ],
// database schema management
dbcreate : "update", // none | update | dropcreate
// performance & debugging
logSQL : false,
savemapping : false, // save .hbmxml files (debug only)
ignoreParseErrors : false,
// session management (recommended settings)
autoManageSession : false, // manage sessions yourself via transaction{}
flushAtRequestEnd : false, // don't auto-flush; use explicit transactions
// event system
eventHandling : false,
eventHandler : "", // path to global event handler class
}
}
dbcreate Options
| Value | Behavior |
|---|---|
none (default) | Does not modify the database schema |
update | Incrementally adds missing tables/columns; never drops |
dropcreate | Drops and recreates the entire schema on every ORM reload |
Recommendation: Use update in development, none in production (use DB migrations instead).
Key Settings Reference
| Setting | Default | Description |
|---|---|---|
entityPaths | (app directory) | Directories to scan for persistent classes. Always set this. |
datasource | this.datasource | Overrides the application datasource for ORM |
dbcreate | none | Schema management strategy |
dialect | auto | Hibernate SQL dialect (usually auto-detected) |
logSQL | false | Log generated SQL to console (debug) |
flushAtRequestEnd | true | Auto-flush at request end — set false in production |
autoManageSession | true | Let engine manage sessions — set false for explicit transactions |
eventHandling | false | Enable ORM lifecycle events |
eventHandler | Path to global ORM event handler class | |
secondaryCacheEnabled | false | Enable L2 cache (Ehcache) |
cacheConfig | Path to Ehcache XML config file | |
namingstrategy | default | Naming convention: default, smart, or custom class |
sqlScript | Path to SQL file executed after ORM init (seed data) | |
savemapping | false | Write Hibernate .hbmxml mapping files (debugging) |
Production-Ready Configuration
class {
this.datasource = "myApp"
this.ORMenabled = true
this.ormSettings = {
entityPaths : [ "models" ],
dbcreate : "none", // use DB migrations in production
flushAtRequestEnd : false, // explicit transactions only
autoManageSession : false, // manage sessions yourself
eventHandling : true,
eventHandler : "models.ORMEventHandler",
secondaryCacheEnabled: true,
cacheProvider : "Ehcache",
cacheConfig : "./config/ehcache.xml",
logSQL : false,
ignoreParseErrors : false
}
}
Dialect Configuration
Let Hibernate auto-detect (works 95% of the time), or specify explicitly:
this.ormSettings = {
dialect: "MySQL57InnoDB" // explicit dialect
// dialect: "PostgreSQL9"
// dialect: "SQLServer2008"
// dialect: "Oracle10g"
// dialect: "H2"
}
Common dialects: MySQL5InnoDB, MySQL57InnoDB, MariaDB, PostgreSQL9, SQLServer2008, Oracle10g, H2, HSQL.
Multiple Datasources
this.ormSettings = {
entityPaths: [ "models/primary", "models/reporting" ],
datasource : "primary" // default; individual entities can override
}
Override per-entity:
class persistent="true" datasource="reporting" {
// ...
}
ORM Reload (Development)
Force a full reload of ORM mappings (clears entity cache):
ORMReload()
Useful after adding entities or changing mappings during development.
Common Pitfalls
- ❌ Do NOT omit
entityPaths— it will scan the entire application tree (very slow) - ❌ Do NOT use
flushAtRequestEnd=truein production — leads to unpredictable saves - ❌ Do NOT use
autoManageSession=truewhen using explicittransaction{}blocks - ✅ Always use explicit
transaction {}blocks to demarcate database writes - ✅ Set
logSQL=truetemporarily to debug unexpected queries - ✅ Use
savemapping=truetemporarily to inspect Hibernate XML mappings when debugging
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.