CREATETABLE products ( id SERIALPRIMARYKEY, name VARCHAR(200), metadata JSONB
);INSERTINTO products (name, metadata)VALUES('상품A','{"color": "red", "tags": ["sale", "new"]}');-- JSON 필드 조회SELECT name, metadata->>'color'AS color FROM products;-- metadata->>'color' : 텍스트로 반환-- metadata->'color' : JSON 값으로 반환-- 배열 요소 접근SELECT metadata->'tags'->0FROM products;-- "sale"
-- GIN 인덱스로 JSONB 전체 검색 최적화CREATEINDEX idx_products_metadata ON products USING GIN (metadata);-- 특정 키에 포함 여부 검색SELECT*FROM products WHERE metadata @>'{"tags": ["sale"]}';
// hypersistence-utils 라이브러리 사용 (권장)
implementation 'io.hypersistence:hypersistence-utils-hibernate-63:3.7.0'