Skip to content

Commit

Permalink
feat : initial commit of jooq-jpa integration
Browse files Browse the repository at this point in the history
  • Loading branch information
rajadilipkolli committed Jan 5, 2025
1 parent f216c4b commit 0c30b08
Show file tree
Hide file tree
Showing 32 changed files with 1,708 additions and 0 deletions.
5 changes: 5 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@
- changed-files:
- any-glob-to-any-file:
- jpa/boot-hibernate2ndlevelcache-sample/**/*
"component: jpa-jooq":
- changed-files:
- any-glob-to-any-file:
- jpa/boot-jpa-jooq-sample/**/*
"component: jpa-lock":
- changed-files:
- any-glob-to-any-file:
Expand Down Expand Up @@ -145,6 +149,7 @@
- jpa/boot-data-envers/pom.xml
- jpa/boot-data-multipledatasources/pom.xml
- jpa/boot-hibernate2ndlevelcache-sample/pom.xml
- jpa/boot-data-jpa-jooq-sample/pom.xml
- jpa/boot-data-jpa-locks/pom.xml
- jpa/boot-read-replica-postgresql/pom.xml
- jpa/keyset-pagination/blaze-persistence/pom.xml
Expand Down
39 changes: 39 additions & 0 deletions .github/workflows/boot-jpa-jooq-sample.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: boot-jpa-jooq-sample

on:
push:
paths:
- "jpa/boot-jpa-jooq-sample/**"
branches: [main]
pull_request:
paths:
- "jpa/boot-jpa-jooq-sample/**"
types:
- opened
- synchronize
- reopened

jobs:
build:
name: Run Unit & Integration Tests
runs-on: ubuntu-latest
defaults:
run:
working-directory: "jpa/boot-jpa-jooq-sample"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis

- name: Set up JDK 21
uses: actions/[email protected]
with:
java-version: 21
distribution: "temurin"
cache: "maven"

- name: Grant execute permission for mvnw
run: chmod +x mvnw

- name: Build and analyze
run: ./mvnw clean verify
1 change: 1 addition & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
* [multiple datasources using Spring Boot](jpa/boot-data-multipledatasources/README.md),
* [spring-boot-hibernate2ndlevelcache-sample](jpa/boot-hibernate2ndlevelcache-sample/README.md)
* [JNDI in embedded Tomcat](jpa/boot-jndi-sample/README.md)
* [JPA Jooq Marriage](jpa/boot-jpa-jooq-sample/README.md)
* [JPA locks implementation](jpa/boot-jpa-locks/README.md)
* [read-replica-with-spring-boot](jpa/boot-read-replica-postgresql/README.md)
* [KeySet Pagination Using Blaze](jpa/keyset-pagination/blaze-persistence/README.md)
Expand Down
19 changes: 19 additions & 0 deletions jpa/boot-jpa-jooq-sample/.mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
wrapperVersion=3.3.2
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
14 changes: 14 additions & 0 deletions jpa/boot-jpa-jooq-sample/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
FROM eclipse-temurin:21.0.5_11-jre-alpine as builder
WORKDIR application
ARG JAR_FILE=target/batch-boot-jpa-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} application.jar
RUN java -Djarmode=layertools -jar application.jar extract

# the second stage of our build will copy the extracted layers
FROM eclipse-temurin:21.0.5_11-jre-alpine
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]
34 changes: 34 additions & 0 deletions jpa/boot-jpa-jooq-sample/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# boot-jpa-jooq-sample


### Format code

```shell
$ ./mvnw spotless:apply
```

### Run tests

```shell
$ ./mvnw clean verify
```

### Run locally

```shell
$ docker-compose -f docker/docker-compose.yml up -d
$ ./mvnw spring-boot:run -Dspring-boot.run.profiles=local
```

### Using Testcontainers at Development Time
You can run `TestJpaJooqApplication.java` from your IDE directly.
You can also run the application using Maven as follows:

```shell
./mvnw spring-boot:test-run
```


### Useful Links
* Swagger UI: http://localhost:8080/swagger-ui.html
* Actuator Endpoint: http://localhost:8080/actuator
17 changes: 17 additions & 0 deletions jpa/boot-jpa-jooq-sample/docker/docker-compose-app.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: '3.8'
services:

batch-jpa-jooq-sample:
build: ..
ports:
- "18080:8080"
- "18787:8787"
restart: always
depends_on:
- postgresqldb
environment:
- SPRING_PROFILES_ACTIVE=docker
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgresqldb:5432/appdb
- SPRING_DATASOURCE_USERNAME=appuser
- SPRING_DATASOURCE_PASSWORD=secret
48 changes: 48 additions & 0 deletions jpa/boot-jpa-jooq-sample/docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
version: '3.8'
services:

postgresqldb:
image: postgres:17.2-alpine
hostname: postgresqldb
extra_hosts: [ 'host.docker.internal:host-gateway' ]
environment:
- POSTGRES_USER=appuser
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=appdb
healthcheck:
test: ["CMD-SHELL", "pg_isready -U appuser -d appdb"]
interval: 10s
timeout: 5s
retries: 5
ports:
- "5432:5432"
networks:
- demo-network

pgadmin:
image: dpage/pgadmin4
extra_hosts: [ 'host.docker.internal:host-gateway' ]
environment:
- [email protected]
- PGADMIN_DEFAULT_PASSWORD=admin
- PGADMIN_CONFIG_SERVER_MODE=False
- PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED=False
ports:
- "5050:80"
depends_on:
postgresqldb:
condition: service_started
volumes:
- ./docker_pgadmin_servers.json:/pgadmin4/servers.json
entrypoint:
- "/bin/sh"
- "-c"
- "/bin/echo 'postgresqldb:5432:*:appuser:secret' > /tmp/pgpassfile && chmod 600 /tmp/pgpassfile && /entrypoint.sh"
restart: unless-stopped
networks:
- demo-network


networks:
demo-network:
driver: bridge
14 changes: 14 additions & 0 deletions jpa/boot-jpa-jooq-sample/docker/docker_pgadmin_servers.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"Servers": {
"1": {
"Name": "Docker Compose DB",
"Group": "Servers",
"Port": 5432,
"Username": "appuser",
"Host": "postgresqldb",
"SSLMode": "prefer",
"MaintenanceDB": "appdb",
"PassFile": "/tmp/pgpassfile"
}
}
}
Loading

0 comments on commit 0c30b08

Please sign in to comment.