{"id":"1944f392-b65f-4a95-b1fb-e7d572d44c9c","shortId":"AfrShq","kind":"skill","title":"511-frameworks-micronaut-jdbc","tagline":"Use when you need programmatic JDBC in Micronaut — pooled DataSource, parameterized SQL, io.micronaut.transaction.annotation.Transactional, batching, and domain exception translation. This should trigger for requests such as Review JDBC or SQL data access in a Micronaut project; ","description":"# Micronaut JDBC — programmatic SQL\n\nApply programmatic JDBC patterns in Micronaut with safe SQL and clear transactions.\n\n**What is covered in this Skill?**\n\n- Injected javax.sql.DataSource (Hikari-backed with micronaut-jdbc-hikari) and try-with-resources for Connection / PreparedStatement\n- PreparedStatement with bind parameters — never string concatenation\n- Mapping ResultSet rows to Java records (dedicated mapRow method)\n- Safe single-row queries with Optional<T>; never assume rs.next() succeeds\n- SQLException translation to domain exceptions (catch-translate-rethrow)\n- Streaming large result sets with setFetchSize to avoid OOM\n- Batch updates with addBatch / executeBatch for bulk inserts\n- @Transactional service boundaries and TransactionDefinition.Propagation (e.g. REQUIRES_NEW for independent commits)\n- Self-invocation pitfall: call transactional collaborators through injected beans, not this.method()\n- SQL text blocks for multi-line SQL (upserts, dialect-specific clauses)\n- When to prefer Micronaut Data (`@512`) vs raw JDBC\n\n**Scope:** Apply recommendations based on the reference rules and good/bad code examples.\n\n## Constraints\n\nCompile before JDBC refactors; verify after changes.\n\n- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change\n- **PREREQUISITE**: Project must compile before applying JDBC improvements\n- **SAFETY**: If compilation fails, stop immediately\n- **BLOCKING CONDITION**: Compilation errors must be resolved by the user before proceeding\n- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements\n- **BEFORE APPLYING**: Read the reference for detailed rules and examples\n\n## When to use this skill\n\n- Review JDBC or SQL data access in a Micronaut project\n- Improve transactions and parameter binding for Micronaut JDBC\n- Translate SQLException to domain exceptions or stream large result sets\n- Fix self-invocation bypassing @Transactional in Micronaut\n\n## Workflow\n\n1. **Read reference and assess project context**\n\nRead `references/511-frameworks-micronaut-jdbc.md` and inspect the current project setup before proposing changes.\n\n2. **Gather scope and decide target improvements**\n\nIdentify requested outcomes, constraints, and the minimum safe set of changes to apply.\n\n3. **Apply framework-aligned changes**\n\nImplement or refactor configuration/code following the reference patterns and project conventions.\n\n4. **Run verification and report results**\n\nExecute appropriate build/tests and summarize what changed, what was verified, and any follow-up actions.\n\n## Reference\n\nFor detailed guidance, examples, and constraints, see [references/511-frameworks-micronaut-jdbc.md](references/511-frameworks-micronaut-jdbc.md).","tags":["511","frameworks","micronaut","jdbc","cursor","rules","java","jabrena","agent-skills","ai-skills","claude","claude-code"],"capabilities":["skill","source-jabrena","skill-511-frameworks-micronaut-jdbc","topic-agent-skills","topic-ai-skills","topic-claude","topic-claude-code","topic-claude-code-skills","topic-claude-code-subagents","topic-claude-skills","topic-cursor-agent","topic-cursor-ai","topic-cursor-skills","topic-cursorai","topic-github-copilot"],"categories":["cursor-rules-java"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jabrena/cursor-rules-java/511-frameworks-micronaut-jdbc","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jabrena/cursor-rules-java","source_repo":"https://github.com/jabrena/cursor-rules-java","install_from":"skills.sh"}},"qualityScore":"0.631","qualityRationale":"deterministic score 0.63 from registry signals: · indexed on github topic:agent-skills · 362 github stars · SKILL.md body (2,728 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-26T12:53:38.995Z","embedding":null,"createdAt":"2026-04-18T22:02:25.709Z","updatedAt":"2026-04-26T12:53:38.995Z","lastSeenAt":"2026-04-26T12:53:38.995Z","tsv":"'/mvnw':201,238 '1':300 '2':318 '3':338 '4':355 '511':1 '512':175 'access':36,268 'action':376 'addbatch':129 'align':342 'appli':45,180,207,215,246,249,337,339 'appropri':362 'assess':304 'assum':105 'avoid':124 'back':67 'base':182 'batch':19,126 'bean':154 'bind':83,277 'block':159,224 'boundari':136 'build/tests':363 'bulk':132 'bypass':295 'call':149 'catch':114 'catch-translate-rethrow':113 'chang':198,209,317,335,343,367 'claus':169 'clean':239,243 'clear':55 'code':189 'collabor':151 'commit':144 'compil':192,202,205,213,220,226 'concaten':87 'condit':225 'configuration/code':347 'connect':79 'constraint':191,328,383 'context':306 'convent':354 'cover':59 'current':312 'data':35,174,267 'datasourc':15 'decid':322 'dedic':94 'detail':254,379 'dialect':167 'dialect-specif':166 'domain':21,111,284 'e.g':139 'error':227 'exampl':190,257,381 'except':22,112,285 'execut':361 'executebatch':130 'fail':221 'fix':291 'follow':348,374 'follow-up':373 'framework':3,341 'framework-align':340 'frameworks-micronaut-jdbc':2 'gather':319 'good/bad':188 'guidanc':380 'hikari':66,72 'hikari-back':65 'identifi':325 'immedi':223 'implement':344 'improv':217,247,273,324 'independ':143 'inject':63,153 'insert':133 'inspect':310 'invoc':147,294 'io.micronaut.transaction.annotation.transactional':18 'java':92 'javax.sql.datasource':64 'jdbc':5,11,32,42,47,71,178,194,216,264,280 'larg':118,288 'line':163 'mandatori':199 'map':88 'maprow':95 'method':96 'micronaut':4,13,39,41,50,70,173,271,279,298 'micronaut-jdbc-hikari':69 'minimum':331 'multi':162 'multi-lin':161 'must':212,228 'mvn':204,242 'need':9 'never':85,104 'new':141 'oom':125 'option':103 'outcom':327 'paramet':84,276 'parameter':16 'pattern':48,351 'pitfal':148 'pool':14 'prefer':172 'preparedstat':80,81 'prerequisit':210 'proceed':235 'programmat':10,43,46 'project':40,211,272,305,313,353 'propos':316 'queri':101 'raw':177 'read':250,301,307 'recommend':181 'record':93 'refactor':195,346 'refer':185,252,302,350,377 'references/511-frameworks-micronaut-jdbc.md':308,385,386 'report':359 'request':28,326 'requir':140 'resolv':230 'resourc':77 'result':119,289,360 'resultset':89 'rethrow':116 'review':31,263 'row':90,100 'rs.next':106 'rule':186,255 'run':200,237,356 'safe':52,97,332 'safeti':218 'scope':179,320 'see':384 'self':146,293 'self-invoc':145,292 'servic':135 'set':120,290,333 'setfetchs':122 'setup':314 'singl':99 'single-row':98 'skill':62,262 'skill-511-frameworks-micronaut-jdbc' 'source-jabrena' 'specif':168 'sql':17,34,44,53,157,164,266 'sqlexcept':108,282 'stop':222 'stream':117,287 'string':86 'succeed':107 'summar':365 'target':323 'text':158 'this.method':156 'topic-agent-skills' 'topic-ai-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-code-skills' 'topic-claude-code-subagents' 'topic-claude-skills' 'topic-cursor-agent' 'topic-cursor-ai' 'topic-cursor-skills' 'topic-cursorai' 'topic-github-copilot' 'transact':56,134,150,274,296 'transactiondefinition.propagation':138 'translat':23,109,115,281 'tri':75 'trigger':26 'try-with-resourc':74 'updat':127 'upsert':165 'use':6,260 'user':233 'verif':357 'verifi':196,236,240,244,370 'vs':176 'workflow':299","prices":[{"id":"3a35e703-88c6-4f41-accb-0c1557b0836a","listingId":"1944f392-b65f-4a95-b1fb-e7d572d44c9c","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jabrena","category":"cursor-rules-java","install_from":"skills.sh"},"createdAt":"2026-04-18T22:02:25.709Z"}],"sources":[{"listingId":"1944f392-b65f-4a95-b1fb-e7d572d44c9c","source":"github","sourceId":"jabrena/cursor-rules-java/511-frameworks-micronaut-jdbc","sourceUrl":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/511-frameworks-micronaut-jdbc","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:25.709Z","lastSeenAt":"2026-04-26T12:53:38.995Z"}],"details":{"listingId":"1944f392-b65f-4a95-b1fb-e7d572d44c9c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jabrena","slug":"511-frameworks-micronaut-jdbc","github":{"repo":"jabrena/cursor-rules-java","stars":362,"topics":["agent-skills","ai-skills","claude","claude-code","claude-code-skills","claude-code-subagents","claude-skills","cursor-agent","cursor-ai","cursor-skills","cursorai","github-copilot","intellij-idea","java","prompting","system-prompts"],"license":"apache-2.0","html_url":"https://github.com/jabrena/cursor-rules-java","pushed_at":"2026-04-26T12:50:01Z","description":"A curated and opinionated collection of Skills and Agents to be used in modern SDLC workflows for Java Enterprise development with your favorite AI Agent harness.","skill_md_sha":"41b19a50b6cdb81b93b9b3fadc8c3d78d514fd57","skill_md_path":"skills/511-frameworks-micronaut-jdbc/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/511-frameworks-micronaut-jdbc"},"layout":"multi","source":"github","category":"cursor-rules-java","frontmatter":{"name":"511-frameworks-micronaut-jdbc","license":"Apache-2.0","description":"Use when you need programmatic JDBC in Micronaut — pooled DataSource, parameterized SQL, io.micronaut.transaction.annotation.Transactional, batching, and domain exception translation. This should trigger for requests such as Review JDBC or SQL data access in a Micronaut project; Improve transactions and parameter binding for Micronaut JDBC; Translate SQLException to domain exceptions or stream large result sets; Fix self-invocation bypassing @Transactional in Micronaut. Part of cursor-rules-java project"},"skills_sh_url":"https://skills.sh/jabrena/cursor-rules-java/511-frameworks-micronaut-jdbc"},"updatedAt":"2026-04-26T12:53:38.995Z"}}