7860 Commits
Author SHA1 Message Date
Rob Bygrave a8e92791cd Version 16.7.0 16.7.0 2026-06-03 07:44:59 +12:00
Rob Bygrave 94e63cc30f Merge pull request #3774 from ebean-orm/feature/timedMetric-max-reset
Add collectMetrics(reset) option, with change to query time metric MA…
2026-06-02 14:48:15 +12:00
Rob Bygrave 3567263250 Merge pull request #3775 from ebean-orm/feature/fix-error-profiling-batch
open telemetry: Fix for IndexOutOfBoundsException with Batched PreparedStatements and open telemetry
2026-06-02 14:46:54 +12:00
robin.bygrave bc03f8d516 open telemetry: Fix for IndexOutOfBoundsException with Batched PreparedStatements and open telemetry
Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
 at jdk.internal.util.Preconditions.outOfBounds(Unknown Source)
 at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source)
 at jdk.internal.util.Preconditions.checkIndex(Unknown Source)
 at java.util.Objects.checkIndex(Unknown Source)
 at java.util.ArrayList.get(Unknown Source)
 at io.ebeaninternal.server.persist.BatchedPstmt.profile(BatchedPstmt.java:132)
2026-06-02 14:42:44 +12:00
robin.bygrave 7035ff20eb Docs: Add a doc guide for adding open telemetry 2026-05-29 17:11:04 +12:00
Rob Bygrave f38479022a Merge pull request #3773 from ebean-orm/dependabot/maven/ebean-opentelemetry/io.opentelemetry-opentelemetry-api-1.62.0
Build(deps): Bump io.opentelemetry:opentelemetry-api from 1.51.0 to 1.62.0 in /ebean-opentelemetry
2026-05-21 22:12:11 +12:00
robin.bygrave 986cc905d8 Fix test only - Resource test entity table name invalid for Oracle 2026-05-21 22:10:58 +12:00
robin.bygrave 8f3fe688cb Fix test only - ResourceEntityTest SQL for Postgres uses ANY rather than IN 2026-05-21 22:05:59 +12:00
robin.bygrave eee26d9ed3 Add collectMetrics(reset) option, with change to query time metric MAX value to reset
So the desire here is to better support sending metrics to Prometheus style metrics collectors that prefer CUMULATIVE metrics rather than DELTA based metrics.

To do this, expose additional MetaInfoManager.collectMetrics(reset) method.

In supporting this, the MAX value really does need to reset even with CUMULATIVE metrics and act more like a gauge as otherwise it becomes almost useless as the max value over the lifetime. So we need to adjust MAX to always reset and act like a gauge to be useful in this CUMULATIVE metrics reporting mode.
2026-05-21 22:03:15 +12:00
dependabot[bot] 44bd60e586 Build(deps): Bump io.opentelemetry:opentelemetry-api
Bumps [io.opentelemetry:opentelemetry-api](https://github.com/open-telemetry/opentelemetry-java) from 1.51.0 to 1.62.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-java/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-java/blob/main/CHANGELOG.md)
- [Commits](https://github.com/open-telemetry/opentelemetry-java/compare/v1.51.0...v1.62.0)

---
updated-dependencies:
- dependency-name: io.opentelemetry:opentelemetry-api
  dependency-version: 1.62.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-14 16:44:36 +00:00
Rob Bygrave 20d7af6d25 Merge pull request #3772 from ebean-orm/feature/otel-isRecording
open telemetry: Use Span.current().isRecording() rather than isValid()
2026-05-14 16:22:57 +12:00
robin.bygrave e5aeda9d4e open telemetry: Use Span.current().isRecording() rather than isValid()
Change to use isRecording() to determine if ProfileStream should be
created for collecting profiling events
2026-05-14 16:20:28 +12:00
Sergey Kuznetsov 46bb1ca060 Add timeout support to UpdateQuery and DefaultUpdateQuery (#3771) 2026-05-14 15:25:07 +12:00
robin.bygrave 0652167101 docs: add next steps to test container guide
- Suggest TestEntityBuilder for test data creation
- Link to testing-with-testentitybuilder.md
2026-05-13 13:57:40 +12:00
robin.bygrave 6633293151 docs: update guide versions and fix defaults
- ebean.version 17.2.0 -> 17.5.0 (minimum for TestEntityBuilder)
- avaje-inject 11.5 -> 12.5
- Add io.avaje:junit:1.8 bundle to test dependencies
- Remove .skipDataSourceCheck(true) from database config example
- Add note about Configuration DI wiring in Step 3
2026-05-13 13:57:39 +12:00
Rob Bygrave 9e603f2848 Deprecate DatabaseConfig and DatabaseFactory, prefer Database.builder() (#3769)
* Deprecate DatabaseConfig and DatabaseFactory, prefer Database.builder()

Deprecate the DatabaseConfig way of creating Database instance.
Migrate to use Database.builder().

* Deprecate DatabaseConfig and DatabaseFactory, migrate test code

* Use @Deprecated(forRemoval = true) on DatabaseConfig and DatabaseFactory

* Tidy up Database javadoc for deprecation
2026-05-08 00:06:43 +12:00
Rob Bygrave fff345ffc8 Merge branch 'master' of github.com:ebean-orm/ebean 2026-05-07 22:13:16 +12:00
Rob Bygrave dd1fe845aa Remove the DefaultProfileHandler & DefaultProfileStream (Replaced by ebean-opentelemetry) (#3767)
So migrate to use opentelemetry, and remove these internal profilers as
they are never expected to be used now.
2026-05-07 22:10:08 +12:00
Rob Bygrave 80451c3c62 Performance: Improve OrmQueryProperties, include } into immutableHashSuffix (#3768) 2026-05-07 21:42:20 +12:00
Rob Bygrave 2d199737aa Docs: Add docs/notes on potential future L2 immutable bean cache 2026-05-07 21:36:45 +12:00
Rob Bygrave 63a1e9907d Version 16.6.0 16.6.0 2026-05-06 23:06:25 +12:00
Rob Bygrave 67db089646 Bump ebean-agent version, no effective change 2026-05-06 22:56:49 +12:00
dependabot[bot] 26478924a7 Build(deps): Bump org.postgresql:postgresql in /ebean-pgvector-types (#3766)
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.2 to 42.7.11.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.2...REL42.7.11)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-version: 42.7.11
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-06 22:50:12 +12:00
dependabot[bot] 3cb22fb0cc Build(deps): Bump org.postgresql:postgresql in /ebean-postgis-types (#3765)
Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.2 to 42.7.11.
- [Release notes](https://github.com/pgjdbc/pgjdbc/releases)
- [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.2...REL42.7.11)

---
updated-dependencies:
- dependency-name: org.postgresql:postgresql
  dependency-version: 42.7.11
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-06 22:49:42 +12:00
Rob Bygrave 4dde7064ba Add ImmutableBeanCache - some parts of the query result graph populated via ImmutableBeanCache (#3753)
* Change [implicit] Lazy loading to be by TYPE rather than by PATH

We have some graph models where a common type (in the tests it is Label)
is used in many different *paths* of the graph. When we are loading via
*path* then all the loading of the Labels isn't in a single batch / load context
but instead split into different load contexts PER PATH.

This change, means that lazy loading operates by TYPE instead of by PATH.

In the tests, all the Labels are read via a single lazy loading query rather
that one lazy loading query per PATH, and this is more efficient.

* ImmutableBeanCache part 1

* ImmutableBeanCache part 2

* ImmutableBeanCache part 3 - add ImmutableBeanCaches

* ImmutableBeanCache - add propagation of caches to secondary queries

* ImmutableBeanCache - use and improve BeanDescriptor.merge() to positional

Using positional avoids the lookup by property name.

* ImmutableBeanCache - add unit testing with BeanDescriptorMergeTest

* ImmutableBeanCache - add testing for the further lazy loading on mutable beans

Also add doc / guides

* Add ImmutableCacheBuilder with underlying DefaultServerCache implementation

This provides a cache with maxSize, maxIdleSeconds, maxSecondsToLive

* Improve javadoc and doc / guides for ImmutableBeanCache

* Add cache invalidation for ImmutableBeanCache

* Use immutable cache direct hits for unmodifiable assoc-one refs

 - add ImmutableBeanCache.getIfPresent() as a non-loading probe
 - use immutable cache hits in AssocOneHelp / AssocOneHelpRefInherit
 - avoid creating ref beans and merge/copy for unmodifiable cache hits
 - keep existing mutable-query and miss/backfill behavior unchanged
2026-05-06 22:35:30 +12:00
Rob BygraveandRob Bygrave 681221c0ff Add ebean-opentelemetry module (#3752)
* Enhance ProfileStream to support Open Telemetry

* Add ebean-opentelemetry module

* Add the sql query text as span attribute.

Note: This is a breaking API change here but I'm pretty confident
that no one is using the ProfileStream API - hmmm.

* Otel: Use the query label and transaction label in span name if available

* SpiProfileHandler: Change such that if service loaded, doesn't need ProfileConfig

---------

Co-authored-by: Rob Bygrave <robin.bygrave@gmail.com>
2026-05-06 21:49:31 +12:00
Rob Bygrave d6ce093ac5 Bench: Add general perf benchmark to FetchGroupSelectApplyBenchmark 2026-05-05 23:03:34 +12:00
Rob Bygrave 515b8e5958 Performance improvement in OrmQueryDetail with copyInto() (#3763)
Relatively minor improvement from reusing existing OrmQueryDetail
2026-05-05 22:54:58 +12:00
Rob Bygrave 86b4af1321 Performance improvement in OrmQueryProperties with immutable hash prefix and suffix (#3762) 2026-05-05 22:42:09 +12:00
Rob Bygrave eb73318f53 Performance improvement in OrmQueryProperties when appending Set<String> 2026-05-05 21:55:26 +12:00
Rob Bygrave 96a3ab9d79 Performance improvement in OrmQueryProperties for FetchGroup reuse (#3761) 2026-05-05 21:35:35 +12:00
Rob Bygrave 9954ad1ea7 Docs: Update add ebean postgres guide with gate on DI question 2026-05-04 23:50:19 +12:00
robin.bygrave 2928247ba7 Docs: Add the mkdir 2026-05-01 16:45:43 +12:00
robin.bygrave 3066bb4f74 Docs: Setup add a Step 4b - add di dependencies bit 2026-05-01 16:07:58 +12:00
robin.bygrave a96144cdaa Docs: Adjust setup guide with initial DI / no DI question 2026-05-01 16:03:11 +12:00
robin.bygrave 50e20c3aa0 Docs: update docs / skills location to separate git repo 2026-05-01 15:38:37 +12:00
robin.bygrave f07ca68eb3 Docs: Add docs/skill/ebean-orm 2026-05-01 15:09:54 +12:00
robin.bygrave 0ec7ddb82d Docs: Change the ordering so that test container setup proceeds the main database configuration 2026-05-01 14:59:36 +12:00
robin.bygrave 8074a24d03 Docs: Improve docs with DB -> database and wording around getters/setters/accessors 2026-05-01 14:52:43 +12:00
Rob Bygrave 7e4a2db9aa Add Query alsoIfPresent() as helper for Nullable conditional expressions (#3756)
Add this as a helper for when using alsoIf(BooleanPredicate) seems overkill
and there isn't a built in IfPresent option for the desired expression and
wanting to keep the fluid style.
2026-04-28 23:24:50 +12:00
Rob Bygrave 292dcf4b0e Add IfPresent options for like, ilike, startsWith, istartsWith, contains, icontains (#3755) 2026-04-28 23:06:57 +12:00
robin.bygrave f44bf59cb6 Docs: Improve testing-with-testentitybuilder.md - better wiring example 2026-04-24 17:52:44 +12:00
robin.bygrave 7c3741e258 Docs: Add llms.txt to assist agents
Note that this is effectively a duplication of the website llms.txt
2026-04-24 10:18:00 +12:00
robin.bygrave afadaa7208 Docs: Add a template AGENTS.md to assist agent onboarding 2026-04-24 09:32:37 +12:00
Rob Bygraveandrobin.bygrave 46b7510e6c TestEntityBuilder - add saveAll() helper method (#3751)
Co-authored-by: robin.bygrave <robin.bygrave@eroad.com>
2026-04-22 15:10:04 +12:00
Rob Bygrave bcb0b049ff Tests for Oracle, drop pstmtCache to 100
The default was bumped to 300. Seeing ORA-01000: maximum open cursors exceeded
in the Oracle integration test so thinking it is due to the increase in
default preparedStatement cache.
2026-04-22 00:15:25 +12:00
Rob Bygrave 42bfaaf2bf Tests for Oracle, drop pstmtCache to 100
The default was bumped to 300. Seeing ORA-01000: maximum open cursors exceeded
in the Oracle integration test so thinking it is due to the increase in
default preparedStatement cache.
2026-04-22 00:14:20 +12:00
Rob Bygrave 2ca39f1419 Fix test TestErrorBindLog for DB2 2026-04-22 00:03:22 +12:00
Rob Bygrave de2914e550 Fix test TestQueryJoinOnFormula for Postgres distinct on 2026-04-22 00:00:53 +12:00
robin.bygrave 6eda7044a0 Docs: Improve testing-with-testentitybuilder.md 2026-04-21 13:01:18 +12:00