{"id":18559007,"url":"https://github.com/linux-china/chdb-java-ffm","last_synced_at":"2026-03-15T08:30:34.362Z","repository":{"id":255177076,"uuid":"848254044","full_name":"linux-china/chdb-java-ffm","owner":"linux-china","description":"chdb with Java FFM(Foreign Function \u0026 Memory) binding","archived":false,"fork":false,"pushed_at":"2024-10-17T05:47:23.000Z","size":110,"stargazers_count":7,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T02:51:07.693Z","etag":null,"topics":["chdb","clickhouse","ffi"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linux-china.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-27T12:28:38.000Z","updated_at":"2025-01-10T07:04:34.000Z","dependencies_parsed_at":"2024-11-06T21:44:49.366Z","dependency_job_id":"a99b3b70-ecb2-4631-a301-7869e4a94a6c","html_url":"https://github.com/linux-china/chdb-java-ffm","commit_stats":null,"previous_names":["linux-china/chdb-java-ffm"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-china%2Fchdb-java-ffm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-china%2Fchdb-java-ffm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-china%2Fchdb-java-ffm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-china%2Fchdb-java-ffm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linux-china","download_url":"https://codeload.github.com/linux-china/chdb-java-ffm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248144155,"owners_count":21054876,"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":["chdb","clickhouse","ffi"],"created_at":"2024-11-06T21:41:49.991Z","updated_at":"2026-03-15T08:30:29.321Z","avatar_url":"https://github.com/linux-china.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"chdb Java FFM binding\n======================\n![chdb Java](logo.png)\n\nchdb-java-ffm is Java 22+ [JEP 454: Foreign Function \u0026 Memory API](https://openjdk.org/jeps/454) bind for [chdb](https://github.com/chdb-io).\n\n# Get started\n\n- Please add the following dependency to `pom.xml`:\n\n```xml\n\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.mvnsearch\u003c/groupId\u003e\n    \u003cartifactId\u003echdb-java-ffm\u003c/artifactId\u003e\n    \u003cversion\u003e0.2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n- Download chdb dynamic library by executing `update_libchdb.sh` script, or download from https://github.com/chdb-io/chdb/releases.\n- Write your first test:\n\n```java\npublic class ChdbConnectionTest {\n\n    @AutoClose\n    private static Connection conn;\n\n    @BeforeAll\n    public static void setUp() throws Exception {\n        String url = \"jdbc:chdb::memory:\";\n        conn = DriverManager.getConnection(url);\n    }\n\n    @Test\n    public void testConnection() throws SQLException {\n        String sql = \"select * from file('src/test/resources/logs.csv','CSV')\";\n        Statement statement = conn.createStatement();\n        ResultSet resultSet = statement.executeQuery(sql);\n        while (resultSet.next()) {\n            System.out.println(resultSet.getString(\"level\"));\n        }\n    }\n}\n```\n\n# chdb JDBC\n\nJDBC URLs:\n\n- `jdbc:chdb::memory:`: in-memory database, path is **`:memory:`**\n- `jdbc:chdb:/path/to/db`: database from file path, and both relative and absolute paths supported.\n\n# Development setup\n\n- Download and install [JDK 22](https://jdk.java.net/22/)\n- Download and install [jextract](https://jdk.java.net/jextract/)\n- Execute `update_libchdb.sh` to download dynamic library\n\n# FAQ\n\n### How to load dynamic library from other path?\n\nExecute `ln -s /usr/local/lib/libchdb.so libchdb.dylib` to link the dynamic library to the current directory.\n\n### Update operation support?\n\nNow only query support, and update will be implemented in the future.\n\n### PreparedStatement support?\n\nNow PreparedStatement implement is not real, just fake implement friendly for libraries and frameworks.\n\n### Spring Jdbc support?\n\nYes, you can use `JdbcTemplate` with chdb-java-ffm. \n\n### How it works?\n\nJava -\u003e FFM -\u003e chdb(embedded) -\u003e JSON Output -\u003e ResultSet.\n\n**Attention**: chdb-java-ffm uses Jackson for JSON parsing.\n\n# References\n\n* [JEP 454](https://openjdk.org/jeps/454): Foreign Function \u0026 Memory API\n* [jextract](https://jdk.java.net/jextract/): a tool which mechanically generates Java bindings from native library headers\n* [chdb-java](https://github.com/chdb-io/chdb-java): chdb JNI version\n* [clickhouse-java](https://github.com/ClickHouse/clickhouse-java): Java client and JDBC driver for ClickHouse","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-china%2Fchdb-java-ffm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinux-china%2Fchdb-java-ffm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-china%2Fchdb-java-ffm/lists"}