{"id":37020020,"url":"https://github.com/ojplg/hrorm","last_synced_at":"2026-01-14T02:15:05.544Z","repository":{"id":34294878,"uuid":"151733084","full_name":"ojplg/hrorm","owner":"ojplg","description":"A simple Java ORM tool.","archived":false,"fork":false,"pushed_at":"2023-07-07T21:55:18.000Z","size":1276,"stargazers_count":3,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-07-28T17:36:28.170Z","etag":null,"topics":["database","java","orm","orm-library","persistence","rdbms","sql"],"latest_commit_sha":null,"homepage":"http://hrorm.org","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ojplg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-05T14:29:15.000Z","updated_at":"2022-01-15T17:55:36.000Z","dependencies_parsed_at":"2022-08-08T00:15:37.149Z","dependency_job_id":null,"html_url":"https://github.com/ojplg/hrorm","commit_stats":null,"previous_names":[],"tags_count":31,"template":null,"template_full_name":null,"purl":"pkg:github/ojplg/hrorm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojplg%2Fhrorm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojplg%2Fhrorm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojplg%2Fhrorm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojplg%2Fhrorm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ojplg","download_url":"https://codeload.github.com/ojplg/hrorm/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ojplg%2Fhrorm/sbom","scorecard":{"id":703850,"data":{"date":"2025-08-11","repo":{"name":"github.com/ojplg/hrorm","commit":"267d688e3d97074f8cfa8c71d7d7263efedc971e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Code-Review","score":0,"reason":"Found 0/20 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Lesser General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.15.1 not signed: https://api.github.com/repos/ojplg/hrorm/releases/22230918","Warn: release artifact 0.15.0 not signed: https://api.github.com/repos/ojplg/hrorm/releases/21751239","Warn: release artifact 0.14.0 not signed: https://api.github.com/repos/ojplg/hrorm/releases/20062978","Warn: release artifact 0.13.0 not signed: https://api.github.com/repos/ojplg/hrorm/releases/17302377","Warn: release artifact 0.12.0 not signed: https://api.github.com/repos/ojplg/hrorm/releases/17146754","Warn: release artifact 0.15.1 does not have provenance: https://api.github.com/repos/ojplg/hrorm/releases/22230918","Warn: release artifact 0.15.0 does not have provenance: https://api.github.com/repos/ojplg/hrorm/releases/21751239","Warn: release artifact 0.14.0 does not have provenance: https://api.github.com/repos/ojplg/hrorm/releases/20062978","Warn: release artifact 0.13.0 does not have provenance: https://api.github.com/repos/ojplg/hrorm/releases/17302377","Warn: release artifact 0.12.0 does not have provenance: https://api.github.com/repos/ojplg/hrorm/releases/17146754"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 10 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T05:54:18.431Z","repository_id":34294878,"created_at":"2025-08-22T05:54:18.431Z","updated_at":"2025-08-22T05:54:18.431Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408711,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["database","java","orm","orm-library","persistence","rdbms","sql"],"created_at":"2026-01-14T02:15:04.965Z","updated_at":"2026-01-14T02:15:05.534Z","avatar_url":"https://github.com/ojplg.png","language":"Java","readme":"# \u003ca href=\"http://hrorm.org\"\u003ehrorm\u003c/a\u003e\n\n\nHrorm is a concise, declarative, opinionated, type-checked library for the creation of Data Access \nObjects (DAOs) that will not inflict your codebase with XMLosis or annotationitis.\n\nThe \u003ca href=\"http://hrorm.org\"\u003ehrorm\u003c/a\u003e website contains documentation for using\nit as well as detailed descriptions of the hows and whys of hrorm and its ethos.\n\n### Hacking\n\nThere is not much to say here.\nThe code builds with maven.\nHrorm itself has no dependencies.\nThe tests have a few dependencies, but they are all simply jars.\nThe tests run against an in memory database (H2).\nThere is not much code.\nOnce you clone it, you're basically ready to go.\n\nHrorm requires Java 8.\n\nVery short [CONTRIBUTING](CONTRIBUTING.md) doc.\n\nYou can also run the tests against postgres, but it takes a bit of work.\n1. Set up postgres locally\n   1. User named \"hrorm_user\"\n   1. Password \"hrorm_password\"\n   1. \"hrorm_user\" must own a database named \"hrorm\"\n1. cd to the scripts directory and run the `test_postgres.sh` script or edit the `HelperFactory` to use the `PostgresHelper` instead of the `H2Helper`\n\n### Improvement Ideas and Questions\n\n* Where object improvements:\n    * Is creating strange statements like \"a OR b AND c\" desirable? Should it be prohibited somehow?\n    * Can we use the column types (or field types) to improve type checking when building where clauses?\n    * Support for columns on joined tables?\n    * Support for columns on child tables?\n* Hrorm does a lot of string building at query time. Should SQL strings be cached? \n* Similarly, DaoBuilder objects are always mutable. Perhaps they should lock at Dao creation time?\n* Support different types, e.g. String GUIDs, for primary keys\n* Add methods that allow for updates and deletes based on Where objects\n* Make ChildSelectStrategy for immutable models\n* Check ChildSelectStrategy works for complicated structures\n* Check that join-of-join child selection works for subselects with strange primary key column names\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojplg%2Fhrorm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fojplg%2Fhrorm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fojplg%2Fhrorm/lists"}