{"id":28202654,"url":"https://github.com/tennyros/spring-boot-jooq","last_synced_at":"2026-05-20T14:02:46.431Z","repository":{"id":273529748,"uuid":"919432594","full_name":"tennyros/spring-boot-jooq","owner":"tennyros","description":"Using DB with jOOQ in Spring Boot","archived":false,"fork":false,"pushed_at":"2025-05-05T03:33:08.000Z","size":122,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-05-17T00:15:18.458Z","etag":null,"topics":["gradle","java-17","jooq","liquibase","spring-boot-application"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tennyros.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-20T11:33:11.000Z","updated_at":"2025-04-23T06:30:36.000Z","dependencies_parsed_at":"2025-01-21T13:35:06.884Z","dependency_job_id":"e4edb573-7e4e-4f9c-922c-5104539fbfcc","html_url":"https://github.com/tennyros/spring-boot-jooq","commit_stats":null,"previous_names":["tennyros/spring-boot-jooq"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tennyros/spring-boot-jooq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tennyros%2Fspring-boot-jooq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tennyros%2Fspring-boot-jooq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tennyros%2Fspring-boot-jooq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tennyros%2Fspring-boot-jooq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tennyros","download_url":"https://codeload.github.com/tennyros/spring-boot-jooq/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tennyros%2Fspring-boot-jooq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270749271,"owners_count":24638692,"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","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"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":["gradle","java-17","jooq","liquibase","spring-boot-application"],"created_at":"2025-05-17T00:16:15.065Z","updated_at":"2026-05-20T14:02:41.381Z","avatar_url":"https://github.com/tennyros.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Boot + jOOQ + Liquibase Integration\n\n![CI Status](https://github.com/tennyros/spring-boot-jooq/workflows/CI%20Pipeline%20with%20Gradle/badge.svg)\n![Coverage](https://github.com/tennyros/spring-boot-jooq/raw/coverage-badge/.github/badges/jacoco.svg)\n![Java 17](https://img.shields.io/badge/Java-17-blue)\n![Spring Boot 3.4.1](https://img.shields.io/badge/Spring_Boot-3.4.1-brightgreen)\n![jOOQ 3.19](https://img.shields.io/badge/jOOQ-3.19-orange)\n![Liquibase 4.26](https://img.shields.io/badge/Liquibase-4.26-lightblue)\n\n- **Spring Boot 3** - Core framework\n- **jOOQ** - Type-safe SQL queries\n- **Liquibase** - Database migrations\n- **CI/CD** - Automated pipeline\n\n## Technology Stack\n\n| Component          | Version   | Purpose                        |\n|--------------------|----------|--------------------------------|\n| Spring Boot        | 3.4.1    | Backend framework             |\n| jOOQ               | 3.19.0   | SQL class generation          |\n| Liquibase          | 4.26.0   | Database version control      |\n| PostgreSQL         | 15       | Primary database              |\n| Testcontainers     | 1.20.5   | Integration testing           |\n| SpringDoc OpenAPI  | 2.2.0    | API documentation             |\n\n## Project Structure\n\n```text\nBuild artifacts:\nbuild/\n├── generated/\n│   ├── source/\n│   │   └── jooq/  # Auto-generated jOOQ classes\n├── reports/\n│   ├── jacoco/\n│   │   └── test/  # JaCoCo coverage report\n\nSource code structure (dev branch):\nREADME.md          # English documentation\nREADME_RUS.md      # Russian documentation\n.github/           # CI configuration \nsrc/\n├── main/\n│   ├── java/\n│   │   └── com/github/tennyros/\n│   │       ├── config/      # Configuration classes\n│   │       ├── controller/  # REST endpoints\n│   │       ├── dto/         # Data transfer objects\n│   │       ├── repository/  # Data access (jOOQ)\n│   │       └── service/     # Business logic\n│   └── resources/\n│       ├── db/changelog/    # Liquibase migrations\n│       ├── application.yml  # Main configuration\n│       └── application-dev.yml  # Dev profile config\n├── test/\n│   ├── java/\n│   │    └── com/github/tennyros/\n│   │       ├── integration/ # Integration tests\n│   │       ├── component/   # Component tests\n│   │       └── unit/        # Unit tests\n│   └── resources/\n│       ├── scripts          # SQL test scripts\n│       └── application-test.yml # Test config\nbuild.gradle        # Build configuration\ngradle.properties   # Build variables\n```\n\n## CI Pipeline\n\n**Triggers:**  \nOn pushes to feature branches and pull requests to dev\n\n**Workflow stages:**\n\n1. Start PostgreSQL 15 container\n2. Cache Gradle dependencies\n3. Execute tests (unit + integration)\n4. Generate code coverage report\n5. Update coverage badge\n6. Send Telegram notification\n\n**Configuration:**\n\n```yaml\nname: CI Pipeline with Gradle\non:\n  push:\n    branches: [feature/*, test/*, hotfix/*]\n  pull_request:\n    branches: [dev]\n```\n\n## Quick Start\n\n### Prerequisites\n\n1. **Java 17+**\n2. **PostgreSQL 14+** (local or remote instance)\n3. **Gradle 8.11+** (wrapper included)\n\n### Project Setup\n\n**1. Copy configuration file:**\n\n```bash\ncp gradle.properties.example gradle.properties\n```\n\n**2. Update credentials in gradle.properties.**\n\n### IntelliJ IDEA Configuration\n\n**1. In Main.java run configuration:**\n\n```properties\nVM options: -Dspring.profiles.active=dev\n```\n\n**2. Set environment variables:**\n\n```text\nDB_BASE=postgresql\nDB_NAME=your_db_name\nDB_PASSWORD=your_password\nDB_PORT=5432\nDB_SERVER=localhost\nDB_USERNAME=your_user\n```\n\n### Build and Run\n\n**1. Build project:**\n\n```bash\n./gradlew build\n```\n\n**2. Run PostgreSQL via Docker (optional, if you don’t run own DB):**\n\n```bash\n# Copy the example config (if not customized yet)  \ncp docker-compose.example.yml docker-compose.yml  \n\n# Start PostgreSQL in Docker  \ndocker-compose up -d spring-boot-jooq-db  \n```\n\n**3. Run application:**\n\n```bash\n./gradlew bootRun\n```\n\n**API documentation available at:**\n\n```url\nhttp://localhost:8080/swagger-ui.html\n```\n\n### Important\n\n```text\nIf using docker-compose, PostgreSQL will be available at localhost:5438 (default credentials: postgres/root).\nIf you already have PostgreSQL, ensure application.yml/.env matches your DB settings.\n```\n\n## Testing\n\n**Test types:**\n\n```text\nunit/ - Unit tests\nintegration/ - Tests with real database\ncomponent/ - End-to-end tests\n```\n\n**Execution:**\n\n```bash\n./gradlew test           # All tests\n./gradlew test --tests \"*IT\"  # Integration tests only\n```\n\n## Key Features\n\n✓ CI integration\n\n✓ 80%+ code coverage (JaCoCo)\n\n✓ Automatic jOOQ generation\n\n✓ Telegram notifications\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftennyros%2Fspring-boot-jooq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftennyros%2Fspring-boot-jooq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftennyros%2Fspring-boot-jooq/lists"}