{"id":19563116,"url":"https://github.com/fasterxml/jackson-datatype-hibernate","last_synced_at":"2025-04-11T00:51:53.843Z","repository":{"id":1206883,"uuid":"1118081","full_name":"FasterXML/jackson-datatype-hibernate","owner":"FasterXML","description":"Add-on module for Jackson JSON processor which handles Hibernate (https://www.hibernate.org/) datatypes; and specifically aspects of lazy-loading","archived":false,"fork":false,"pushed_at":"2025-04-08T03:46:10.000Z","size":1770,"stargazers_count":319,"open_issues_count":33,"forks_count":109,"subscribers_count":29,"default_branch":"2.x","last_synced_at":"2025-04-11T00:51:48.291Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FasterXML.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-11-28T00:51:50.000Z","updated_at":"2025-04-08T21:00:19.000Z","dependencies_parsed_at":"2023-07-05T20:02:11.028Z","dependency_job_id":"d2800f12-12d4-4016-a8cd-51172884bc57","html_url":"https://github.com/FasterXML/jackson-datatype-hibernate","commit_stats":{"total_commits":726,"total_committers":37,"mean_commits":19.62162162162162,"dds":0.221763085399449,"last_synced_commit":"290ed9942a2f837e8ee75095d5f314408b8fb9a8"},"previous_names":["fasterxml/jackson-module-hibernate"],"tags_count":141,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjackson-datatype-hibernate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjackson-datatype-hibernate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjackson-datatype-hibernate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FasterXML%2Fjackson-datatype-hibernate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FasterXML","download_url":"https://codeload.github.com/FasterXML/jackson-datatype-hibernate/tar.gz/refs/heads/2.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248322609,"owners_count":21084336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-11-11T05:16:36.982Z","updated_at":"2025-04-11T00:51:53.059Z","avatar_url":"https://github.com/FasterXML.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Project to build [Jackson](../../../jackson) module (jar) to\nsupport JSON serialization and deserialization of Hibernate (https://hibernate.org) specific datatypes\nand properties; especially lazy-loading aspects.\n\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5/)\n[![Javadoc](https://javadoc.io/badge/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5.svg)](https://www.javadoc.io/doc/com.fasterxml.jackson.datatype/jackson-datatype-hibernate5)\n\n## Status\n\nAs of version 2.0 module is usable and used by non-trivial number of developers and projects.\n\nNote: Hibernate 4.x and 5.x are supported (5.x starting with Jackson 2.6),\nbut they require different jar, and Maven artifact names (and jar names differ).\nThis document refers to \"Hibernate 5\" version, but changes with 4.x should require\nlittle more than replacing \"5\" in names with \"4\".\n\nHibernate 3.x was supported up to Jackson 2.12 but is no longer supported at and after 2.13\n\nJackson 2.13 adds Support for \"Hibernate 5 Jakarta\" variant (for Hibernate 5.5 and beyond);\nsee below for more information.\n\nJackson 2.15 adds Support for Hibernate 6.x;\nsee below for more information.\n\n### JDK requirements\n\nBefore Jackson 2.15, baseline JDK needed for building for JDK 8 and all\nmodule variants worked on Java 8.\n\nWith Jackson 2.15, JDK 11 will be required to build: all modules run on\nJava 8 except for Hibernate 6.x module which requires Java 11 like\nHibernate 6.x itself.\n\n### Javax vs Jakarta\n\nDue to changes related to\n[Java EE to Jakarta EE](https://blogs.oracle.com/javamagazine/post/transition-from-java-ee-to-jakarta-ee)\ntransition (also known as \"JAXB to Jakarta\" etc etc), there are 2 variants of Hibernate 5 module:\n\n* One that works with \"old\" JAXB/JavaEE APIs: `jackson-datatype-hibernate5`\n* One that works with \"new\" Jakarta APIs: `jackson-datatype-hibernate5-jakarta`\n\nNote that for Hibernate 4.x only old APIs matter; and for 6.x and later only new (Jakarta)\nAPIs are used -- so there are no separate modules.\n\n## Usage\n\n### Maven dependency\n\nTo use module on Maven-based projects, use following dependency\n(with whatever is the latest version available):\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.fasterxml.jackson.datatype\u003c/groupId\u003e\n  \u003cartifactId\u003ejackson-datatype-hibernate5\u003c/artifactId\u003e\n  \u003cversion\u003e2.14.2\u003c/version\u003e\n\u003c/dependency\u003e    \n```\n\nor whatever version is most up-to-date at the moment;\n\nNote that you need to use \"jackson-datatype-hibernate4\" for Hibernate 4.x.\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.fasterxml.jackson.datatype\u003c/groupId\u003e\n    \u003cartifactId\u003ejackson-datatype-hibernate4\u003c/artifactId\u003e\n    \u003cversion\u003e2.14.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nif you plan to use Hibernate 5.5 with the Jakarta Persistence API 3.0;\nyou will need the jakarta suffixed dependency for Hibernate 5.5:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.fasterxml.jackson.datatype\u003c/groupId\u003e\n    \u003cartifactId\u003ejackson-datatype-hibernate5-jakarta\u003c/artifactId\u003e\n    \u003cversion\u003e2.14.2\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\nyou will need to use \"jackson-datatype-hibernate6\" for Hibernate 6.x (when v2.15.0 is released):\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.fasterxml.jackson.datatype\u003c/groupId\u003e\n    \u003cartifactId\u003ejackson-datatype-hibernate6\u003c/artifactId\u003e\n    \u003cversion\u003e2.15.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Registering module\n\nLike all standard Jackson modules (libraries that implement Module interface), registration is done as follows:\n\n```java\nObjectMapper mapper = new ObjectMapper();\n// for Hibernate 4.x:\nmapper.registerModule(new Hibernate4Module());\n// or, for Hibernate 5.x\nmapper.registerModule(new Hibernate5Module());\n// or, for Hibernate 5.5+ with Jakarta\nmapper.registerModule(new Hibernate5JakartaModule());\n// or, for Hibernate 6.x\nmapper.registerModule(new Hibernate6Module());\n```\n\nafter which functionality is available for all normal Jackson operations.\n\n### Avoiding infinite loops\n\n* https://www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion\n\n### Using with Spring MVC\n\nAlthough more common way would be to register the module explicitly, it is alternatively\npossible to just sub-class ObjectMapper and register the module in constructor.\n\n```java\npublic class HibernateAwareObjectMapper extends ObjectMapper {\n    public HibernateAwareObjectMapper() {\n        // This for Hibernate 5; change 5 to 4 if you need to support\n        // Hibernate 4 instead\n        registerModule(new Hibernate5Module());\n    }\n}\n```    \n\nThen add it as the objectmapper to be used\n\n```xml\n    \u003cmvc:annotation-driven\u003e\n        \u003cmvc:message-converters\u003e\n            \u003c!-- Use the HibernateAware mapper instead of the default --\u003e\n            \u003cbean class=\"org.springframework.http.converter.json.MappingJackson2HttpMessageConverter\"\u003e\n                \u003cproperty name=\"objectMapper\"\u003e\n                    \u003cbean class=\"path.to.your.HibernateAwareObjectMapper\" /\u003e\n                \u003c/property\u003e\n            \u003c/bean\u003e\n        \u003c/mvc:message-converters\u003e\n    \u003c/mvc:annotation-driven\u003e\n```\n\nIf mvc:annotation-driven is not being used, it can be added as a jsonconverter to the messageconverters of RequestMappingHandlerAdapter.\n\n## Other\n\nProject [Wiki](../../wiki) contains links to Javadocs and downloadable jars (from Central Maven repository).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffasterxml%2Fjackson-datatype-hibernate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffasterxml%2Fjackson-datatype-hibernate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffasterxml%2Fjackson-datatype-hibernate/lists"}