>  기사  >  Java  >  PostgreSQL의 JSON 열을 최대 절전 모드 엔터티 속성에 매핑하는 방법은 무엇입니까?

PostgreSQL의 JSON 열을 최대 절전 모드 엔터티 속성에 매핑하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-26 06:38:301070검색

How to Map JSON Columns in PostgreSQL to Hibernate Entity Properties?

PostgreSQL의 JSON 열을 Hibernate 엔터티 속성에 매핑

문제: JSON 열을 Hibernate 엔터티에 매핑

PostgreSQL에 저장된 JSON 데이터를 Hibernate 엔터티에 매핑 속성은 어려울 수 있습니다. 열을 엔터티의 문자열 필드에 매핑하려고 하면 엔터티 저장 중에 예외가 발생하여 다양한 문자(문자열)를 JSON으로 변환할 수 없음을 나타냅니다.

해결책: 사용자 정의 사용자 유형 정의

JSON 열을 Hibernate 엔터티에 효과적으로 매핑하려면 사용자 정의 사용자 유형을 정의해야 합니다. 이 유형은 데이터베이스에서 사용되는 문자열 값과 JSON 데이터 유형을 변환합니다.

1. PostgreSQL 언어 확장:

"json" 유형을 인식하도록 기본 PostgreSQL 언어 확장:

<code class="java">public class JsonPostgreSQLDialect extends PostgreSQL9Dialect {

    public JsonPostgreSQLDialect() {
        super();
        this.registerColumnType(Types.JAVA_OBJECT, "json");
    }
}</code>

2. 사용자 유형 구현:

사용자 정의 매핑을 정의하기 위해 org.hibernate.usertype.UserType 인터페이스를 구현합니다:

<code class="java">public class StringJsonUserType implements UserType {

    // ... implementation of required methods ...
}</code>

3. 엔터티 및 속성에 주석 추가:

엔티티 클래스 선언 및 JSON 매핑 속성에 다음 주석을 추가합니다.

<code class="java">@TypeDefs({@TypeDef(name = "StringJsonObject", typeClass = StringJsonUserType.class)})
...
@Type(type = "StringJsonObject")
public String getJsonPayload() { ... }</code>

샘플 프로젝트:

전체 구현 예시는 GitHub 프로젝트를 참조하세요: https://github.com/timfulmer/hibernate-postgres-jsontype

위 내용은 PostgreSQL의 JSON 열을 최대 절전 모드 엔터티 속성에 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.