You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/05/13 22:51:36 UTC

(cayenne) branch master updated (6bfad9e5a -> dee9fab7f)

This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


    from 6bfad9e5a removing obsolete test mock dependency
     new c241f8229 unifying CayenneTestsEnv tool
     new 81d8dc5c6 Unit tests cleanup - no need to make a distinction between ObjectContext and DataContext in the test Env
     new 17ee5a32c Unit tests cleanup - no need to make a distinction between ObjectContext and DataContext in the test Env
     new cd85b57c6 Unwinding CayenneTestsEnv.getInstance() to specific getters
     new dee9fab7f Unwinding CayenneTestsEnv.getInstance() to specific getters

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../org/apache/cayenne/dbsync/merge/MergeCase.java |  10 +-
 .../cayenne/dbsync/merge/MergerFactoryIT.java      |  22 +-
 .../cayenne/dbsync/merge/token/ValueForNullIT.java |  25 +-
 .../merge/token/db/SetGeneratedFlagToDbIT.java     |   2 +-
 .../dbsync/reverse/dbload/BaseLoaderIT.java        |   6 +-
 .../cayenne/dbsync/reverse/dbload/DbLoaderIT.java  |   6 +-
 .../java/org/apache/cayenne/CDOOneToManyFKIT.java  |  16 +-
 .../java/org/apache/cayenne/CDOOneToOneFKIT.java   |   2 +-
 .../org/apache/cayenne/CDOQualifiedEntitiesIT.java |   2 +-
 .../test/java/org/apache/cayenne/Cay2412IT.java    |   2 +-
 .../CayennePersistentObjectFlattenedRelIT.java     |  26 +-
 .../CayennePersistentObjectInContextIT.java        |   2 +-
 .../org/apache/cayenne/CircularDependencyIT.java   |   2 +-
 .../org/apache/cayenne/CompoundPkChangeIT.java     |  28 +-
 .../cayenne/DataContextMaxIdQualifierIT.java       |   4 +-
 .../apache/cayenne/FlattenedRelationshipsIT.java   |   2 +-
 .../java/org/apache/cayenne/GenericMappingIT.java  |  28 +-
 .../apache/cayenne/HybridPersistentObjectIT.java   |  36 +--
 .../java/org/apache/cayenne/PregeneratedPKIT.java  |   2 +-
 .../java/org/apache/cayenne/access/CAY2723IT.java  |   4 +-
 .../java/org/apache/cayenne/access/Cay2032IT.java  |   6 +-
 .../java/org/apache/cayenne/access/Cay2641IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2666IT.java  |   6 +-
 .../cayenne/access/DataContextArrayTypeIT.java     |   2 +-
 .../cayenne/access/DataContextBinaryPKIT.java      |   8 +-
 .../apache/cayenne/access/DataContextBlobIT.java   |   6 +-
 .../cayenne/access/DataContextCallbacksIT.java     |   6 +-
 .../apache/cayenne/access/DataContextCharPKIT.java |   6 +-
 .../cayenne/access/DataContextCharTypeIT.java      |   4 +-
 .../apache/cayenne/access/DataContextClobIT.java   |   6 +-
 .../apache/cayenne/access/DataContextCommitIT.java |   6 +-
 .../cayenne/access/DataContextCompoundRelIT.java   |   2 +-
 .../cayenne/access/DataContextCrossDBIT.java       |   4 +-
 .../access/DataContextDataChannelEventsIT.java     |   2 +-
 .../cayenne/access/DataContextDelegateIT.java      |   2 +-
 .../access/DataContextDelegateSharedCacheIT.java   |   2 +-
 .../cayenne/access/DataContextDeleteRulesIT.java   |   4 +-
 .../access/DataContextDisjointByIdPrefetchIT.java  |   4 +-
 .../DataContextDisjointByIdPrefetch_ExtrasIT.java  |   4 +-
 ...ontextEJBQLDateTimeFunctionalExpressionsIT.java |   2 +-
 .../access/DataContextEJBQLFetchJoinIT.java        |   2 +-
 .../DataContextEJBQLFunctionalExpressionsIT.java   |   2 +-
 .../cayenne/access/DataContextEJBQLIsNullIT.java   |   2 +-
 .../access/DataContextEJBQLQueryCompoundIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLQueryIT.java    |   2 +-
 .../cayenne/access/DataContextEJBQLSubqueryIT.java |   2 +-
 ...tyWithMeaningfulPKAndCustomDbRowOpSorterIT.java |  38 +--
 .../DataContextEntityWithMeaningfulPKIT.java       |   2 +-
 .../apache/cayenne/access/DataContextExtrasIT.java |   6 +-
 .../access/DataContextFlattenedAttributesIT.java   |   2 +-
 .../org/apache/cayenne/access/DataContextIT.java   |   8 +-
 .../cayenne/access/DataContextIteratedQueryIT.java |   2 +-
 .../cayenne/access/DataContextLocalObjectIT.java   |   4 +-
 .../cayenne/access/DataContextObjectIdQueryIT.java |  24 +-
 .../DataContextObjectIdQuery_PolymorphicIT.java    |   4 +-
 .../access/DataContextObjectTrackingIT.java        |   4 +-
 .../cayenne/access/DataContextOrderingIT.java      |  34 +--
 .../cayenne/access/DataContextOuterJoinsIT.java    | 243 ++++++++-------
 .../access/DataContextPaginatedQueryIT.java        |   2 +-
 .../access/DataContextPerformQueryAPIIT.java       |   8 +-
 .../cayenne/access/DataContextPrefetchIT.java      |   4 +-
 .../access/DataContextPrefetchMultistepIT.java     |   2 +-
 .../DataContextPrefetchQualifierOverlapIT.java     |   6 +-
 .../access/DataContextProcedureQueryIT.java        |  64 ++--
 .../cayenne/access/DataContextQueryCachingIT.java  |   2 +-
 .../cayenne/access/DataContextQueryChainIT.java    |   6 +-
 .../cayenne/access/DataContextRefreshQueryIT.java  |   2 +-
 .../cayenne/access/DataContextRefreshingIT.java    |   4 +-
 .../access/DataContextRelationshipQueryIT.java     |   2 +-
 ...DataContextRelationshipQuery_PolymorphicIT.java |   4 +-
 .../cayenne/access/DataContextRollbackIT.java      |  64 ++--
 .../access/DataContextSQLTemplateCompoundIT.java   |   2 +-
 .../cayenne/access/DataContextSQLTemplateIT.java   |   4 +-
 .../cayenne/access/DataContextSerializationIT.java |   4 +-
 .../cayenne/access/DataContextSharedCacheIT.java   |   4 +-
 .../cayenne/access/DataContextValidationIT.java    |  30 +-
 .../cayenne/access/DataDomainCallbacksIT.java      |   2 +-
 .../org/apache/cayenne/access/DataDomainIT.java    |   6 +-
 .../cayenne/access/DataDomainQueryActionIT.java    |   4 +-
 .../java/org/apache/cayenne/access/DataNodeIT.java |   4 +-
 .../apache/cayenne/access/DataNodeQueriesIT.java   |   4 +-
 .../cayenne/access/DataNodeQueryExceptionsIT.java  |   6 +-
 .../org/apache/cayenne/access/DataRowUtilsIT.java  |   2 +-
 .../org/apache/cayenne/access/DbGeneratorIT.java   |   4 +-
 .../org/apache/cayenne/access/DeleteObjectIT.java  |   2 +-
 .../org/apache/cayenne/access/DeleteRulesIT.java   | 122 ++++----
 .../apache/cayenne/access/EntityInheritanceIT.java |  24 +-
 .../apache/cayenne/access/FlattenedPrefetchIT.java |   2 +-
 .../access/FlattenedRelationshipInContextIT.java   |   2 +-
 .../apache/cayenne/access/IdentityColumnsIT.java   |   4 +-
 .../cayenne/access/IncrementalFaultListIT.java     |   2 +-
 .../org/apache/cayenne/access/JointPrefetchIT.java |   4 +-
 .../org/apache/cayenne/access/MiscTypesIT.java     |   2 +-
 .../access/NestedDataContextLocalCacheIT.java      |  10 +-
 .../access/NestedDataContextParentEventsIT.java    |   6 +-
 .../NestedDataContextParentPeerEventsIT.java       |   2 +-
 .../access/NestedDataContextPeerEventsIT.java      |  36 +--
 .../cayenne/access/NestedDataContextReadIT.java    |   4 +-
 .../access/NestedDataContextRollbackIT.java        |  20 +-
 .../access/NestedDataContextValidationIT.java      |   6 +-
 .../cayenne/access/NestedDataContextWriteIT.java   |   4 +-
 .../access/NestedDataContext_DeadlockIT.java       |   2 +-
 .../org/apache/cayenne/access/NumericTypesIT.java  |   2 +-
 .../cayenne/access/ObjectStoreDiffRetainingIT.java |   2 +-
 .../org/apache/cayenne/access/ObjectStoreGCIT.java |   6 +-
 .../org/apache/cayenne/access/ObjectStoreIT.java   |  40 +--
 .../apache/cayenne/access/OptimisticLockingIT.java |   2 +-
 .../access/PrefetchProcessorTreeBuilderIT.java     |   4 +-
 .../cayenne/access/PrimitiveAttributesIT.java      |   6 +-
 .../cayenne/access/ReturnTypesMappingIT.java       | 326 ++++++++++-----------
 .../SimpleIdIncrementalFaultListDataRowsIT.java    |   2 +-
 .../access/SimpleIdIncrementalFaultListIT.java     |   2 +-
 .../SimpleIdIncrementalFaultListPrefetchIT.java    |   2 +-
 .../cayenne/access/SingleTableInheritanceIT.java   |   4 +-
 .../org/apache/cayenne/access/ToManyListIT.java    |  54 ++--
 .../access/dbsync/SchemaUpdateStrategyBase.java    |   4 +-
 .../access/jdbc/BatchActionGeneratedIT.java        |   2 +-
 .../apache/cayenne/access/jdbc/BatchActionIT.java  |   2 +-
 .../cayenne/access/jdbc/BatchActionLockingIT.java  |   5 +-
 .../cayenne/access/jdbc/SQLTemplateActionIT.java   |  37 ++-
 .../apache/cayenne/access/jdbc/SelectActionIT.java |  14 +-
 ...SelectActionWithUnsupportedDistinctTypesIT.java |   2 +-
 .../translator/batch/DeleteBatchTranslatorIT.java  |   6 +-
 .../translator/batch/InsertBatchTranslatorIT.java  |   6 +-
 .../batch/SoftDeleteBatchTranslatorIT.java         |   8 +-
 .../translator/batch/UpdateBatchTranslatorIT.java  |   6 +-
 .../batch/legacy/DefaultBatchTranslatorIT.java     |   6 +-
 .../translator/ejbql/EJBQLSelectTranslatorIT.java  |   6 +-
 .../select/DefaultObjectSelectTranslatorIT.java    |   6 +-
 .../select/DefaultSelectTranslatorIT.java          | 130 ++++----
 .../select/VerticalInheritanceJoinOrderIT.java     |   4 +-
 .../cayenne/access/types/DateTimeTypesIT.java      |   7 +-
 .../access/types/LegacyDateTimeTypesIT.java        |  44 +--
 .../runtime/JNDIDataSourceFactoryIT.java           |   5 -
 .../datasource/BasePoolingDataSourceIT.java        |   4 +-
 ...PoolingDataSource_FailingValidationQueryIT.java |   6 +-
 .../java/org/apache/cayenne/dba/AutoAdapterIT.java |  16 +-
 .../cayenne/dba/ConcurrentPkGeneratorIT.java       |   2 +-
 .../java/org/apache/cayenne/dba/JdbcAdapterIT.java |   6 +-
 .../org/apache/cayenne/dba/JdbcPkGeneratorIT.java  |   6 +-
 .../java/org/apache/cayenne/dba/PkGeneratorIT.java |   4 +-
 .../org/apache/cayenne/dba/TypesMappingIT.java     |   4 +-
 .../apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java |   4 +-
 .../apache/cayenne/dba/mysql/MySQLAdapterIT.java   |   6 +-
 .../cayenne/dba/oracle/Oracle8AdapterIT.java       |   4 +-
 .../apache/cayenne/dba/oracle/OracleAdapterIT.java |   2 +-
 .../cayenne/dba/oracle/OraclePkGeneratorIT.java    |   4 +-
 .../cayenne/dba/postgres/PostgresAdapterIT.java    |   2 +-
 .../cayenne/dba/sqlserver/SQLServerAdapterIT.java  |   2 +-
 .../cayenne/dba/sqlserver/SQLServerSnifferIT.java  |   6 +-
 .../exp/AggregateExpInMemoryEvaluationIT.java      |   2 +-
 .../apache/cayenne/exp/ExpressionFactoryIT.java    |   4 +-
 .../java/org/apache/cayenne/exp/ExpressionIT.java  |   6 +-
 .../apache/cayenne/exp/TranslateExpressionIT.java  |   2 +-
 .../org/apache/cayenne/exp/parser/ASTExistsIT.java |   2 +-
 .../apache/cayenne/exp/parser/ASTExtractIT.java    |   2 +-
 .../cayenne/exp/parser/ASTFunctionCallDateIT.java  |   2 +-
 .../exp/parser/ASTFunctionCallStringIT.java        |   4 +-
 .../apache/cayenne/exp/parser/ASTNotExistsIT.java  |   2 +-
 .../parser/ExpressionCollectionEvaluationIT.java   |   2 +-
 .../cayenne/exp/parser/ExpressionEvaluationIT.java |   2 +-
 .../apache/cayenne/exp/property/IdPropertyIT.java  |   2 +-
 .../apache/cayenne/exp/property/PathAliasesIT.java |   2 +-
 .../cayenne/map/EntityResolverGenericStackIT.java  |   2 +-
 .../org/apache/cayenne/map/EntityResolverIT.java   |   2 +-
 .../cayenne/map/EntityResolverInheritanceIT.java   |   2 +-
 .../java/org/apache/cayenne/query/CAY2541IT.java   |   2 +-
 .../org/apache/cayenne/query/ColumnSelectIT.java   |   4 +-
 .../org/apache/cayenne/query/EJBQLQueryIT.java     |   4 +-
 .../query/FluentSelectPrefetchRouterActionIT.java  |  12 +-
 ...electPrefetchRouterActionQualifiedEntityIT.java |   2 +-
 .../org/apache/cayenne/query/MappedQueryIT.java    |  34 +--
 .../cayenne/query/ObjectSelectIteratedQueryIT.java |   2 +-
 .../cayenne/query/ObjectSelect_AggregateIT.java    |   4 +-
 .../cayenne/query/ObjectSelect_CacheKeyIT.java     |  46 +--
 .../query/ObjectSelect_PrimitiveColumnsIT.java     |   4 +-
 .../apache/cayenne/query/ObjectSelect_RunIT.java   |   4 +-
 .../cayenne/query/ObjectSelect_SubqueryIT.java     |   2 +-
 .../org/apache/cayenne/query/ProcedureCallIT.java  |  40 +--
 .../cayenne/query/QueryWithCompoundJoinIT.java     |   2 +-
 .../query/QueryWithInheritancePrefetchIT.java      |   2 +-
 .../java/org/apache/cayenne/query/SQLExecIT.java   |  24 +-
 .../java/org/apache/cayenne/query/SQLSelectIT.java |   2 +-
 .../cayenne/query/SQLSelectIteratedQueryIT.java    |   2 +-
 .../cayenne/query/SQLTemplateCacheKeyIT.java       |  14 +-
 .../org/apache/cayenne/query/SQLTemplateIT.java    |   6 +-
 .../cayenne/query/SelectByIdIteratedQueryIT.java   |   2 +-
 .../org/apache/cayenne/query/SelectById_RunIT.java |   4 +-
 .../apache/cayenne/query/SelectQueryClobIT.java    |  10 +-
 .../cayenne/query/SelectQueryReturnTypesIT.java    |   8 +-
 .../PersistentObjectDescriptorFactoryIT.java       |   8 +-
 ...tObjectDescriptorFactory_InheritanceMapsIT.java |   4 +-
 ...ectDescriptorFactory_VerticalInheritanceIT.java |   2 +-
 .../cayenne/runtime/CayenneRuntimeBuilderIT.java   |   2 +-
 .../template/directive/BindDirectiveIT.java        |   2 +-
 .../cayenne/tx/TransactionCustomConnectionIT.java  |   4 +-
 .../apache/cayenne/tx/TransactionIsolationIT.java  |   4 +-
 .../tx/TransactionPropagationRollbackIT.java       |   4 +-
 .../org/apache/cayenne/tx/TransactionThreadIT.java |   6 +-
 .../org/apache/cayenne/tx/UserTransactionIT.java   |   2 +-
 .../cayenne/unit/di/runtime/CayenneTestsEnv.java   | 154 +++++++---
 .../cayenne/unit/di/runtime/PeopleProjectCase.java |   2 +-
 .../di/runtime/RuntimeCaseDataContextProvider.java |  35 ---
 .../di/runtime/RuntimeCaseDataNodeProvider.java    |  38 ---
 .../runtime/RuntimeCaseEntityResolverProvider.java |  36 ---
 .../cayenne/unit/di/runtime/RuntimeCaseModule.java |  10 -
 .../runtime/RuntimeCaseObjectContextProvider.java  |  36 ---
 ...eakReferenceStrategyCayenneRuntimeProvider.java |  48 ---
 .../WeakReferenceStrategyRuntimeCaseModule.java    |  36 ---
 .../di/runtime/WeakReferenceStrategyTestsEnv.java  | 117 --------
 .../org/apache/cayenne/unit/jira/CAY_115IT.java    |   4 +-
 .../org/apache/cayenne/unit/jira/CAY_191IT.java    |   2 +-
 .../org/apache/cayenne/unit/jira/CAY_194IT.java    |   2 +-
 .../apache/cayenne/util/DeepMergeOperationIT.java  |   4 +-
 .../util/DeepMergeOperationInheritanceIT.java      |   4 +-
 .../cayenne/util/ShallowMergeOperationIT.java      |   4 +-
 .../org/apache/cayenne/value/json/JsonTypeIT.java  |  14 +-
 217 files changed, 1269 insertions(+), 1615 deletions(-)
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataNodeProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseEntityResolverProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseObjectContextProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyCayenneRuntimeProvider.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyRuntimeCaseModule.java
 delete mode 100644 cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyTestsEnv.java


(cayenne) 05/05: Unwinding CayenneTestsEnv.getInstance() to specific getters

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit dee9fab7fda8cfba747b2295d9c2d4029610fc76
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Wed May 13 18:41:21 2026 -0400

    Unwinding CayenneTestsEnv.getInstance() to specific getters
    
    ... test-scoped stack elements can be taken diretcly from "runtime"
---
 .../cayenne/access/jdbc/SQLTemplateActionIT.java   | 29 ++++++++---------
 .../cayenne/unit/di/runtime/CayenneTestsEnv.java   | 23 ++++++-------
 .../di/runtime/RuntimeCaseDataContextProvider.java | 36 --------------------
 .../di/runtime/RuntimeCaseDataNodeProvider.java    | 38 ----------------------
 .../runtime/RuntimeCaseEntityResolverProvider.java | 36 --------------------
 .../cayenne/unit/di/runtime/RuntimeCaseModule.java |  8 -----
 6 files changed, 23 insertions(+), 147 deletions(-)

diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
index da4b13133..371a170fa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
@@ -19,23 +19,11 @@
 
 package org.apache.cayenne.access.jdbc;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertSame;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-import java.sql.Connection;
-import java.sql.Date;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.MockOperationObserver;
-import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLAction;
@@ -46,11 +34,20 @@ import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.apache.cayenne.unit.di.runtime.RuntimeCaseDataSourceFactory;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+import java.sql.Connection;
+import java.sql.Date;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 @SuppressWarnings("deprecation")
 public class SQLTemplateActionIT {
@@ -60,7 +57,7 @@ public class SQLTemplateActionIT {
 
 	protected RuntimeCaseDataSourceFactory dataSourceFactory;
 	protected DataNode node;
-	protected JdbcAdapter adapter;
+	protected DbAdapter adapter;
 	protected UnitDbAdapter unitDbAdapter;
 	protected ObjectContext objectContext;
 	protected SQLTemplateCustomizer sqlTemplateCustomizer;
@@ -71,7 +68,7 @@ public class SQLTemplateActionIT {
 	public void setUp() throws Exception {
 		dataSourceFactory = env.dataSourceFactory();
 		node = env.dataNode();
-		adapter = env.jdbcAdapter();
+		adapter = env.dbAdapter();
 		unitDbAdapter = env.unitDbAdapter();
 		objectContext = env.context();
 		sqlTemplateCustomizer = env.sqlTemplateCustomizer();
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
index db2efe96e..bdad866ac 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
@@ -19,12 +19,12 @@
 package org.apache.cayenne.unit.di.runtime;
 
 import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.access.DataDomain;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.configuration.runtime.CoreModule;
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.JdbcAdapter;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIBootstrap;
@@ -114,9 +114,9 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
         }
         INJECTOR.getInstance(RuntimeCaseExtraModules.class).setExtraModules(effectiveExtras);
 
-        runtime = INJECTOR.getInstance(CayenneRuntime.class);
-        context = INJECTOR.getInstance(DataContext.class);
-        dbHelper = INJECTOR.getInstance(DBHelper.class);
+        this.runtime = INJECTOR.getInstance(CayenneRuntime.class);
+        this.context = (DataContext) runtime.newContext();
+        this.dbHelper = INJECTOR.getInstance(DBHelper.class);
 
         if (autoClean) {
             DBCleaner cleaner = dbCleaner();
@@ -131,9 +131,9 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
     @Override
     public void afterEach(ExtensionContext ctx) {
         TEST_SCOPE.shutdown();
-        context = null;
-        dbHelper = null;
-        runtime = null;
+        this.context = null;
+        this.dbHelper = null;
+        this.runtime = null;
     }
 
     public DataContext context() {
@@ -160,16 +160,13 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
         return INJECTOR.getInstance(DbAdapter.class);
     }
 
-    public JdbcAdapter jdbcAdapter() {
-        return INJECTOR.getInstance(JdbcAdapter.class);
-    }
-
     public EntityResolver entityResolver() {
-        return INJECTOR.getInstance(EntityResolver.class);
+        return runtime.getDataDomain().getEntityResolver();
     }
 
     public DataNode dataNode() {
-        return INJECTOR.getInstance(DataNode.class);
+        DataDomain channel = runtime.getDataDomain();
+        return channel.getDataNodes().iterator().next();
     }
 
     public DataChannelInterceptor dataChannelInterceptor() {
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java
deleted file mode 100644
index 3b98873f0..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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.
- ****************************************************************/
-package org.apache.cayenne.unit.di.runtime;
-
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.runtime.CayenneRuntime;
-
-public class RuntimeCaseDataContextProvider implements Provider<DataContext> {
-
-    @Inject
-    // injecting provider to make this provider independent from scoping of CayenneRuntime
-    protected Provider<CayenneRuntime> runtimeProvider;
-
-    public DataContext get() throws ConfigurationException {
-        return (DataContext) runtimeProvider.get().newContext();
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataNodeProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataNodeProvider.java
deleted file mode 100644
index 533c3aeb2..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataNodeProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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.
- ****************************************************************/
-package org.apache.cayenne.unit.di.runtime;
-
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.access.DataDomain;
-import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.runtime.CayenneRuntime;
-
-public class RuntimeCaseDataNodeProvider implements Provider<DataNode> {
-
-    @Inject
-    // injecting provider to make this provider independent from scoping of CayenneRuntime
-    protected Provider<CayenneRuntime> runtimeProvider;
-
-    public DataNode get() throws ConfigurationException {
-        DataDomain channel = (DataDomain) runtimeProvider.get().getChannel();
-        return channel.getDataNodes().iterator().next();
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseEntityResolverProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseEntityResolverProvider.java
deleted file mode 100644
index 352edea96..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseEntityResolverProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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.
- ****************************************************************/
-package org.apache.cayenne.unit.di.runtime;
-
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.runtime.CayenneRuntime;
-
-public class RuntimeCaseEntityResolverProvider implements Provider<EntityResolver> {
-
-    @Inject
-    // injecting provider to make this provider independent from scoping of CayenneRuntime
-    protected Provider<CayenneRuntime> runtimeProvider;
-
-    public EntityResolver get() throws ConfigurationException {
-        return runtimeProvider.get().getDataDomain().getEntityResolver();
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java
index 2aa245068..3e4da7384 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.runtime;
 
-import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.DefaultObjectMapRetainStrategy;
 import org.apache.cayenne.access.ObjectMapRetainStrategy;
 import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
@@ -43,7 +41,6 @@ import org.apache.cayenne.configuration.xml.NoopDataChannelMetaData;
 import org.apache.cayenne.configuration.xml.XMLDataMapLoader;
 import org.apache.cayenne.configuration.xml.XMLReaderProvider;
 import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.JdbcAdapter;
 import org.apache.cayenne.dba.JdbcPkGenerator;
 import org.apache.cayenne.dba.PkGenerator;
 import org.apache.cayenne.dba.db2.DB2Adapter;
@@ -82,7 +79,6 @@ import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
 import org.apache.cayenne.di.spi.DefaultScope;
 import org.apache.cayenne.log.JdbcEventLogger;
 import org.apache.cayenne.log.Slf4jJdbcEventLogger;
-import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.reflect.generic.DefaultValueComparisonStrategyFactory;
 import org.apache.cayenne.reflect.generic.ValueComparisonStrategyFactory;
 import org.apache.cayenne.resource.ClassLoaderResourceLocator;
@@ -231,7 +227,6 @@ public class RuntimeCaseModule implements Module {
         });
         binder.bind(DataSourceFactory.class).to(RuntimeCaseSharedDataSourceFactory.class);
         binder.bind(DbAdapter.class).toProvider(RuntimeCaseDbAdapterProvider.class);
-        binder.bind(JdbcAdapter.class).toProvider(RuntimeCaseDbAdapterProvider.class);
         binder.bind(UnitDbAdapter.class).toProvider(UnitDbAdapterProvider.class);
 
         // this factory is a hack that allows to inject to DbAdapters loaded outside of
@@ -254,12 +249,9 @@ public class RuntimeCaseModule implements Module {
         binder.bind(XMLReader.class).toProviderInstance(new XMLReaderProvider(false)).withoutScope();
 
         // test-scoped objects
-        binder.bind(EntityResolver.class).toProvider(RuntimeCaseEntityResolverProvider.class).in(testScope);
-        binder.bind(DataNode.class).toProvider(RuntimeCaseDataNodeProvider.class).in(testScope);
         binder.bind(RuntimeCaseProperties.class).to(RuntimeCaseProperties.class).in(testScope);
         binder.bind(RuntimeCaseExtraModules.class).to(RuntimeCaseExtraModules.class).in(testScope);
         binder.bind(CayenneRuntime.class).toProvider(CayenneRuntimeProvider.class).in(testScope);
-        binder.bind(DataContext.class).toProvider(RuntimeCaseDataContextProvider.class).withoutScope();
         binder.bind(DBHelper.class).toProvider(FlavoredDBHelperProvider.class).in(testScope);
         binder.bind(DBCleaner.class).toProvider(DBCleanerProvider.class).in(testScope);
     }


(cayenne) 01/05: unifying CayenneTestsEnv tool

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit c241f8229250503c9d3f4b087ade8ada7e211d64
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Wed May 13 18:15:56 2026 -0400

    unifying CayenneTestsEnv tool
---
 .../org/apache/cayenne/access/ObjectStoreGCIT.java |   4 +-
 .../cayenne/unit/di/runtime/CayenneTestsEnv.java   |  40 ++++++-
 ...eakReferenceStrategyCayenneRuntimeProvider.java |  48 ---------
 .../WeakReferenceStrategyRuntimeCaseModule.java    |  36 -------
 .../di/runtime/WeakReferenceStrategyTestsEnv.java  | 117 ---------------------
 5 files changed, 37 insertions(+), 208 deletions(-)

diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
index 15ded4a67..8af1f88d3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
@@ -24,7 +24,7 @@ import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
-import org.apache.cayenne.unit.di.runtime.WeakReferenceStrategyTestsEnv;
+import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -34,7 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 public class ObjectStoreGCIT {
 
     @RegisterExtension
-    static final WeakReferenceStrategyTestsEnv env = WeakReferenceStrategyTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
+    static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT).withWeakReferenceStrategy();
 
     private DataContext context;
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
index bd6e2297c..499bc9bfc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
@@ -20,8 +20,12 @@ package org.apache.cayenne.unit.di.runtime;
 
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.runtime.CoreModule;
+import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
+import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.spi.DefaultScope;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.DBHelper;
@@ -59,24 +63,26 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
     private final String project;
     private final Class<?>[] extraModules;
     private final boolean autoClean;
+    private final boolean weakReferenceStrategy;
 
     private ObjectContext context;
     private DataContext dataContext;
     private DBHelper dbHelper;
     private CayenneRuntime runtime;
 
-    private CayenneTestsEnv(String project, Class<?>[] extraModules, boolean autoClean) {
+    private CayenneTestsEnv(String project, Class<?>[] extraModules, boolean autoClean, boolean weakReferenceStrategy) {
         this.project = project;
         this.extraModules = extraModules;
         this.autoClean = autoClean;
+        this.weakReferenceStrategy = weakReferenceStrategy;
     }
 
     public static CayenneTestsEnv forProject(String project) {
-        return new CayenneTestsEnv(project, new Class<?>[0], true);
+        return new CayenneTestsEnv(project, new Class<?>[0], true, false);
     }
 
     public CayenneTestsEnv withExtraModules(Class<?>... modules) {
-        return new CayenneTestsEnv(project, modules, autoClean);
+        return new CayenneTestsEnv(project, modules, autoClean, weakReferenceStrategy);
     }
 
     /**
@@ -87,13 +93,30 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
      * from its own {@code @BeforeEach}.
      */
     public CayenneTestsEnv withoutAutoClean() {
-        return new CayenneTestsEnv(project, extraModules, false);
+        return new CayenneTestsEnv(project, extraModules, false, weakReferenceStrategy);
+    }
+
+    /**
+     * Configures the runtime with the weak-reference object-tracking strategy
+     * instead of the default soft-reference strategy used by other tests. Use
+     * for GC-sensitive tests that need objects to be collectable as soon as
+     * they become unreferenced.
+     */
+    public CayenneTestsEnv withWeakReferenceStrategy() {
+        return new CayenneTestsEnv(project, extraModules, autoClean, true);
     }
 
     @Override
     public void beforeEach(ExtensionContext ctx) throws Exception {
         INJECTOR.getInstance(RuntimeCaseProperties.class).setConfigurationLocation(project);
-        INJECTOR.getInstance(RuntimeCaseExtraModules.class).setExtraModules(extraModules);
+
+        Class<?>[] effectiveExtras = extraModules;
+        if (weakReferenceStrategy) {
+            effectiveExtras = new Class<?>[extraModules.length + 1];
+            System.arraycopy(extraModules, 0, effectiveExtras, 0, extraModules.length);
+            effectiveExtras[extraModules.length] = WeakReferenceStrategyModule.class;
+        }
+        INJECTOR.getInstance(RuntimeCaseExtraModules.class).setExtraModules(effectiveExtras);
 
         runtime = INJECTOR.getInstance(CayenneRuntime.class);
         context = INJECTOR.getInstance(ObjectContext.class);
@@ -149,4 +172,11 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
     public <T> T getInstance(Class<T> type) {
         return INJECTOR.getInstance(type);
     }
+
+    public static class WeakReferenceStrategyModule implements Module {
+        @Override
+        public void configure(Binder binder) {
+            CoreModule.extend(binder).setProperty(Constants.OBJECT_RETAIN_STRATEGY_PROPERTY, "weak");
+        }
+    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyCayenneRuntimeProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyCayenneRuntimeProvider.java
deleted file mode 100644
index 9628fb2ba..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyCayenneRuntimeProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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.
- ****************************************************************/
-package org.apache.cayenne.unit.di.runtime;
-
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.configuration.runtime.CoreModule;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.unit.UnitDbAdapter;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-public class WeakReferenceStrategyCayenneRuntimeProvider extends CayenneRuntimeProvider {
-
-    public WeakReferenceStrategyCayenneRuntimeProvider(@Inject RuntimeCaseDataSourceFactory dataSourceFactory,
-                                                       @Inject RuntimeCaseProperties properties,
-                                                       @Inject RuntimeCaseExtraModules extraModulesProperties,
-                                                       @Inject Provider<DbAdapter> dbAdapterProvider,
-                                                       @Inject UnitDbAdapter unitDbAdapter) {
-        super(dataSourceFactory, properties, extraModulesProperties, dbAdapterProvider, unitDbAdapter);
-    }
-
-    @Override
-    protected Collection<? extends Module> getExtraModules() {
-        Collection<Module> modules = new ArrayList<>(super.getExtraModules());
-        modules.add(b -> CoreModule.extend(b).setProperty(Constants.OBJECT_RETAIN_STRATEGY_PROPERTY, "weak"));
-        return modules;
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyRuntimeCaseModule.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyRuntimeCaseModule.java
deleted file mode 100644
index dc8dd83bb..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyRuntimeCaseModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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.
- ****************************************************************/
-package org.apache.cayenne.unit.di.runtime;
-
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.spi.DefaultScope;
-import org.apache.cayenne.runtime.CayenneRuntime;
-
-public class WeakReferenceStrategyRuntimeCaseModule extends RuntimeCaseModule {
-
-    public WeakReferenceStrategyRuntimeCaseModule(DefaultScope testScope) {
-        super(testScope);
-    }
-
-    @Override
-    public void configure(Binder binder){
-        super.configure(binder);
-        binder.bind(CayenneRuntime.class).toProvider(WeakReferenceStrategyCayenneRuntimeProvider.class).in(testScope);
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyTestsEnv.java
deleted file mode 100644
index 54bd1248b..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/WeakReferenceStrategyTestsEnv.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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.
- ****************************************************************/
-package org.apache.cayenne.unit.di.runtime;
-
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.di.DIBootstrap;
-import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.di.spi.DefaultScope;
-import org.apache.cayenne.runtime.CayenneRuntime;
-import org.apache.cayenne.test.jdbc.DBHelper;
-import org.junit.jupiter.api.extension.AfterEachCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
-import org.junit.jupiter.api.extension.ExtensionContext;
-
-/**
- * Sibling of {@link CayenneTestsEnv} that wires its own injector via
- * {@link WeakReferenceStrategyRuntimeCaseModule}. Use it for tests that need
- * a runtime configured with the weak-reference object-tracking strategy.
- */
-// TODO: merge with CayenneTestsEnv
-@Deprecated(forRemoval = true)
-public class WeakReferenceStrategyTestsEnv implements BeforeEachCallback, AfterEachCallback {
-
-    private static final DefaultScope TEST_SCOPE;
-    private static final Injector INJECTOR;
-
-    static {
-        TEST_SCOPE = new DefaultScope();
-        INJECTOR = DIBootstrap.createInjector(new WeakReferenceStrategyRuntimeCaseModule(TEST_SCOPE));
-        INJECTOR.getInstance(SchemaBuilder.class).rebuildSchema();
-    }
-
-    private final String project;
-    private final Class<?>[] extraModules;
-
-    private ObjectContext context;
-    private DataContext dataContext;
-    private DBHelper dbHelper;
-    private CayenneRuntime runtime;
-
-    private WeakReferenceStrategyTestsEnv(String project, Class<?>[] extraModules) {
-        this.project = project;
-        this.extraModules = extraModules;
-    }
-
-    public static WeakReferenceStrategyTestsEnv forProject(String project) {
-        return new WeakReferenceStrategyTestsEnv(project, new Class<?>[0]);
-    }
-
-    public WeakReferenceStrategyTestsEnv withExtraModules(Class<?>... modules) {
-        return new WeakReferenceStrategyTestsEnv(project, modules);
-    }
-
-    @Override
-    public void beforeEach(ExtensionContext ctx) throws Exception {
-        INJECTOR.getInstance(RuntimeCaseProperties.class).setConfigurationLocation(project);
-        INJECTOR.getInstance(RuntimeCaseExtraModules.class).setExtraModules(extraModules);
-
-        runtime = INJECTOR.getInstance(CayenneRuntime.class);
-        context = INJECTOR.getInstance(ObjectContext.class);
-        dataContext = INJECTOR.getInstance(DataContext.class);
-        dbHelper = INJECTOR.getInstance(DBHelper.class);
-
-        DBCleaner dbCleaner = INJECTOR.getInstance(DBCleaner.class);
-        try {
-            dbCleaner.clean();
-        } catch (Exception ex) {
-            dbCleaner.clean();
-        }
-    }
-
-    @Override
-    public void afterEach(ExtensionContext ctx) {
-        TEST_SCOPE.shutdown();
-        context = null;
-        dataContext = null;
-        dbHelper = null;
-        runtime = null;
-    }
-
-    public ObjectContext context() {
-        return context;
-    }
-
-    public DataContext dataContext() {
-        return dataContext;
-    }
-
-    public DBHelper dbHelper() {
-        return dbHelper;
-    }
-
-    public CayenneRuntime runtime() {
-        return runtime;
-    }
-
-    public <T> T getInstance(Class<T> type) {
-        return INJECTOR.getInstance(type);
-    }
-}


(cayenne) 03/05: Unit tests cleanup - no need to make a distinction between ObjectContext and DataContext in the test Env

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 17ee5a32c109a51e31805144a12c3a56d8250267
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Wed May 13 18:26:26 2026 -0400

    Unit tests cleanup - no need to make a distinction between ObjectContext and DataContext in the test Env
---
 .../cayenne/dbsync/merge/MergerFactoryIT.java      | 22 +++++--------------
 .../cayenne/dbsync/merge/token/ValueForNullIT.java | 25 ++++++----------------
 .../cayenne/unit/di/runtime/CayenneTestsEnv.java   |  4 ----
 3 files changed, 12 insertions(+), 39 deletions(-)

diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergerFactoryIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergerFactoryIT.java
index a01d41187..607d485cc 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergerFactoryIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergerFactoryIT.java
@@ -18,31 +18,20 @@
  ****************************************************************/
 package org.apache.cayenne.dbsync.merge;
 
-import java.sql.Types;
-
 import org.apache.cayenne.GenericPersistentObject;
-import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
-
-public class MergerFactoryIT extends MergeCase {
+import java.sql.Types;
 
-    private DataContext context;
+import static org.junit.jupiter.api.Assertions.*;
 
-    @BeforeEach
-    public void setUpContext() {
-        context = env.dataContext();
-    }
+public class MergerFactoryIT extends MergeCase {
 
     @Test
     public void addAndDropColumnToDb() throws Exception {
@@ -165,11 +154,10 @@ public class MergerFactoryIT extends MergeCase {
         map.addObjEntity(objEntity);
 
         for (int i = 0; i < 5; i++) {
-            GenericPersistentObject dao = (GenericPersistentObject) context.newObject(objEntity
-                    .getName());
+            GenericPersistentObject dao = (GenericPersistentObject) env.context().newObject(objEntity.getName());
             dao.writeProperty(oatr1.getName(), "test " + i);
         }
-        context.commitChanges();
+        env.context().commitChanges();
 
         // clear up
         map.removeObjEntity(objEntity.getName(), true);
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java
index 37cfc44b0..249b4f57e 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java
@@ -19,11 +19,7 @@
 
 package org.apache.cayenne.dbsync.merge.token;
 
-import java.sql.Types;
-import java.util.List;
-
 import org.apache.cayenne.Persistent;
-import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.translator.ParameterBinding;
 import org.apache.cayenne.dbsync.merge.DataMapMerger;
 import org.apache.cayenne.dbsync.merge.MergeCase;
@@ -35,24 +31,17 @@ import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.testdo.testmap.Painting;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import java.sql.Types;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ValueForNullIT extends MergeCase {
 
     private static final String DEFAULT_VALUE_STRING = "DEFSTRING";
 
-    private DataContext context;
-
-    @BeforeEach
-    public void setUpContext() {
-        context = env.dataContext();
-    }
-
     @Test
     public void test() throws Exception {
         DbEntity dbEntity = map.getDbEntity("PAINTING");
@@ -63,10 +52,10 @@ public class ValueForNullIT extends MergeCase {
         // insert some rows before adding "not null" column
         final int nrows = 10;
         for (int i = 0; i < nrows; i++) {
-            Persistent o = context.newObject("Painting");
+            Persistent o = env.context().newObject("Painting");
             o.writeProperty("paintingTitle", "ptitle" + i);
         }
-        context.commitChanges();
+        env.context().commitChanges();
 
         // create and add new column to model and db
         DbAttribute column = new DbAttribute("NEWCOL2", Types.VARCHAR, dbEntity);
@@ -98,7 +87,7 @@ public class ValueForNullIT extends MergeCase {
         // check values for null
         Expression qual = ExpressionFactory.matchExp(objAttr.getName(), DEFAULT_VALUE_STRING);
         ObjectSelect<Painting> query = ObjectSelect.query(Painting.class).where(qual);
-        List<Painting> rows = query.select(context);
+        List<Painting> rows = query.select(env.context());
         assertEquals(nrows, rows.size());
 
         // clean up
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
index cd41a52f3..5f566329b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
@@ -134,10 +134,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
         return dbHelper;
     }
 
-    public TableHelper table(String tableName) {
-        return new TableHelper(dbHelper, tableName);
-    }
-
     public TableHelper table(String tableName, String... columns) {
         return new TableHelper(dbHelper, tableName, columns);
     }


(cayenne) 04/05: Unwinding CayenneTestsEnv.getInstance() to specific getters

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit cd85b57c68b8244bca5216da5555194bb5ea04b0
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Wed May 13 18:41:21 2026 -0400

    Unwinding CayenneTestsEnv.getInstance() to specific getters
---
 .../org/apache/cayenne/dbsync/merge/MergeCase.java | 10 +--
 .../merge/token/db/SetGeneratedFlagToDbIT.java     |  2 +-
 .../dbsync/reverse/dbload/BaseLoaderIT.java        |  6 +-
 .../cayenne/dbsync/reverse/dbload/DbLoaderIT.java  |  6 +-
 .../org/apache/cayenne/CDOQualifiedEntitiesIT.java |  2 +-
 .../CayennePersistentObjectFlattenedRelIT.java     |  4 +-
 .../org/apache/cayenne/CircularDependencyIT.java   |  2 +-
 .../cayenne/DataContextMaxIdQualifierIT.java       |  2 +-
 .../java/org/apache/cayenne/access/CAY2723IT.java  |  2 +-
 .../java/org/apache/cayenne/access/Cay2641IT.java  |  2 +-
 .../cayenne/access/DataContextBinaryPKIT.java      |  4 +-
 .../apache/cayenne/access/DataContextBlobIT.java   |  4 +-
 .../cayenne/access/DataContextCharTypeIT.java      |  2 +-
 .../apache/cayenne/access/DataContextClobIT.java   |  4 +-
 .../cayenne/access/DataContextCrossDBIT.java       |  2 +-
 .../cayenne/access/DataContextDeleteRulesIT.java   |  2 +-
 .../access/DataContextDisjointByIdPrefetchIT.java  |  2 +-
 .../DataContextDisjointByIdPrefetch_ExtrasIT.java  |  2 +-
 ...ontextEJBQLDateTimeFunctionalExpressionsIT.java |  2 +-
 .../access/DataContextEJBQLFetchJoinIT.java        |  2 +-
 .../DataContextEJBQLFunctionalExpressionsIT.java   |  2 +-
 .../cayenne/access/DataContextEJBQLIsNullIT.java   |  2 +-
 .../access/DataContextEJBQLQueryCompoundIT.java    |  2 +-
 .../cayenne/access/DataContextEJBQLQueryIT.java    |  2 +-
 .../cayenne/access/DataContextEJBQLSubqueryIT.java |  2 +-
 .../apache/cayenne/access/DataContextExtrasIT.java |  4 +-
 .../org/apache/cayenne/access/DataContextIT.java   |  6 +-
 .../cayenne/access/DataContextLocalObjectIT.java   |  2 +-
 .../DataContextObjectIdQuery_PolymorphicIT.java    |  2 +-
 .../access/DataContextObjectTrackingIT.java        |  2 +-
 .../cayenne/access/DataContextOuterJoinsIT.java    |  2 +-
 .../access/DataContextPerformQueryAPIIT.java       |  6 +-
 .../cayenne/access/DataContextPrefetchIT.java      |  2 +-
 .../access/DataContextProcedureQueryIT.java        | 30 ++++-----
 .../cayenne/access/DataContextRefreshingIT.java    |  2 +-
 ...DataContextRelationshipQuery_PolymorphicIT.java |  2 +-
 .../cayenne/access/DataContextSQLTemplateIT.java   |  2 +-
 .../cayenne/access/DataContextSerializationIT.java |  2 +-
 .../cayenne/access/DataContextSharedCacheIT.java   |  2 +-
 .../cayenne/access/DataDomainCallbacksIT.java      |  2 +-
 .../org/apache/cayenne/access/DataDomainIT.java    |  6 +-
 .../java/org/apache/cayenne/access/DataNodeIT.java |  4 +-
 .../apache/cayenne/access/DataNodeQueriesIT.java   |  4 +-
 .../cayenne/access/DataNodeQueryExceptionsIT.java  |  6 +-
 .../org/apache/cayenne/access/DbGeneratorIT.java   |  4 +-
 .../apache/cayenne/access/FlattenedPrefetchIT.java |  2 +-
 .../apache/cayenne/access/IdentityColumnsIT.java   |  4 +-
 .../org/apache/cayenne/access/JointPrefetchIT.java |  2 +-
 .../org/apache/cayenne/access/MiscTypesIT.java     |  2 +-
 .../cayenne/access/NestedDataContextReadIT.java    |  2 +-
 .../cayenne/access/NestedDataContextWriteIT.java   |  2 +-
 .../access/PrefetchProcessorTreeBuilderIT.java     |  2 +-
 .../cayenne/access/ReturnTypesMappingIT.java       | 38 +++++------
 .../SimpleIdIncrementalFaultListPrefetchIT.java    |  2 +-
 .../cayenne/access/SingleTableInheritanceIT.java   |  2 +-
 .../access/dbsync/SchemaUpdateStrategyBase.java    |  4 +-
 .../access/jdbc/BatchActionGeneratedIT.java        |  2 +-
 .../apache/cayenne/access/jdbc/BatchActionIT.java  |  2 +-
 .../cayenne/access/jdbc/BatchActionLockingIT.java  |  5 +-
 .../cayenne/access/jdbc/SQLTemplateActionIT.java   | 10 +--
 .../apache/cayenne/access/jdbc/SelectActionIT.java |  4 +-
 .../translator/batch/DeleteBatchTranslatorIT.java  |  6 +-
 .../translator/batch/InsertBatchTranslatorIT.java  |  6 +-
 .../batch/SoftDeleteBatchTranslatorIT.java         |  8 +--
 .../translator/batch/UpdateBatchTranslatorIT.java  |  6 +-
 .../batch/legacy/DefaultBatchTranslatorIT.java     |  6 +-
 .../translator/ejbql/EJBQLSelectTranslatorIT.java  |  6 +-
 .../select/DefaultObjectSelectTranslatorIT.java    |  6 +-
 .../select/DefaultSelectTranslatorIT.java          | 74 ++++++++++-----------
 .../select/VerticalInheritanceJoinOrderIT.java     |  4 +-
 .../cayenne/access/types/DateTimeTypesIT.java      |  2 +-
 .../runtime/JNDIDataSourceFactoryIT.java           |  5 --
 .../datasource/BasePoolingDataSourceIT.java        |  4 +-
 ...PoolingDataSource_FailingValidationQueryIT.java |  6 +-
 .../java/org/apache/cayenne/dba/AutoAdapterIT.java | 16 ++---
 .../cayenne/dba/ConcurrentPkGeneratorIT.java       |  2 +-
 .../java/org/apache/cayenne/dba/JdbcAdapterIT.java |  6 +-
 .../org/apache/cayenne/dba/JdbcPkGeneratorIT.java  |  6 +-
 .../java/org/apache/cayenne/dba/PkGeneratorIT.java |  4 +-
 .../org/apache/cayenne/dba/TypesMappingIT.java     |  4 +-
 .../apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java |  4 +-
 .../apache/cayenne/dba/mysql/MySQLAdapterIT.java   |  6 +-
 .../cayenne/dba/oracle/Oracle8AdapterIT.java       |  4 +-
 .../apache/cayenne/dba/oracle/OracleAdapterIT.java |  2 +-
 .../cayenne/dba/oracle/OraclePkGeneratorIT.java    |  4 +-
 .../cayenne/dba/postgres/PostgresAdapterIT.java    |  2 +-
 .../cayenne/dba/sqlserver/SQLServerAdapterIT.java  |  2 +-
 .../cayenne/dba/sqlserver/SQLServerSnifferIT.java  |  6 +-
 .../apache/cayenne/exp/ExpressionFactoryIT.java    |  4 +-
 .../java/org/apache/cayenne/exp/ExpressionIT.java  |  6 +-
 .../org/apache/cayenne/exp/parser/ASTExistsIT.java |  2 +-
 .../apache/cayenne/exp/parser/ASTExtractIT.java    |  2 +-
 .../cayenne/exp/parser/ASTFunctionCallDateIT.java  |  2 +-
 .../exp/parser/ASTFunctionCallStringIT.java        |  4 +-
 .../apache/cayenne/exp/parser/ASTNotExistsIT.java  |  2 +-
 .../cayenne/map/EntityResolverGenericStackIT.java  |  2 +-
 .../cayenne/map/EntityResolverInheritanceIT.java   |  2 +-
 .../org/apache/cayenne/query/ColumnSelectIT.java   |  2 +-
 .../org/apache/cayenne/query/EJBQLQueryIT.java     |  2 +-
 .../query/FluentSelectPrefetchRouterActionIT.java  | 12 ++--
 ...electPrefetchRouterActionQualifiedEntityIT.java |  2 +-
 .../org/apache/cayenne/query/MappedQueryIT.java    |  6 +-
 .../cayenne/query/ObjectSelect_AggregateIT.java    |  2 +-
 .../cayenne/query/ObjectSelect_CacheKeyIT.java     | 46 ++++++-------
 .../query/ObjectSelect_PrimitiveColumnsIT.java     |  2 +-
 .../apache/cayenne/query/ObjectSelect_RunIT.java   |  2 +-
 .../org/apache/cayenne/query/ProcedureCallIT.java  | 22 +++----
 .../query/QueryWithInheritancePrefetchIT.java      |  2 +-
 .../java/org/apache/cayenne/query/SQLExecIT.java   |  4 +-
 .../cayenne/query/SQLTemplateCacheKeyIT.java       | 14 ++--
 .../org/apache/cayenne/query/SQLTemplateIT.java    |  4 +-
 .../org/apache/cayenne/query/SelectById_RunIT.java |  4 +-
 .../apache/cayenne/query/SelectQueryClobIT.java    | 10 +--
 .../cayenne/query/SelectQueryReturnTypesIT.java    |  8 +--
 .../PersistentObjectDescriptorFactoryIT.java       |  8 +--
 ...tObjectDescriptorFactory_InheritanceMapsIT.java |  4 +-
 ...ectDescriptorFactory_VerticalInheritanceIT.java |  2 +-
 .../cayenne/runtime/CayenneRuntimeBuilderIT.java   |  2 +-
 .../template/directive/BindDirectiveIT.java        |  2 +-
 .../cayenne/tx/TransactionCustomConnectionIT.java  |  2 +-
 .../apache/cayenne/tx/TransactionIsolationIT.java  |  2 +-
 .../tx/TransactionPropagationRollbackIT.java       |  2 +-
 .../org/apache/cayenne/tx/TransactionThreadIT.java |  2 +-
 .../org/apache/cayenne/tx/UserTransactionIT.java   |  2 +-
 .../cayenne/unit/di/runtime/CayenneTestsEnv.java   | 75 +++++++++++++++++++---
 .../cayenne/unit/di/runtime/PeopleProjectCase.java |  2 +-
 .../org/apache/cayenne/unit/jira/CAY_115IT.java    |  2 +-
 .../apache/cayenne/util/DeepMergeOperationIT.java  |  2 +-
 .../util/DeepMergeOperationInheritanceIT.java      |  2 +-
 .../cayenne/util/ShallowMergeOperationIT.java      |  2 +-
 .../org/apache/cayenne/value/json/JsonTypeIT.java  |  2 +-
 131 files changed, 395 insertions(+), 348 deletions(-)

diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
index 22e29e4a3..c4b772830 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
@@ -83,16 +83,16 @@ public abstract class MergeCase {
 
     @BeforeEach
     public void setUp() throws Exception {
-        resolver = env.getInstance(EntityResolver.class);
-        node = env.getInstance(DataNode.class);
+        resolver = env.entityResolver();
+        node = env.dataNode();
         dbHelper = env.dbHelper();
         runtime = env.runtime();
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        dataSourceFactory = env.getInstance(RuntimeCaseDataSourceFactory.class);
+        accessStackAdapter = env.unitDbAdapter();
+        dataSourceFactory = env.dataSourceFactory();
 
         // break circular FK before DBCleaner.clean()
         dbHelper.update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
-        env.getInstance(DBCleaner.class).clean();
+        env.dbCleaner().clean();
 
         // this map can't be safely modified in this test, as it is reset by DI
         // container
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/db/SetGeneratedFlagToDbIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/db/SetGeneratedFlagToDbIT.java
index 5d50cf0e4..701084c62 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/db/SetGeneratedFlagToDbIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/db/SetGeneratedFlagToDbIT.java
@@ -64,7 +64,7 @@ public class SetGeneratedFlagToDbIT extends MergeCase {
 
     @BeforeEach
     public void setUpDbAdapter() {
-        dbAdapter = env.getInstance(UnitDbAdapter.class);
+        dbAdapter = env.unitDbAdapter();
     }
 
     @Test
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
index 78571d0b4..115b23ab0 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
@@ -53,10 +53,10 @@ public class BaseLoaderIT {
 
     @BeforeEach
     public void before() throws Exception {
-        adapter = env.getInstance(DbAdapter.class);
+        adapter = env.dbAdapter();
         runtime = env.runtime();
-        dataSourceFactory = env.getInstance(RuntimeCaseDataSourceFactory.class);
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+        dataSourceFactory = env.dataSourceFactory();
+        accessStackAdapter = env.unitDbAdapter();
         store = new DbLoadDataStore();
         assertTrue(store.getDbEntities().isEmpty(), "Store is not empty");
         this.connection = dataSourceFactory.getSharedDataSource().getConnection();
diff --git a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
index 2b70726a2..dc0d5334b 100644
--- a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
+++ b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
@@ -150,9 +150,9 @@ public class DbLoaderIT {
     @BeforeEach
     public void before() throws Exception {
         runtime = env.runtime();
-        adapter = env.getInstance(DbAdapter.class);
-        dataSourceFactory = env.getInstance(RuntimeCaseDataSourceFactory.class);
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+        adapter = env.dbAdapter();
+        dataSourceFactory = env.dataSourceFactory();
+        accessStackAdapter = env.unitDbAdapter();
         this.connection = dataSourceFactory.getSharedDataSource().getConnection();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
index a39472b09..e01508b9e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
@@ -54,7 +54,7 @@ public class CDOQualifiedEntitiesIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+        accessStackAdapter = env.unitDbAdapter();
         int bool = accessStackAdapter.supportsBoolean() ? Types.BOOLEAN : Types.INTEGER;
 
         tQualified1 = env.table("TEST_QUALIFIED1")
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
index a459a7296..7cea42447 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
@@ -53,9 +53,9 @@ public class CayennePersistentObjectFlattenedRelIT {
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         env.dbHelper().update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
-        env.getInstance(DBCleaner.class).clean();
+        env.dbCleaner().clean();
 
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
         tArtGroup = env.table("ARTGROUP", "GROUP_ID", "NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
index 36be626bb..d6f9b9369 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
@@ -71,7 +71,7 @@ public class CircularDependencyIT {
 
         CayenneRuntimeException ex = assertThrows(CayenneRuntimeException.class, () -> env.context().commitChanges());
         // TODO: Oracle adapter still does not fully support key generation.
-        if (env.getInstance(UnitDbAdapter.class) instanceof OracleUnitDbAdapter) {
+        if (env.unitDbAdapter() instanceof OracleUnitDbAdapter) {
             assertTrue(ex.getCause().getMessage().contains("parent key not found"));
         } else {
             assertTrue(ex.getMessage().contains("PK is not generated"),
diff --git a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
index 2c32aab71..baf051077 100644
--- a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
@@ -53,7 +53,7 @@ public class DataContextMaxIdQualifierIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         runtime = env.runtime();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java b/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
index 3abd01d0d..bd956b515 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
@@ -37,7 +37,7 @@ public class CAY2723IT {
     @Test
     public void phantomToDepPKUpdate() {
         DataContext context = env.context();
-        DataChannelInterceptor queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        DataChannelInterceptor queryInterceptor = env.dataChannelInterceptor();
 
         // try to trigger PK generator. so it wouldn't random fail the actual test
         for (int i = 0; i < JdbcPkGenerator.DEFAULT_PK_CACHE_SIZE; i++) {
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java b/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
index 5690b368c..632590a7b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
@@ -49,7 +49,7 @@ public class Cay2641IT {
 
     @BeforeEach
     public void setup() throws Exception {
-        adapter = env.getInstance(DbAdapter.class);
+        adapter = env.dbAdapter();
 
         TableHelper th = env.table("ArtistLazy")
                 .setColumns("ID", "NAME", "SURNAME")
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
index 8bca72717..750baa936 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
@@ -39,7 +39,7 @@ public class DataContextBinaryPKIT {
 
     @Test
     public void insertBinaryPK() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsBinaryPK()) {
+        if (!env.unitDbAdapter().supportsBinaryPK()) {
             return;
         }
 
@@ -57,7 +57,7 @@ public class DataContextBinaryPKIT {
 
     @Test
     public void fetchRelationshipBinaryPK() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsBinaryPK()) {
+        if (!env.unitDbAdapter().supportsBinaryPK()) {
             return;
         }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
index d76c2f123..7443c1a90 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
@@ -51,11 +51,11 @@ public class DataContextBlobIT {
     }
 
     protected boolean skipTests() {
-        return !env.getInstance(UnitDbAdapter.class).supportsLobs();
+        return !env.unitDbAdapter().supportsLobs();
     }
 
     protected boolean skipEmptyLOBTests() {
-        return !env.getInstance(UnitDbAdapter.class).handlesNullVsEmptyLOBs();
+        return !env.unitDbAdapter().handlesNullVsEmptyLOBs();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
index 0a4cd88ea..0af5ca7e4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
@@ -37,7 +37,7 @@ public class DataContextCharTypeIT {
 
     @Test
     public void charTrimming() {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             DataContext context = env.context();
             ReturnTypesMap1 map1 = context.newObject(ReturnTypesMap1.class);
             map1.setCharColumn("  text   ");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
index 58b71bf53..74af0d1b0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
@@ -50,11 +50,11 @@ public class DataContextClobIT {
     }
 
     private boolean skipTests() {
-        return !env.getInstance(UnitDbAdapter.class).supportsLobs();
+        return !env.unitDbAdapter().supportsLobs();
     }
 
     private boolean skipEmptyLOBTests() {
-        return !env.getInstance(UnitDbAdapter.class).handlesNullVsEmptyLOBs();
+        return !env.unitDbAdapter().handlesNullVsEmptyLOBs();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
index 4c47da857..04ee0b592 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
@@ -35,7 +35,7 @@ public class DataContextCrossDBIT {
 
     @Test
     public void multiDBUpdate() {
-        if (!env.getInstance(UnitDbAdapter.class).supportsPKGeneratorConcurrency()) {
+        if (!env.unitDbAdapter().supportsPKGeneratorConcurrency()) {
             return;
         }
         // for now testing that no exceptions are thrown... wouldn't hurt to check the
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
index c41dff7b2..69fce148c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
@@ -58,7 +58,7 @@ public class DataContextDeleteRulesIT {
     public void cleanUpDB() throws Exception {
         // Break ARTGROUP self-referencing FK before DB clean, then re-clean
         env.dbHelper().update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
-        env.getInstance(DBCleaner.class).clean();
+        env.dbCleaner().clean();
         context = env.context();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
index 281112fdb..91f8eb0ed 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
@@ -60,7 +60,7 @@ public class DataContextDisjointByIdPrefetchIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE").setColumnTypes(Types.INTEGER, Types.BIGINT,
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
index 16c0375af..4adee9b91 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
@@ -58,7 +58,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tBag = env.table("BAG", "ID", "NAME");
 
         tBall = env.table("BALL", "ID", "BOX_ID", "THING_VOLUME", "THING_WEIGHT");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java
index 415d02861..c1eaa247a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDateTimeFunctionalExpressionsIT.java
@@ -83,7 +83,7 @@ public class DataContextEJBQLDateTimeFunctionalExpressionsIT {
         EJBQLQuery query = new EJBQLQuery(
                 "SELECT d FROM DateTestEntity d WHERE d.timeColumn < CURRENT_TIME");
         List<?> objects = env.context().performQuery(query);
-        if(!env.getInstance(UnitDbAdapter.class).supportsTimeSqlType()) {
+        if(!env.unitDbAdapter().supportsTimeSqlType()) {
             // check only that query is executed without error
             // result will be invalid most likely as DB doesn't support TIME data type
             return;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
index cf271bf79..92389f368 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
@@ -59,7 +59,7 @@ public class DataContextEJBQLFetchJoinIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        queryBlocker = env.getInstance(DataChannelInterceptor.class);
+        queryBlocker = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java
index 32ffdb18a..e0b1d49f9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFunctionalExpressionsIT.java
@@ -238,7 +238,7 @@ public class DataContextEJBQLFunctionalExpressionsIT {
     @Test
     public void tRIMChar() {
 
-        if (!env.getInstance(UnitDbAdapter.class).supportsTrimChar()) {
+        if (!env.unitDbAdapter().supportsTrimChar()) {
             return;
         }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
index 72028b446..ee0356b96 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
@@ -47,7 +47,7 @@ public class DataContextEJBQLIsNullIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+        accessStackAdapter = env.unitDbAdapter();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
index 12db86eb1..b1c78fd50 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
@@ -50,7 +50,7 @@ public class DataContextEJBQLQueryCompoundIT {
 	
 	@BeforeEach
 	public void setUp() throws Exception {
-		accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+		accessStackAdapter = env.unitDbAdapter();
 		tCompoundPk = env.table("COMPOUND_PK_TEST", "KEY1", "KEY2");
 
 		tCompoundFk = env.table("COMPOUND_FK_TEST", "PKEY", "F_KEY1", "F_KEY2");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
index b12375362..630f0f688 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
@@ -57,7 +57,7 @@ public class DataContextEJBQLQueryIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+        accessStackAdapter = env.unitDbAdapter();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
index a531c087f..f2daff5a4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
@@ -51,7 +51,7 @@ public class DataContextEJBQLSubqueryIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+        accessStackAdapter = env.unitDbAdapter();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
index c0a3ac08f..a816cedea 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
@@ -70,8 +70,8 @@ public class DataContextExtrasIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        logger = env.getInstance(JdbcEventLogger.class);
-        objectFactory = env.getInstance(AdhocObjectFactory.class);
+        logger = env.jdbcEventLogger();
+        objectFactory = env.adhocObjectFactory();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
index 552014e8b..eab2c8134 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
@@ -79,9 +79,9 @@ public class DataContextIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-		dataSourceFactory = env.getInstance(RuntimeCaseDataSourceFactory.class);
+		accessStackAdapter = env.unitDbAdapter();
+		queryInterceptor = env.dataChannelInterceptor();
+		dataSourceFactory = env.dataSourceFactory();
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
 		tExhibit = env.table("EXHIBIT", "EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
index 1529e332b..d9d0d1dc0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
@@ -60,7 +60,7 @@ public class DataContextLocalObjectIT  {
     public void setUp() throws Exception {
         context1 = env.context();
         context2 = (DataContext) env.runtime().newContext();
-        interceptor = env.getInstance(DataChannelInterceptor.class);
+        interceptor = env.dataChannelInterceptor();
         runtime = env.runtime();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java
index 1eadedf2d..61be30cd6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java
@@ -51,7 +51,7 @@ public class DataContextObjectIdQuery_PolymorphicIT extends PeopleProjectCase {
 	public void before() {
 		context1 = env.context();
 		context2 = (DataContext) env.runtime().newContext();
-		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+		queryInterceptor = env.dataChannelInterceptor();
 		tPerson = new TableHelper(dbHelper, "PERSON").setColumns("PERSON_ID", "NAME", "PERSON_TYPE")
 				.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 	}
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
index 76691e299..5c896e7e0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
@@ -64,7 +64,7 @@ public class DataContextObjectTrackingIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         context = env.context();
         runtime = env.runtime();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
index 0070fff38..718e45e7d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
@@ -48,7 +48,7 @@ public class DataContextOuterJoinsIT {
     @BeforeEach
     public void cleanUpDB() throws Exception {
         env.dbHelper().update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
-        env.getInstance(DBCleaner.class).clean();
+        env.dbCleaner().clean();
 
         artistHelper = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
         paintingHelper = env
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
index 19965f7fb..58ff74056 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
@@ -70,9 +70,9 @@ public class DataContextPerformQueryAPIIT  {
     public void setUp() throws Exception {
         context = env.context();
         context2 = (DataContext) env.runtime().newContext();
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        jdbcEventLogger = env.getInstance(JdbcEventLogger.class);
+        accessStackAdapter = env.unitDbAdapter();
+        queryInterceptor = env.dataChannelInterceptor();
+        jdbcEventLogger = env.jdbcEventLogger();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE", "ESTIMATED_PRICE").setColumnTypes(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
index 563521abf..b3f7d08c0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
@@ -78,7 +78,7 @@ public class DataContextPrefetchIT  {
 	@BeforeEach
 	public void setUp() throws Exception {
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
 		tPainting = env.table("PAINTING").setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "ESTIMATED_PRICE", "GALLERY_ID").setColumnTypes(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
index a16d5cfee..3d4a829d0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
@@ -60,7 +60,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void update() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -73,7 +73,7 @@ public class DataContextProcedureQueryIT  {
         // since stored procedure commits its stuff, we must use an explicit
         // non-committing transaction
 
-        BaseTransaction t = new ExternalTransaction(env.getInstance(JdbcEventLogger.class));
+        BaseTransaction t = new ExternalTransaction(env.jdbcEventLogger());
         BaseTransaction.bindThreadTransaction(t);
 
         try {
@@ -97,7 +97,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void updateNoParam() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -109,7 +109,7 @@ public class DataContextProcedureQueryIT  {
         // since stored procedure commits its stuff, we must use an explicit
         // non-committing transaction
 
-        BaseTransaction t = new ExternalTransaction(env.getInstance(JdbcEventLogger.class));
+        BaseTransaction t = new ExternalTransaction(env.jdbcEventLogger());
         BaseTransaction.bindThreadTransaction(t);
 
         try {
@@ -133,7 +133,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void select1() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -159,7 +159,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void select2() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -186,7 +186,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void select3() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -215,7 +215,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void fetchLimit() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -235,7 +235,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void fetchOffset() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -255,7 +255,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void columnNameCapitalization() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -283,7 +283,7 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void outParams() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -304,11 +304,11 @@ public class DataContextProcedureQueryIT  {
 
     @Test
     public void selectPersistentObject() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
-        if (!env.getInstance(UnitDbAdapter.class).canMakeObjectsOutOfProcedures()) {
+        if (!env.unitDbAdapter().canMakeObjectsOutOfProcedures()) {
             return;
         }
 
@@ -334,7 +334,7 @@ public class DataContextProcedureQueryIT  {
     @Test
     public void selectWithRowDescriptor() throws Exception {
 
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -384,7 +384,7 @@ public class DataContextProcedureQueryIT  {
         // e.g.
         // http://stackoverflow.com/questions/16921942/porting-apache-cayenne-from-oracle-to-postgresql
 
-        BaseTransaction t = new ExternalTransaction(env.getInstance(JdbcEventLogger.class));
+        BaseTransaction t = new ExternalTransaction(env.jdbcEventLogger());
         BaseTransaction.bindThreadTransaction(t);
 
         try {
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
index ea7af20b6..a79db3813 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
@@ -62,7 +62,7 @@ public class DataContextRefreshingIT  {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java
index 15af464cf..d4e5dc686 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java
@@ -49,7 +49,7 @@ public class DataContextRelationshipQuery_PolymorphicIT extends PeopleProjectCas
     public void before() {
         context1 = env.context();
         context2 = (DataContext) env.runtime().newContext();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tPerson = new TableHelper(dbHelper, "PERSON").setColumns("PERSON_ID", "NAME", "PERSON_TYPE")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
index 3a42871af..da5c49f6b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
@@ -64,7 +64,7 @@ public class DataContextSQLTemplateIT {
 	public void setUp() throws Exception {
 		runtime = env.runtime();
 		context = env.context();
-		sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
+		sqlTemplateCustomizer = env.sqlTemplateCustomizer();
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
 		tPainting = env.table("PAINTING").setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "ESTIMATED_PRICE").setColumnTypes(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
index f6d7f9cb9..3402b92b5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
@@ -63,7 +63,7 @@ public class DataContextSerializationIT {
     public void setUp() throws Exception {
         context = env.context();
         runtime = env.runtime();
-        logger = env.getInstance(JdbcEventLogger.class);
+        logger = env.jdbcEventLogger();
         CayenneRuntime.bindThreadInjector(runtime.getInjector());
 
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
index c1c882110..942fd1164 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
@@ -64,7 +64,7 @@ public class DataContextSharedCacheIT {
     public void setUp() throws Exception {
         context = env.context();
         context1 = (DataContext) env.runtime().newContext();
-        sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
+        sqlTemplateCustomizer = env.sqlTemplateCustomizer();
         // prepare a single artist record
         artist = (Artist) context.newObject("Artist");
         artist.setArtistName("version1");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
index 6541a354e..ca9d56d94 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainCallbacksIT.java
@@ -47,7 +47,7 @@ public class DataDomainCallbacksIT {
 
     @BeforeEach
     public void setUp() {
-        resolver = env.getInstance(EntityResolver.class);
+        resolver = env.entityResolver();
         context1 = env.runtime().newContext();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java
index 5735185f3..3e2c19f09 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainIT.java
@@ -111,11 +111,11 @@ public class DataDomainIT {
         DataDomain domain = new DataDomain("dom1");
         assertEquals(0, domain.getDataNodes().size());
         DataNode node = new DataNode("1");
-        node.setJdbcEventLogger(env.getInstance(JdbcEventLogger.class));
+        node.setJdbcEventLogger(env.jdbcEventLogger());
         domain.addNode(node);
         assertEquals(1, domain.getDataNodes().size());
         node = new DataNode("2");
-        node.setJdbcEventLogger(env.getInstance(JdbcEventLogger.class));
+        node.setJdbcEventLogger(env.jdbcEventLogger());
         domain.addNode(node);
         assertEquals(2, domain.getDataNodes().size());
     }
@@ -126,7 +126,7 @@ public class DataDomainIT {
         assertNull(domain.getDataMap("map"));
 
         DataNode node = new DataNode("1");
-        node.setJdbcEventLogger(env.getInstance(JdbcEventLogger.class));
+        node.setJdbcEventLogger(env.jdbcEventLogger());
         node.addDataMap(new DataMap("map"));
 
         domain.addNode(node);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java
index 77f119360..e1fb5ea84 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeIT.java
@@ -68,14 +68,14 @@ public class DataNodeIT {
 
         assertNull(node.getAdapter());
 
-        JdbcAdapter a1 = env.getInstance(AdhocObjectFactory.class).newInstance(
+        JdbcAdapter a1 = env.adhocObjectFactory().newInstance(
                 JdbcAdapter.class, 
                 JdbcAdapter.class.getName());
         node.setAdapter(a1);
 
         assertSame(a1, node.getAdapter());
 
-        JdbcAdapter a2 = env.getInstance(AdhocObjectFactory.class).newInstance(
+        JdbcAdapter a2 = env.adhocObjectFactory().newInstance(
                 JdbcAdapter.class, 
                 JdbcAdapter.class.getName());
         node.setAdapter(a2);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
index 35292e292..54be67d71 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
@@ -53,8 +53,8 @@ public class DataNodeQueriesIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        node = env.getInstance(DataNode.class);
-        sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
+        node = env.dataNode();
+        sqlTemplateCustomizer = env.sqlTemplateCustomizer();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
index f94ad945e..8a25beaa4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
@@ -51,7 +51,7 @@ public class DataNodeQueryExceptionsIT {
         };
 
         assertEquals(0, activeConnections());
-        assertThrows(CayenneRuntimeException.class, () -> env.getInstance(DataNode.class).performQueries(
+        assertThrows(CayenneRuntimeException.class, () -> env.dataNode().performQueries(
                 Collections.singletonList(throwingSS),
                 new MockOperationObserver()));
 
@@ -69,7 +69,7 @@ public class DataNodeQueryExceptionsIT {
         };
 
         assertEquals(0, activeConnections());
-        assertThrows(Error.class, () -> env.getInstance(DataNode.class).performQueries(
+        assertThrows(Error.class, () -> env.dataNode().performQueries(
                 Collections.singletonList(throwingSS),
                 new MockOperationObserver()));
 
@@ -78,7 +78,7 @@ public class DataNodeQueryExceptionsIT {
 
     int activeConnections() {
         try {
-            UnmanagedPoolingDataSource ds = env.getInstance(RuntimeCaseDataSourceFactory.class).getSharedDataSource().unwrap(UnmanagedPoolingDataSource.class);
+            UnmanagedPoolingDataSource ds = env.dataSourceFactory().getSharedDataSource().unwrap(UnmanagedPoolingDataSource.class);
 
             Method poolSize = UnmanagedPoolingDataSource.class.getDeclaredMethod("poolSize");
             poolSize.setAccessible(true);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java
index d0816fc6e..fb9d8a89e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DbGeneratorIT.java
@@ -49,9 +49,9 @@ public class DbGeneratorIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        adapter = env.getInstance(DbAdapter.class);
+        adapter = env.dbAdapter();
         runtime = env.runtime();
-        logger = env.getInstance(JdbcEventLogger.class);
+        logger = env.jdbcEventLogger();
         generator = new DbGenerator(adapter, runtime
                 .getDataDomain()
                 .getDataMap("testmap"), logger);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
index a47d4a639..b67748942 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
@@ -56,7 +56,7 @@ public class FlattenedPrefetchIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
 
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
index 9c74420f5..700e50b25 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
@@ -61,8 +61,8 @@ public class IdentityColumnsIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        adapter = env.getInstance(DbAdapter.class);
-        node = env.getInstance(DataNode.class);
+        adapter = env.dbAdapter();
+        node = env.dataNode();
         joinTable = env.table("GENERATED_JOIN");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
index 8430dc5c2..13787c193 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
@@ -72,7 +72,7 @@ public class JointPrefetchIT {
     public void setUp() throws Exception {
         context = env.context();
         runtime = env.runtime();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tGallery = env.table("GALLERY", "GALLERY_ID", "GALLERY_NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java
index 6ead51ac0..c6bf975e6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/MiscTypesIT.java
@@ -44,7 +44,7 @@ public class MiscTypesIT {
     public void serializable() throws Exception {
 
         // this test requires BLOB support
-        if(!env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if(!env.unitDbAdapter().supportsLobs()) {
             return;
         }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
index 427d2202a..e045ddcf2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
@@ -59,7 +59,7 @@ public class NestedDataContextReadIT {
     public void setUp() throws Exception {
         runtime = env.runtime();
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
index e9ea7a1fe..851775090 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
@@ -62,7 +62,7 @@ public class NestedDataContextWriteIT {
     public void setUp() throws Exception {
         runtime = env.runtime();
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING").setColumns(
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java b/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
index 08c5d1906..dfa008acb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
@@ -60,7 +60,7 @@ public class PrefetchProcessorTreeBuilderIT {
     @BeforeEach
     public void setUp() {
         context = env.context();
-        resolver = env.getInstance(EntityResolver.class);
+        resolver = env.entityResolver();
     }
 
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
index b2d2f9e94..7e365c215 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
@@ -66,7 +66,7 @@ public class ReturnTypesMappingIT {
         DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
-        if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
+        if(env.unitDbAdapter().onlyGenericNumberType()) {
             assertEquals(BigDecimal.class, columnValue.getClass());
             assertEquals(BigDecimal.valueOf(bigintValue), columnValue);
         } else {
@@ -94,7 +94,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void binary() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             String columnName = "BINARY_COLUMN";
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
@@ -114,7 +114,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void binary2() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] binaryValue = {
@@ -170,10 +170,10 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void blob() throws Exception {
-        assumeTrue(!(env.getInstance(UnitDbAdapter.class) instanceof PostgresUnitDbAdapter),
+        assumeTrue(!(env.unitDbAdapter() instanceof PostgresUnitDbAdapter),
                 "In postresql blob_column has OID type, but in JAVA it converts into long not into byte.");
 
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             String columnName = "BLOB_COLUMN";
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
@@ -193,7 +193,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void blob2() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] blobValue = {
@@ -299,7 +299,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void clob() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             String columnName = "CLOB_COLUMN";
             ReturnTypesMapLobs1 test = env.context().newObject(ReturnTypesMapLobs1.class);
 
@@ -324,7 +324,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void nclob() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             String columnName = "NCLOB_COLUMN";
             ReturnTypesMapLobs1 test = env.context().newObject(ReturnTypesMapLobs1.class);
 
@@ -350,7 +350,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void clob2() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             ReturnTypesMapLobs1 test = env.context().newObject(ReturnTypesMapLobs1.class);
 
             StringBuffer buffer = new StringBuffer();
@@ -455,7 +455,7 @@ public class ReturnTypesMappingIT {
         DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
-        if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
+        if(env.unitDbAdapter().onlyGenericNumberType()) {
             assertEquals(BigDecimal.class, columnValue.getClass());
             assertEquals(BigDecimal.valueOf(doubleValue), columnValue);
         } else {
@@ -493,7 +493,7 @@ public class ReturnTypesMappingIT {
         DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
-        if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
+        if(env.unitDbAdapter().onlyGenericNumberType()) {
             assertEquals(BigDecimal.class, columnValue.getClass());
         } else {
             assertTrue(Float.class.equals(columnValue.getClass())
@@ -554,7 +554,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void longVarBinary() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             String columnName = "LONGVARBINARY_COLUMN";
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
@@ -574,7 +574,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void longVarBinary2() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] longvarbinaryValue = {
@@ -702,10 +702,10 @@ public class ReturnTypesMappingIT {
 
         // MySQL can treat REAL as either DOUBLE or FLOAT depending on the
         // engine settings
-        if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
+        if(env.unitDbAdapter().onlyGenericNumberType()) {
             assertEquals(BigDecimal.class, columnValue.getClass());
         } else {
-            if (env.getInstance(UnitDbAdapter.class).realAsDouble()) {
+            if (env.unitDbAdapter().realAsDouble()) {
                 assertEquals(Double.class, columnValue.getClass());
                 assertEquals(Double.valueOf(realValue), (Double) columnValue, 0.0001);
             } else {
@@ -745,7 +745,7 @@ public class ReturnTypesMappingIT {
         DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
-        if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
+        if(env.unitDbAdapter().onlyGenericNumberType()) {
             assertEquals(Integer.class, columnValue.getClass());
             assertEquals(intValue, columnValue);
         } else {
@@ -864,7 +864,7 @@ public class ReturnTypesMappingIT {
         DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
-        if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
+        if(env.unitDbAdapter().onlyGenericNumberType()) {
             assertEquals(Integer.class, columnValue.getClass());
         } else {
             assertEquals(Short.class, columnValue.getClass());
@@ -891,7 +891,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void varBinary() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             String columnName = "VARBINARY_COLUMN";
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
@@ -911,7 +911,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void varBinary2() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] varbinaryValue = {
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
index d13cb0483..a8351bba9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
@@ -52,7 +52,7 @@ public class SimpleIdIncrementalFaultListPrefetchIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPaining = env.table("PAINTING", "PAINTING_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
index fca64b1b6..e21f968bc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
@@ -63,7 +63,7 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
 	public void setUp() {
     	context = env.context();
     	context2 = (DataContext) env.runtime().newContext();
-    	queryBlocker = env.getInstance(DataChannelInterceptor.class);
+    	queryBlocker = env.dataChannelInterceptor();
 		tAddress = new TableHelper(dbHelper, "ADDRESS", "ADDRESS_ID", "CITY", "PERSON_ID");
 
 		tClientCompany = new TableHelper(dbHelper, "CLIENT_COMPANY", "CLIENT_COMPANY_ID", "NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java b/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java
index d5eed3004..c2406acfd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/dbsync/SchemaUpdateStrategyBase.java
@@ -54,8 +54,8 @@ public class SchemaUpdateStrategyBase {
 	@BeforeEach
 	public void cleanUpDB() {
 		context = env.context();
-		node = env.getInstance(DataNode.class);
-		adapter = env.getInstance(DbAdapter.class);
+		node = env.dataNode();
+		adapter = env.dbAdapter();
 		DataMap map = node.getEntityResolver().getDataMap("sus-map");
 		for (String name : existingTables()) {
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java
index 42b1ff022..07e1ebc7b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionGeneratedIT.java
@@ -79,7 +79,7 @@ public class BatchActionGeneratedIT {
     }
 
     JdbcAdapter buildAdapter(boolean supportGeneratedKeys) {
-        JdbcAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(JdbcAdapter.class, JdbcAdapter.class.getName());
+        JdbcAdapter adapter = env.adhocObjectFactory().newInstance(JdbcAdapter.class, JdbcAdapter.class.getName());
         adapter.setSupportsGeneratedKeys(supportGeneratedKeys);
         return adapter;
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java
index ccf75ad5e..d8647745a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionIT.java
@@ -72,7 +72,7 @@ public class BatchActionIT {
     }
 
     JdbcAdapter buildAdapter(boolean supportGeneratedKeys) {
-        JdbcAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(JdbcAdapter.class, JdbcAdapter.class.getName());
+        JdbcAdapter adapter = env.adhocObjectFactory().newInstance(JdbcAdapter.class, JdbcAdapter.class.getName());
         adapter.setSupportsGeneratedKeys(supportGeneratedKeys);
         return adapter;
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java
index 2fead147d..e61db6bac 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/BatchActionLockingIT.java
@@ -25,8 +25,6 @@ import org.apache.cayenne.access.OptimisticLockException;
 import org.apache.cayenne.access.jdbc.reader.RowReaderFactory;
 import org.apache.cayenne.access.translator.batch.DeleteBatchTranslator;
 import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.EntityResolver;
@@ -130,9 +128,8 @@ public class BatchActionLockingIT {
 	}
 
 	JdbcAdapter buildAdapter(boolean supportGeneratedKeys) {
-		JdbcAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(JdbcAdapter.class, JdbcAdapter.class.getName());
+		JdbcAdapter adapter = env.adhocObjectFactory().newInstance(JdbcAdapter.class, JdbcAdapter.class.getName());
 		adapter.setSupportsGeneratedKeys(supportGeneratedKeys);
-		env.getInstance(Injector.class).injectMembers(adapter);
 		return adapter;
 	}
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
index b1aa50962..da4b13133 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
@@ -69,12 +69,12 @@ public class SQLTemplateActionIT {
 
 	@BeforeEach
 	public void setUp() throws Exception {
-		dataSourceFactory = env.getInstance(RuntimeCaseDataSourceFactory.class);
-		node = env.getInstance(DataNode.class);
-		adapter = env.getInstance(JdbcAdapter.class);
-		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+		dataSourceFactory = env.dataSourceFactory();
+		node = env.dataNode();
+		adapter = env.jdbcAdapter();
+		unitDbAdapter = env.unitDbAdapter();
 		objectContext = env.context();
-		sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
+		sqlTemplateCustomizer = env.sqlTemplateCustomizer();
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 	}
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
index 68a85f5aa..817d3ff35 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
@@ -41,7 +41,7 @@ public class SelectActionIT {
 
     @Test
     public void fetchLimit_DistinctResultIterator() {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
 
             insertClobDb();
 
@@ -57,7 +57,7 @@ public class SelectActionIT {
 
     @Test
     public void columnSelect_DistinctResultIterator() {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
 
             insertClobDb();
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
index c3e759287..cf9adfae2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java
@@ -58,9 +58,9 @@ public class DeleteBatchTranslatorIT {
     @BeforeEach
     public void setUp() {
         runtime = env.runtime();
-        adapter = env.getInstance(DbAdapter.class);
-        unitAdapter = env.getInstance(UnitDbAdapter.class);
-        objectFactory = env.getInstance(AdhocObjectFactory.class);
+        adapter = env.dbAdapter();
+        unitAdapter = env.unitDbAdapter();
+        objectFactory = env.adhocObjectFactory();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
index c9cedd174..20db19a3c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java
@@ -51,9 +51,9 @@ public class InsertBatchTranslatorIT {
     @BeforeEach
     public void setUp() {
         runtime = env.runtime();
-        adapter = env.getInstance(DbAdapter.class);
-        unitAdapter = env.getInstance(UnitDbAdapter.class);
-        objectFactory = env.getInstance(AdhocObjectFactory.class);
+        adapter = env.dbAdapter();
+        unitAdapter = env.unitDbAdapter();
+        objectFactory = env.adhocObjectFactory();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java
index d6b209bbd..37c6d96e2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslatorIT.java
@@ -67,10 +67,10 @@ public class SoftDeleteBatchTranslatorIT {
 
     @BeforeEach
     public void setUp() {
-        adapter = env.getInstance(DbAdapter.class);
-        dataNode = env.getInstance(DataNode.class);
-        unitAdapter = env.getInstance(UnitDbAdapter.class);
-        objectFactory = env.getInstance(AdhocObjectFactory.class);
+        adapter = env.dbAdapter();
+        dataNode = env.dataNode();
+        unitAdapter = env.unitDbAdapter();
+        objectFactory = env.adhocObjectFactory();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
index 5d8efb585..b6756ec10 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java
@@ -58,9 +58,9 @@ public class UpdateBatchTranslatorIT {
     @BeforeEach
     public void setUp() {
         runtime = env.runtime();
-        adapter = env.getInstance(DbAdapter.class);
-        unitAdapter = env.getInstance(UnitDbAdapter.class);
-        objectFactory = env.getInstance(AdhocObjectFactory.class);
+        adapter = env.dbAdapter();
+        unitAdapter = env.unitDbAdapter();
+        objectFactory = env.adhocObjectFactory();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java
index 0f032429c..cba105d2a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorIT.java
@@ -45,7 +45,7 @@ public class DefaultBatchTranslatorIT {
 
     @Test
     public void constructor() throws Exception {
-        DbAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(DbAdapter.class, JdbcAdapter.class.getName());
+        DbAdapter adapter = env.adhocObjectFactory().newInstance(DbAdapter.class, JdbcAdapter.class.getName());
         DefaultBatchTranslator builder = new DefaultBatchTranslator(mock(BatchQuery.class), adapter, null) {
             @Override
             protected String createSql() {
@@ -68,7 +68,7 @@ public class DefaultBatchTranslatorIT {
 
     @Test
     public void appendDbAttribute1() throws Exception {
-        DbAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(DbAdapter.class, JdbcAdapter.class.getName());
+        DbAdapter adapter = env.adhocObjectFactory().newInstance(DbAdapter.class, JdbcAdapter.class.getName());
         String trimFunction = "testTrim";
 
         DefaultBatchTranslator builder = new DefaultBatchTranslator(mock(BatchQuery.class), adapter, trimFunction) {
@@ -105,7 +105,7 @@ public class DefaultBatchTranslatorIT {
 
     @Test
     public void appendDbAttribute2() throws Exception {
-        DbAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(DbAdapter.class, JdbcAdapter.class.getName());
+        DbAdapter adapter = env.adhocObjectFactory().newInstance(DbAdapter.class, JdbcAdapter.class.getName());
 
         DefaultBatchTranslator builder = new DefaultBatchTranslator(mock(BatchQuery.class), adapter, null) {
             @Override
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java
index d51581ac5..024adb8cf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectTranslatorIT.java
@@ -57,7 +57,7 @@ public class EJBQLSelectTranslatorIT {
         };
 
         EJBQLTranslationContext tr = new EJBQLTranslationContext(env.runtime().getDataDomain().getEntityResolver(), query,
-                select, new JdbcEJBQLTranslatorFactory(), env.getInstance(DbAdapter.class).getQuotingStrategy());
+                select, new JdbcEJBQLTranslatorFactory(), env.dbAdapter().getQuotingStrategy());
         select.getExpression().visit(new EJBQLSelectTranslator(tr));
         return tr.getQuery();
     }
@@ -309,7 +309,7 @@ public class EJBQLSelectTranslatorIT {
         query.setParameter("x", null);
 
         EJBQLTranslationContext tr = new EJBQLTranslationContext(env.runtime().getDataDomain().getEntityResolver(), query,
-                select, new JdbcEJBQLTranslatorFactory(), env.getInstance(DbAdapter.class).getQuotingStrategy());
+                select, new JdbcEJBQLTranslatorFactory(), env.dbAdapter().getQuotingStrategy());
         select.getExpression().visit(new EJBQLSelectTranslator(tr));
         String sql = tr.getQuery().getDefaultTemplate();
         assertTrue(sql.endsWith("t0.ARTIST_ID IS NULL"), sql);
@@ -326,7 +326,7 @@ public class EJBQLSelectTranslatorIT {
         query.setParameter("b", "Y");
 
         EJBQLTranslationContext tr = new EJBQLTranslationContext(env.runtime().getDataDomain().getEntityResolver(), query,
-                select, new JdbcEJBQLTranslatorFactory(), env.getInstance(DbAdapter.class).getQuotingStrategy());
+                select, new JdbcEJBQLTranslatorFactory(), env.dbAdapter().getQuotingStrategy());
         select.getExpression().visit(new EJBQLSelectTranslator(tr));
         String sql = tr.getQuery().getDefaultTemplate();
         assertTrue(sql.endsWith("t0.ARTIST_ID IS NULL OR t1.ARTIST_NAME = #bind($id0)"), sql);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
index 518723787..6f32cf234 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
@@ -38,7 +38,7 @@ public class DefaultObjectSelectTranslatorIT {
     @Test
     public void simpleSql() {
         ObjectSelect<Artist> select = ObjectSelect.query(Artist.class);
-        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.context().getEntityResolver());
+        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.dbAdapter(), env.context().getEntityResolver());
 
         String sql = translator.getSql();
         assertTrue(sql.startsWith("SELECT "));
@@ -61,7 +61,7 @@ public class DefaultObjectSelectTranslatorIT {
         ObjectSelect<Artist> select = ObjectSelect.query(Artist.class, Artist.ARTIST_NAME.eq("artist")
                 .andExp(Artist.PAINTING_ARRAY.dot(Painting.PAINTING_TITLE).eq("painting")));
 
-        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.context().getEntityResolver());
+        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.dbAdapter(), env.context().getEntityResolver());
 
         String sql = translator.getSql();
         assertTrue(sql.startsWith("SELECT DISTINCT"));
@@ -89,7 +89,7 @@ public class DefaultObjectSelectTranslatorIT {
     public void selectWithJointPrefetch() {
         ObjectSelect<Painting> select = ObjectSelect.query(Painting.class).prefetch(Painting.TO_ARTIST.joint());
 
-        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.context().getEntityResolver());
+        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.dbAdapter(), env.context().getEntityResolver());
 
         String sql = translator.getSql();
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
index 5b41eef1a..98f450704 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
@@ -64,7 +64,7 @@ public class DefaultSelectTranslatorIT {
 		ObjectSelect<Artist> q = ObjectSelect.query(Artist.class, Artist.ARTIST_NAME.like("a%"))
 				.orderBy(Artist.DATE_OF_BIRTH.asc());
 
-		SelectTranslator defaultSelectTranslator = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator defaultSelectTranslator = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 		String generatedSql = defaultSelectTranslator.getSql();
 
 		// do some simple assertions to make sure all parts are in
@@ -86,7 +86,7 @@ public class DefaultSelectTranslatorIT {
 		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 
 		entity.setQualifier(ExpressionFactory.exp("ARTIST_NAME = \"123\""));
 		middleEntity.setQualifier(ExpressionFactory.exp("GROUP_ID = 1987"));
@@ -121,7 +121,7 @@ public class DefaultSelectTranslatorIT {
 		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 
 		entity.setQualifier(ExpressionFactory.exp("ARTIST_NAME = \"123\""));
 		middleEntity.setQualifier(ExpressionFactory.exp("GROUP_ID = 1987"));
@@ -160,7 +160,7 @@ public class DefaultSelectTranslatorIT {
 		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 
 		entity.setQualifier(ExpressionFactory.exp("ARTIST_NAME = \"123\""));
 		middleEntity.setQualifier(ExpressionFactory.exp("GROUP_ID = 1987"));
@@ -195,7 +195,7 @@ public class DefaultSelectTranslatorIT {
 		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 
 		entity.setQualifier(ExpressionFactory.exp("ARTIST_NAME = \"123\""));
 		middleEntity.setQualifier(ExpressionFactory.exp("GROUP_ID = 1987"));
@@ -230,7 +230,7 @@ public class DefaultSelectTranslatorIT {
 		ObjectSelect<Artist> q = ObjectSelect.query(Artist.class);
 		q.distinct();
 
-		String generatedSql = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+		String generatedSql = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 
 		// do some simple assertions to make sure all parts are in
 		assertNotNull(generatedSql);
@@ -253,7 +253,7 @@ public class DefaultSelectTranslatorIT {
 						.dot(Painting.TO_ARTIST)
 						.dot(Artist.ARTIST_NAME).like("a%"));
 
-		String generatedSql = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+		String generatedSql = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 		// logObj.warn("Query: " + generatedSql);
 
 		// do some simple assertions to make sure all parts are in
@@ -283,7 +283,7 @@ public class DefaultSelectTranslatorIT {
 				.where(ArtistExhibit.TO_ARTIST.dot(Artist.ARTIST_NAME).like("a%"))
 				.and(ArtistExhibit.TO_ARTIST.dot(Artist.PAINTING_ARRAY).dot(Painting.PAINTING_TITLE).like("p%"));
 
-		String generatedSql = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver())
+		String generatedSql = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver())
 				.getSql();
 
 		// do some simple assertions to make sure all parts are in
@@ -311,7 +311,7 @@ public class DefaultSelectTranslatorIT {
 				.where(Artist.DATE_OF_BIRTH.gt(new Date()))
 				.and(Artist.DATE_OF_BIRTH.lt(new Date()));
 
-		String generatedSql = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver())
+		String generatedSql = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver())
 				.getSql();
 		// logObj.warn("Query: " + generatedSql);
 
@@ -344,7 +344,7 @@ public class DefaultSelectTranslatorIT {
 				.where(Painting.TO_ARTIST.dot(Artist.DATE_OF_BIRTH).gt(new Date()))
 				.and(Painting.TO_ARTIST.dot(Artist.DATE_OF_BIRTH).lt(new Date()));
 
-		String generatedSql = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+		String generatedSql = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 
 		// do some simple assertions to make sure all parts are in
 		assertNotNull(generatedSql);
@@ -368,7 +368,7 @@ public class DefaultSelectTranslatorIT {
 		// query for a compound ObjEntity with qualifier
 		ObjectSelect<CompoundPainting> q = ObjectSelect.query(CompoundPainting.class, CompoundPainting.ARTIST_NAME.like("a%"));
 
-		String sql = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+		String sql = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 
 		// do some simple assertions to make sure all parts are in
 		assertNotNull(sql);
@@ -420,8 +420,8 @@ public class DefaultSelectTranslatorIT {
 		// query with to-many joint prefetches
 		ObjectSelect<Artist> q = ObjectSelect.query(Artist.class).prefetch(Artist.PAINTING_ARRAY.joint());
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(),
-				env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(),
+				env.dataNode().getEntityResolver());
 		String sql = transl.getSql();
 		assertNotNull(sql);
 		assertTrue(sql.startsWith("SELECT "));
@@ -445,8 +445,8 @@ public class DefaultSelectTranslatorIT {
 				.where(Artist.PAINTING_ARRAY.dot(Painting.PAINTING_TITLE).eq("a"))
 				.prefetch(Artist.PAINTING_ARRAY.joint());
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(),
-				env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(),
+				env.dataNode().getEntityResolver());
 
 		transl.getSql();
 
@@ -459,8 +459,8 @@ public class DefaultSelectTranslatorIT {
 		// query with to-one joint prefetches
 		ObjectSelect<Painting> q = ObjectSelect.query(Painting.class).prefetch(Painting.TO_ARTIST.joint());
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(),
-				env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(),
+				env.dataNode().getEntityResolver());
 
 		String sql = transl.getSql();
 		assertNotNull(sql);
@@ -484,7 +484,7 @@ public class DefaultSelectTranslatorIT {
 		ObjectSelect<Painting> q = ObjectSelect.query(Painting.class)
 				.prefetch("invalid.invalid", PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS);
 		try {
-			new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+			new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 			fail("Invalid jointPrefetch must have thrown...");
 		} catch (ExpressionException e) {
 			// expected
@@ -500,10 +500,10 @@ public class DefaultSelectTranslatorIT {
 			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
-			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
-			String charEnd = env.getInstance(UnitDbAdapter.class).getIdentifiersEndQuote();
+			String charStart = env.unitDbAdapter().getIdentifiersStartQuote();
+			String charEnd = env.unitDbAdapter().getIdentifiersEndQuote();
 
-			String s = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+			String s = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 			assertTrue(s.startsWith("SELECT "));
 			int iFrom = s.indexOf(" FROM ");
 			assertTrue(iFrom > 0);
@@ -539,10 +539,10 @@ public class DefaultSelectTranslatorIT {
 			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
-			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
-			String charEnd = env.getInstance(UnitDbAdapter.class).getIdentifiersEndQuote();
+			String charStart = env.unitDbAdapter().getIdentifiersStartQuote();
+			String charEnd = env.unitDbAdapter().getIdentifiersEndQuote();
 
-			String s = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+			String s = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 
 			assertTrue(s.startsWith("SELECT "));
 			int iFrom = s.indexOf(" FROM ");
@@ -585,10 +585,10 @@ public class DefaultSelectTranslatorIT {
 			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
-			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
-			String charEnd = env.getInstance(UnitDbAdapter.class).getIdentifiersEndQuote();
+			String charStart = env.unitDbAdapter().getIdentifiersStartQuote();
+			String charEnd = env.unitDbAdapter().getIdentifiersEndQuote();
 
-			String s = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+			String s = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 
 			assertTrue(s.startsWith("SELECT DISTINCT "), s);
 			int iFrom = s.indexOf(" FROM ");
@@ -662,10 +662,10 @@ public class DefaultSelectTranslatorIT {
 			DbEntity entity = env.context().getEntityResolver().getDbEntity("PAINTING");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
-			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
-			String charEnd = env.getInstance(UnitDbAdapter.class).getIdentifiersEndQuote();
+			String charStart = env.unitDbAdapter().getIdentifiersStartQuote();
+			String charEnd = env.unitDbAdapter().getIdentifiersEndQuote();
 
-			String s = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver()).getSql();
+			String s = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver()).getSql();
 
 			assertTrue(s.startsWith("SELECT "), s);
 			int iFrom = s.indexOf(" FROM ");
@@ -719,7 +719,7 @@ public class DefaultSelectTranslatorIT {
 	@Test
 	public void buildResultColumns1() throws Exception {
 		ObjectSelect<Painting> q = ObjectSelect.query(Painting.class);
-		SelectTranslator tr = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator tr = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 
 		tr.getSql();
 
@@ -749,7 +749,7 @@ public class DefaultSelectTranslatorIT {
 	@Test
 	public void buildResultColumns2() throws Exception {
 		ObjectSelect<Painting> q = ObjectSelect.query(Painting.class).prefetch(Painting.TO_ARTIST.joint());
-		SelectTranslator tr = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator tr = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 
 		tr.getSql();
 
@@ -785,7 +785,7 @@ public class DefaultSelectTranslatorIT {
 				));
 		query.select(env.context());
 
-		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
+		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.dataNode().getAdapter(),
 																		 env.context().getEntityResolver());
 		translator.translate();
 
@@ -802,7 +802,7 @@ public class DefaultSelectTranslatorIT {
 				));
 		query.select(env.context());
 
-		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
+		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.dataNode().getAdapter(),
 																		 env.context().getEntityResolver());
 		translator.translate();
 
@@ -819,7 +819,7 @@ public class DefaultSelectTranslatorIT {
 				));
 		query.select(env.context());
 
-		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
+		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.dataNode().getAdapter(),
 																		 env.context().getEntityResolver());
 		translator.translate();
 
@@ -835,7 +835,7 @@ public class DefaultSelectTranslatorIT {
 				));
 		query.select(env.context());
 
-		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
+		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.dataNode().getAdapter(),
 																		 env.context().getEntityResolver());
 		translator.translate();
 
@@ -858,7 +858,7 @@ public class DefaultSelectTranslatorIT {
 
 		// If the DbEntity qualifier is set on the WHERE condition then the OR expression will fail to find matches
 
-		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
+		SelectTranslator transl = new DefaultSelectTranslator(q, env.dataNode().getAdapter(), env.dataNode().getEntityResolver());
 		try {
 			String generatedSql = transl.getSql();
 			int whereNdx = generatedSql.indexOf(" WHERE ");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java
index c9dda19de..f779b576b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/VerticalInheritanceJoinOrderIT.java
@@ -64,8 +64,8 @@ public class VerticalInheritanceJoinOrderIT {
     }
 
     private String translateToSql(ObjectSelect<?> query) {
-        DbAdapter adapter = env.getInstance(DataNode.class).getAdapter();
-        EntityResolver resolver = env.getInstance(DataNode.class).getEntityResolver();
+        DbAdapter adapter = env.dataNode().getAdapter();
+        EntityResolver resolver = env.dataNode().getEntityResolver();
         return new DefaultSelectTranslator(query, adapter, resolver).getSql();
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
index e74d13137..2fbfa3dd0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
@@ -60,7 +60,7 @@ public class DateTimeTypesIT {
     @BeforeEach
     public void before() throws SQLException {
         context = env.context();
-        unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+        unitDbAdapter = env.unitDbAdapter();
         DBHelper dbHelper = env.dbHelper();
         dbHelper.deleteAll("LOCAL_DATE_TEST");
         dbHelper.deleteAll("LOCAL_DATETIME_TEST");
diff --git a/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java b/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java
index 5f107308e..2e3fcb59c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/configuration/runtime/JNDIDataSourceFactoryIT.java
@@ -20,7 +20,6 @@ package org.apache.cayenne.configuration.runtime;
 
 import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.unit.jdbc.TestDataSource;
-import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
 import org.junit.jupiter.api.extension.RegisterExtension;
@@ -52,7 +51,6 @@ public class JNDIDataSourceFactoryIT {
         try {
 
             JNDIDataSourceFactory factory = new JNDIDataSourceFactory();
-            env.getInstance(Injector.class).injectMembers(factory);
             assertSame(dataSource, factory.getDataSource(descriptor));
         }
         finally {
@@ -76,7 +74,6 @@ public class JNDIDataSourceFactoryIT {
         try {
 
             JNDIDataSourceFactory factory = new JNDIDataSourceFactory();
-            env.getInstance(Injector.class).injectMembers(factory);
             assertSame(dataSource, factory.getDataSource(descriptor));
         }
         finally {
@@ -94,8 +91,6 @@ public class JNDIDataSourceFactoryIT {
         JNDISetup.doSetup();
 
         JNDIDataSourceFactory factory = new JNDIDataSourceFactory();
-        env.getInstance(Injector.class).injectMembers(factory);
-
         assertThrows(NameNotFoundException.class, () -> factory.getDataSource(descriptor));
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
index 0ace5ef3c..e1284854e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java
@@ -40,8 +40,8 @@ public class BasePoolingDataSourceIT {
 
 	@BeforeEach
 	public void before() throws SQLException {
-        DataSourceDescriptor dataSourceInfo = env.getInstance(DataSourceDescriptor.class);
-        AdhocObjectFactory objectFactory = env.getInstance(AdhocObjectFactory.class);
+        DataSourceDescriptor dataSourceInfo = env.dataSourceDescriptor();
+        AdhocObjectFactory objectFactory = env.adhocObjectFactory();
 
 		Driver driver = objectFactory.newInstance(Driver.class, dataSourceInfo.getJdbcDriver());
 		DriverDataSource nonPooling = new DriverDataSource(driver, dataSourceInfo.getDataSourceUrl(),
diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
index 92c8a9b03..d2a7fc62a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java
@@ -47,9 +47,9 @@ public class PoolingDataSource_FailingValidationQueryIT {
 	@Test
 	public void constructor() {
 		assertThrows(CayenneRuntimeException.class, () -> {
-			Driver driver = env.getInstance(AdhocObjectFactory.class).newInstance(Driver.class, env.getInstance(DataSourceDescriptor.class).getJdbcDriver());
-			DriverDataSource nonPooling = new DriverDataSource(driver, env.getInstance(DataSourceDescriptor.class).getDataSourceUrl(),
-					env.getInstance(DataSourceDescriptor.class).getUserName(), env.getInstance(DataSourceDescriptor.class).getPassword());
+			Driver driver = env.adhocObjectFactory().newInstance(Driver.class, env.dataSourceDescriptor().getJdbcDriver());
+			DriverDataSource nonPooling = new DriverDataSource(driver, env.dataSourceDescriptor().getDataSourceUrl(),
+					env.dataSourceDescriptor().getUserName(), env.dataSourceDescriptor().getPassword());
 
 			PoolingDataSourceParameters poolParameters = createParameters();
 			UnmanagedPoolingDataSource ds = new UnmanagedPoolingDataSource(nonPooling, poolParameters);
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
index 64d54c49e..fe5bbc912 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java
@@ -42,28 +42,28 @@ public class AutoAdapterIT {
 
     @Test
     public void getAdapter_Proxy() {
-        AutoAdapter adapter = new AutoAdapter(() -> env.getInstance(DataNode.class).getAdapter(), NoopJdbcEventLogger.getInstance());
+        AutoAdapter adapter = new AutoAdapter(() -> env.dataNode().getAdapter(), NoopJdbcEventLogger.getInstance());
         DbAdapter detected = adapter.getAdapter();
-        assertSame(env.getInstance(DataNode.class).getAdapter(), detected);
+        assertSame(env.dataNode().getAdapter(), detected);
     }
 
     @Test
     public void createSQLTemplateAction() {
-        AutoAdapter autoAdapter = new AutoAdapter(() -> env.getInstance(DataNode.class).getAdapter(), NoopJdbcEventLogger.getInstance());
+        AutoAdapter autoAdapter = new AutoAdapter(() -> env.dataNode().getAdapter(), NoopJdbcEventLogger.getInstance());
 
         SQLTemplateAction action = (SQLTemplateAction) autoAdapter.getAction(new SQLTemplate(Artist.class,
-                "select * from artist"), env.getInstance(DataNode.class));
+                "select * from artist"), env.dataNode());
 
         // it is important for SQLTemplateAction to be used with unwrapped adapter,
         // as the adapter class name is used as a key to the correct SQL template.
         assertNotNull(action.getAdapter());
         assertFalse(action.getAdapter() instanceof AutoAdapter);
-        assertSame(env.getInstance(DataNode.class).getAdapter(), action.getAdapter());
+        assertSame(env.dataNode().getAdapter(), action.getAdapter());
     }
 
     @Test
     public void correctProxyMethods() {
-        DbAdapter adapter = env.getInstance(DataNode.class).getAdapter();
+        DbAdapter adapter = env.dataNode().getAdapter();
         AutoAdapter autoAdapter = new AutoAdapter(() -> adapter, NoopJdbcEventLogger.getInstance());
 
         ObjectSelect<Artist> select = ObjectSelect.query(Artist.class);
@@ -89,8 +89,8 @@ public class AutoAdapterIT {
         assertSame(adapter.getEjbqlTranslatorFactory(),
                 autoAdapter.getEjbqlTranslatorFactory());
         // returns a new instance for each call
-        assertSame(adapter.getSelectTranslator(select, env.getInstance(DataNode.class).getEntityResolver()).getClass(),
-                autoAdapter.getSelectTranslator(select, env.getInstance(DataNode.class).getEntityResolver()).getClass());
+        assertSame(adapter.getSelectTranslator(select, env.dataNode().getEntityResolver()).getClass(),
+                autoAdapter.getSelectTranslator(select, env.dataNode().getEntityResolver()).getClass());
 
         // reverse engineering related methods
         assertEquals(adapter.supportsCatalogsOnReverseEngineering(),
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
index 3532eff9c..bfa552efe 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
@@ -56,7 +56,7 @@ public class ConcurrentPkGeneratorIT {
 	@BeforeEach
 	public void prepareDerbyDb() {
 		runtime = env.runtime();
-		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+		unitDbAdapter = env.unitDbAdapter();
 		//use to fix random test failures on derby db
 		if(unitDbAdapter instanceof DerbyUnitDbAdapter) {
 			try(Connection connection = runtime.getDataDomain().getDataNode("qualified").getDataSource().getConnection()){
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java
index f3923488f..b665ffd8e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcAdapterIT.java
@@ -50,7 +50,7 @@ public class JdbcAdapterIT {
     }
 
     private void checkType(int type) throws java.lang.Exception {
-        JdbcAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        JdbcAdapter adapter = env.adhocObjectFactory().newInstance(
                 JdbcAdapter.class, 
                 JdbcAdapter.class.getName());
 
@@ -63,7 +63,7 @@ public class JdbcAdapterIT {
     @Test
     public void createTableQuoteSqlIdentifiers() {
 
-        if (env.getInstance(DbAdapter.class) instanceof MySQLAdapter) {
+        if (env.dbAdapter() instanceof MySQLAdapter) {
 
             DbEntity entity = new DbEntity();
             DbAttribute attr = new DbAttribute();
@@ -79,7 +79,7 @@ public class JdbcAdapterIT {
             entity.setDataMap(dm);
             entity.setName("name table");
 
-            MySQLAdapter adaptMySQL = (MySQLAdapter) env.getInstance(DbAdapter.class);
+            MySQLAdapter adaptMySQL = (MySQLAdapter) env.dbAdapter();
             String str = "CREATE TABLE `name table` (`name column` CHAR NULL) ENGINE=InnoDB";
             assertEquals(str, adaptMySQL.createTable(entity));
         }
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
index 822a9ea57..11e86e9b5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
@@ -46,9 +46,9 @@ public class JdbcPkGeneratorIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        adapter = env.getInstance(DbAdapter.class);
-        node = env.getInstance(DataNode.class);
-        schemaBuilder = env.getInstance(SchemaBuilder.class);
+        adapter = env.dbAdapter();
+        node = env.dataNode();
+        schemaBuilder = env.schemaBuilder();
         schemaBuilder.dropPKSupport();
     }
     
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java
index 16d299634..a071f9677 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/PkGeneratorIT.java
@@ -48,8 +48,8 @@ public class PkGeneratorIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        node = env.getInstance(DataNode.class);
+        accessStackAdapter = env.unitDbAdapter();
+        node = env.dataNode();
         pkGenerator = node.getAdapter().getPkGenerator();
         paintingEntity = node.getEntityResolver().getDbEntity("PAINTING");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
index c7c317080..e3a810a7a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
@@ -131,7 +131,7 @@ public class TypesMappingIT {
         // check counts
         // since more then 1 database type can map to a single JDBC type
         int len = 0;
-        try (Connection conn = env.getInstance(RuntimeCaseDataSourceFactory.class).getSharedDataSource().getConnection()) {
+        try (Connection conn = env.dataSourceFactory().getSharedDataSource().getConnection()) {
             DatabaseMetaData md = conn.getMetaData();
             try (ResultSet rs = md.getTypeInfo()) {
                 while (rs.next()) {
@@ -154,7 +154,7 @@ public class TypesMappingIT {
     }
 
     private TypesMapping createTypesMapping() throws Exception {
-        try (Connection conn = env.getInstance(RuntimeCaseDataSourceFactory.class).getSharedDataSource().getConnection()) {
+        try (Connection conn = env.dataSourceFactory().getSharedDataSource().getConnection()) {
             DatabaseMetaData md = conn.getMetaData();
             return new TypesMapping(md);
         }
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java
index 74beadf95..7ed7f8d12 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapterIT.java
@@ -39,7 +39,7 @@ public class HSQLDBAdapterIT {
 
     @Test
     public void createTableIgnoresDoublePrecision() {
-        HSQLDBAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        HSQLDBAdapter adapter = env.adhocObjectFactory().newInstance(
                 HSQLDBAdapter.class, 
                 HSQLDBAdapter.class.getName());
         DbEntity e = new DbEntity("Test");
@@ -58,7 +58,7 @@ public class HSQLDBAdapterIT {
 
     @Test
     public void createTableAddsCachedKeyword() {
-        HSQLDBAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        HSQLDBAdapter adapter = env.adhocObjectFactory().newInstance(
                 HSQLDBAdapter.class, 
                 HSQLDBAdapter.class.getName());
         DbEntity e = new DbEntity("Test");
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java
index ae253bdac..65002b220 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/mysql/MySQLAdapterIT.java
@@ -39,7 +39,7 @@ public class MySQLAdapterIT {
 
     @Test
     public void createTableAppendPKClause() {
-        MySQLAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        MySQLAdapter adapter = env.adhocObjectFactory().newInstance(
                 MySQLAdapter.class, 
                 MySQLAdapter.class.getName());
 
@@ -71,7 +71,7 @@ public class MySQLAdapterIT {
 
     @Test
     public void createTableAppendColumnWithTimeAndTimestamp() {
-        MySQLAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        MySQLAdapter adapter = env.adhocObjectFactory().newInstance(
                 MySQLAdapter.class,
                 MySQLAdapter.class.getName());
 
@@ -96,7 +96,7 @@ public class MySQLAdapterIT {
 
     @Test
     public void createTableAppendColumnWithTimeAndTimestampWihoutScale() {
-        MySQLAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        MySQLAdapter adapter = env.adhocObjectFactory().newInstance(
                 MySQLAdapter.class,
                 MySQLAdapter.class.getName());
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java
index ecbead0a1..95e48538b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/Oracle8AdapterIT.java
@@ -40,7 +40,7 @@ public class Oracle8AdapterIT {
     @Test
     public void timestampMapping() throws Exception {
         
-        Oracle8Adapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        Oracle8Adapter adapter = env.adhocObjectFactory().newInstance(
                 Oracle8Adapter.class, 
                 Oracle8Adapter.class.getName());
 
@@ -53,7 +53,7 @@ public class Oracle8AdapterIT {
     @Test
     public void findAdapterResource() throws Exception {
         
-        Oracle8Adapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        Oracle8Adapter adapter = env.adhocObjectFactory().newInstance(
                 Oracle8Adapter.class, 
                 Oracle8Adapter.class.getName());
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java
index 164d8cd2b..2a58bc05b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OracleAdapterIT.java
@@ -54,7 +54,7 @@ public class OracleAdapterIT {
     @Test
     public void timestampMapping() throws Exception {
         
-        OracleAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        OracleAdapter adapter = env.adhocObjectFactory().newInstance(
                 OracleAdapter.class, 
                 OracleAdapter.class.getName());
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java
index f346eb7ff..c562ac994 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/oracle/OraclePkGeneratorIT.java
@@ -43,8 +43,8 @@ public class OraclePkGeneratorIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        logger = env.getInstance(JdbcEventLogger.class);
-        objectFactory = env.getInstance(AdhocObjectFactory.class);
+        logger = env.jdbcEventLogger();
+        objectFactory = env.adhocObjectFactory();
         OracleAdapter adapter = objectFactory.newInstance(OracleAdapter.class, OracleAdapter.class.getName());
         pkGenerator = new OraclePkGenerator(adapter);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java
index 892fd028e..67c09bdc0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/postgres/PostgresAdapterIT.java
@@ -38,7 +38,7 @@ public class PostgresAdapterIT {
 
     @Test
     public void createTableWithFloatAttributeWithScale() {
-        PostgresAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        PostgresAdapter adapter = env.adhocObjectFactory().newInstance(
                 PostgresAdapter.class, 
                 PostgresAdapter.class.getName());
         DbEntity e = new DbEntity("Test");
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java
index 47cb09a9f..ed9d793a9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerAdapterIT.java
@@ -38,7 +38,7 @@ public class SQLServerAdapterIT {
 
     @Test
     public void createTableWithFloatAttributeWithScale() {
-        SQLServerAdapter adapter = env.getInstance(AdhocObjectFactory.class).newInstance(
+        SQLServerAdapter adapter = env.adhocObjectFactory().newInstance(
                 SQLServerAdapter.class, 
                 SQLServerAdapter.class.getName());
         DbEntity e = new DbEntity("Test");
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
index 120bcd7e3..830cf0761 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
@@ -42,15 +42,15 @@ public class SQLServerSnifferIT {
 	@Test
 	public void createAdapter() throws Exception {
 
-		SQLServerSniffer sniffer = new SQLServerSniffer(env.getInstance(AdhocObjectFactory.class));
+		SQLServerSniffer sniffer = new SQLServerSniffer(env.adhocObjectFactory());
 
 		DbAdapter adapter;
 
-		try (Connection c = env.getInstance(RuntimeCaseDataSourceFactory.class).getSharedDataSource().getConnection()) {
+		try (Connection c = env.dataSourceFactory().getSharedDataSource().getConnection()) {
 			adapter = sniffer.createAdapter(c.getMetaData());
 		}
 
-		if (env.getInstance(UnitDbAdapter.class) instanceof SQLServerUnitDbAdapter) {
+		if (env.unitDbAdapter() instanceof SQLServerUnitDbAdapter) {
 			assertNotNull(adapter);
 		} else {
 			assertNull(adapter);
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java
index 3151637ef..458e4e79e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionFactoryIT.java
@@ -96,7 +96,7 @@ public class ExpressionFactoryIT {
 
     @Test
     public void escapeCharacter() {
-        if (!env.getInstance(UnitDbAdapter.class).supportsEscapeInLike()) {
+        if (!env.unitDbAdapter().supportsEscapeInLike()) {
             return;
         }
 
@@ -118,7 +118,7 @@ public class ExpressionFactoryIT {
     @Test
     public void contains_Escape() {
 
-        if (!env.getInstance(UnitDbAdapter.class).supportsEscapeInLike()) {
+        if (!env.unitDbAdapter().supportsEscapeInLike()) {
             return;
         }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
index a9c111596..8ee470558 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ExpressionIT.java
@@ -125,7 +125,7 @@ public class ExpressionIT {
 		try {
             artists = ObjectSelect.query(Artist.class, Artist.ARTIST_NAME.lt((String) null)).select(env.context());
         } catch (CayenneRuntimeException ex) {
-		    if(env.getInstance(UnitDbAdapter.class).supportsNullComparison()) {
+		    if(env.unitDbAdapter().supportsNullComparison()) {
 		        throw ex;
             } else {
 		        return;
@@ -145,7 +145,7 @@ public class ExpressionIT {
         try {
             artists = ObjectSelect.query(Artist.class, Artist.ARTIST_NAME.in("Picasso", (String) null)).select(env.context());
         } catch (CayenneRuntimeException ex) {
-            if(env.getInstance(UnitDbAdapter.class).supportsNullComparison()) {
+            if(env.unitDbAdapter().supportsNullComparison()) {
                 throw ex;
             } else {
                 return;
@@ -194,7 +194,7 @@ public class ExpressionIT {
 	 */
 	@Test
 	public void selectWithScalarAsWhereCondition() {
-		if (env.getInstance(UnitDbAdapter.class).supportScalarAsExpression()){
+		if (env.unitDbAdapter().supportScalarAsExpression()){
 			return;
 		}
 		ObjectSelect<Artist> objectSelect = ObjectSelect.query(Artist.class).where(ExpressionFactory.wrapScalarValue("abc"));
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java
index 4a10cf444..089fa4d66 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExistsIT.java
@@ -46,7 +46,7 @@ public class ASTExistsIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java
index e918b2f46..878dc3c2a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTExtractIT.java
@@ -46,7 +46,7 @@ public class ASTExtractIT {
 
     @BeforeEach
     public void createDataSet() throws Exception {
-        unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+        unitDbAdapter = env.unitDbAdapter();
         Calendar cal = Calendar.getInstance();
         cal.set(Calendar.MILLISECOND, 0);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java
index cc500a6de..be50d78ae 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallDateIT.java
@@ -45,7 +45,7 @@ public class ASTFunctionCallDateIT {
 
     @BeforeEach
     public void createDataSet() throws Exception {
-        unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+        unitDbAdapter = env.unitDbAdapter();
         Calendar cal = Calendar.getInstance();
         cal.set(Calendar.MILLISECOND, 0);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java
index f31d5b9dd..f0108e467 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTFunctionCallStringIT.java
@@ -63,7 +63,7 @@ public class ASTFunctionCallStringIT {
         // TODO: This will fail for Oracle, so skip for now.
         //       It is necessary to provide connection with "fixedString=true" property somehow.
         //       Also see CAY-1470.
-        assumeFalse(env.getInstance(UnitDbAdapter.class) instanceof OracleUnitDbAdapter);
+        assumeFalse(env.unitDbAdapter() instanceof OracleUnitDbAdapter);
         Artist a1 = createArtist("name");
         Artist a2 = ObjectSelect.query(Artist.class)
                 .where(Artist.ARTIST_NAME.upper().eq("NAME")).selectOne(env.context());
@@ -75,7 +75,7 @@ public class ASTFunctionCallStringIT {
         // TODO: This will fail for Oracle, so skip for now.
         //       It is necessary to provide connection with "fixedString=true" property somehow.
         //       Also see CAY-1470.
-        assumeFalse(env.getInstance(UnitDbAdapter.class) instanceof OracleUnitDbAdapter);
+        assumeFalse(env.unitDbAdapter() instanceof OracleUnitDbAdapter);
         Artist a1 = createArtist("NAME");
         Artist a2 = ObjectSelect.query(Artist.class)
                 .where(Artist.ARTIST_NAME.lower().eq("name")).selectOne(env.context());
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java
index 8108b442c..bb8de0cb3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ASTNotExistsIT.java
@@ -47,7 +47,7 @@ public class ASTNotExistsIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java
index e834c811c..b1721cce0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverGenericStackIT.java
@@ -42,7 +42,7 @@ public class EntityResolverGenericStackIT {
 
     @BeforeEach
     public void setUp() {
-        resolver = env.getInstance(EntityResolver.class);
+        resolver = env.entityResolver();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverInheritanceIT.java
index 6dcc351eb..8430682f2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverInheritanceIT.java
@@ -35,7 +35,7 @@ public class EntityResolverInheritanceIT extends PeopleProjectCase {
 
     @BeforeEach
     public void setUp() {
-        resolver = env.getInstance(EntityResolver.class);
+        resolver = env.entityResolver();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
index 9d9c94711..ce2ae59b1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
@@ -74,7 +74,7 @@ public class ColumnSelectIT {
     public void createArtistsDataSet() throws Exception {
         context = env.context();
         runtime = env.runtime();
-        unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+        unitDbAdapter = env.unitDbAdapter();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
index a8d9126a9..0c120617b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
@@ -64,7 +64,7 @@ public class EJBQLQueryIT {
     public void setUp() throws Exception {
         context = env.context();
         runtime = env.runtime();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING", "PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE");
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java b/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java
index c27242675..c284935fd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionIT.java
@@ -40,7 +40,7 @@ public class FluentSelectPrefetchRouterActionIT {
 
     @Test
     public void paintings1() {
-        ObjEntity paintingEntity = env.getInstance(EntityResolver.class).getObjEntity(Painting.class);
+        ObjEntity paintingEntity = env.entityResolver().getObjEntity(Painting.class);
 
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class, Artist.ARTIST_NAME.eq("abc"))
                 .prefetch(Artist.PAINTING_ARRAY.disjoint());
@@ -48,7 +48,7 @@ public class FluentSelectPrefetchRouterActionIT {
         FluentSelectPrefetchRouterAction action = new FluentSelectPrefetchRouterAction();
 
         MockQueryRouter router = new MockQueryRouter();
-        action.route(query, router, env.getInstance(EntityResolver.class));
+        action.route(query, router, env.entityResolver());
         assertEquals(1, router.getQueryCount());
 
         PrefetchSelectQuery prefetch = (PrefetchSelectQuery) router.getQueries().get(0);
@@ -59,7 +59,7 @@ public class FluentSelectPrefetchRouterActionIT {
 
     @Test
     public void prefetchPaintings2() {
-        ObjEntity paintingEntity = env.getInstance(EntityResolver.class).getObjEntity(Painting.class);
+        ObjEntity paintingEntity = env.entityResolver().getObjEntity(Painting.class);
 
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .where(Artist.ARTIST_NAME.eq("abc"))
@@ -69,7 +69,7 @@ public class FluentSelectPrefetchRouterActionIT {
         FluentSelectPrefetchRouterAction action = new FluentSelectPrefetchRouterAction();
 
         MockQueryRouter router = new MockQueryRouter();
-        action.route(query, router, env.getInstance(EntityResolver.class));
+        action.route(query, router, env.entityResolver());
         assertEquals(1, router.getQueryCount());
 
         PrefetchSelectQuery prefetch = (PrefetchSelectQuery) router.getQueries().get(0);
@@ -80,14 +80,14 @@ public class FluentSelectPrefetchRouterActionIT {
 
     @Test
     public void galleries() {
-        ObjEntity galleryEntity = env.getInstance(EntityResolver.class).getObjEntity(Gallery.class);
+        ObjEntity galleryEntity = env.entityResolver().getObjEntity(Gallery.class);
 
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class, Artist.ARTIST_NAME.eq("abc"))
                 .prefetch(Artist.PAINTING_ARRAY.dot(Painting.TO_GALLERY).disjoint());
         FluentSelectPrefetchRouterAction action = new FluentSelectPrefetchRouterAction();
 
         MockQueryRouter router = new MockQueryRouter();
-        action.route(query, router, env.getInstance(EntityResolver.class));
+        action.route(query, router, env.entityResolver());
         assertEquals(1, router.getQueryCount());
 
         PrefetchSelectQuery prefetch = (PrefetchSelectQuery) router.getQueries().get(0);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionQualifiedEntityIT.java b/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionQualifiedEntityIT.java
index aeaa07ea9..69c7ab987 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionQualifiedEntityIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/FluentSelectPrefetchRouterActionQualifiedEntityIT.java
@@ -38,7 +38,7 @@ public class FluentSelectPrefetchRouterActionQualifiedEntityIT extends PeoplePro
 
     @BeforeEach
     public void setUp() {
-        resolver = env.getInstance(EntityResolver.class);
+        resolver = env.entityResolver();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
index c376d3db1..5b3521b93 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
@@ -109,11 +109,11 @@ public class MappedQueryIT {
 
     @Test
     public void procedureQuery() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
-        if (!env.getInstance(UnitDbAdapter.class).canMakeObjectsOutOfProcedures()) {
+        if (!env.unitDbAdapter().canMakeObjectsOutOfProcedures()) {
             return;
         }
 
@@ -177,7 +177,7 @@ public class MappedQueryIT {
         // e.g.
         // http://stackoverflow.com/questions/16921942/porting-apache-cayenne-from-oracle-to-postgresql
 
-        BaseTransaction t = new ExternalTransaction(env.getInstance(JdbcEventLogger.class));
+        BaseTransaction t = new ExternalTransaction(env.jdbcEventLogger());
         BaseTransaction.bindThreadTransaction(t);
 
         try {
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
index f7bafb3c6..264c4a55c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
@@ -59,7 +59,7 @@ public class ObjectSelect_AggregateIT {
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.context();
-        dbAdapter = env.getInstance(UnitDbAdapter.class);
+        dbAdapter = env.unitDbAdapter();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java
index 7f590d894..97517118e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_CacheKeyIT.java
@@ -39,11 +39,11 @@ public class ObjectSelect_CacheKeyIT {
 
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class);
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.NO_CACHE, md1.getCacheStrategy());
         assertNull(md1.getCacheKey());
 
-        QueryMetadata md2 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md2 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.NO_CACHE, md2.getCacheStrategy());
         assertNull(md2.getCacheKey());
     }
@@ -54,7 +54,7 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .localCache();
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.LOCAL_CACHE, md1.getCacheStrategy());
         assertNotNull(md1.getCacheKey());
     }
@@ -65,7 +65,7 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> q1 = ObjectSelect.query(Artist.class)
                 .localCache();
 
-        QueryMetadata md1 = q1.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = q1.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.LOCAL_CACHE, md1.getCacheStrategy());
         assertNotNull(md1.getCacheKey());
         assertNull(md1.getCacheGroup());
@@ -73,7 +73,7 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> q2 = ObjectSelect.query(Artist.class);
         q2.useLocalCache("g1");
 
-        QueryMetadata md2 = q2.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md2 = q2.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.LOCAL_CACHE, md2.getCacheStrategy());
         assertNotNull(md2.getCacheKey());
         assertEquals("g1", md2.getCacheGroup());
@@ -85,7 +85,7 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .sharedCache();
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.SHARED_CACHE, md1.getCacheStrategy());
         assertNotNull(md1.getCacheKey());
     }
@@ -96,7 +96,7 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> q1 = ObjectSelect.query(Artist.class)
                 .sharedCache();
 
-        QueryMetadata md1 = q1.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = q1.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.SHARED_CACHE, md1.getCacheStrategy());
         assertNotNull(md1.getCacheKey());
         assertNull(md1.getCacheGroup());
@@ -104,7 +104,7 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> q2 = ObjectSelect.query(Artist.class)
                 .sharedCache("g1");
 
-        QueryMetadata md2 = q2.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md2 = q2.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.SHARED_CACHE, md2.getCacheStrategy());
         assertNotNull(md2.getCacheKey());
         assertEquals("g1", md2.getCacheGroup());
@@ -116,7 +116,7 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .sharedCache();
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.SHARED_CACHE, md1.getCacheStrategy());
         assertNotEquals("XYZ", md1.getCacheKey());
     }
@@ -133,10 +133,10 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Painting> q3 = ObjectSelect.query(Painting.class)
                 .localCache();
 
-        assertNotNull(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
-        assertEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q2.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotNull(q1.getMetaData(env.entityResolver()).getCacheKey());
+        assertEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q2.getMetaData(env.entityResolver()).getCacheKey());
 
-        assertNotEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q3.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q3.getMetaData(env.entityResolver()).getCacheKey());
     }
 
     @Test
@@ -154,10 +154,10 @@ public class ObjectSelect_CacheKeyIT {
                 .localCache()
                 .where(ExpressionFactory.matchExp("a", "c"));
 
-        assertNotNull(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
-        assertEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q2.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotNull(q1.getMetaData(env.entityResolver()).getCacheKey());
+        assertEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q2.getMetaData(env.entityResolver()).getCacheKey());
 
-        assertNotEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q3.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q3.getMetaData(env.entityResolver()).getCacheKey());
     }
 
     @Test
@@ -178,11 +178,11 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> q4 = ObjectSelect.query(Artist.class)
                 .localCache();
 
-        assertNotNull(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
-        assertEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q2.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotNull(q1.getMetaData(env.entityResolver()).getCacheKey());
+        assertEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q2.getMetaData(env.entityResolver()).getCacheKey());
 
-        assertNotEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q3.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
-        assertNotEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q4.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q3.getMetaData(env.entityResolver()).getCacheKey());
+        assertNotEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q4.getMetaData(env.entityResolver()).getCacheKey());
     }
 
     @Test
@@ -203,10 +203,10 @@ public class ObjectSelect_CacheKeyIT {
         ObjectSelect<Artist> q4 = ObjectSelect.query(Artist.class)
                 .localCache();
 
-        assertNotNull(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
-        assertEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q2.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotNull(q1.getMetaData(env.entityResolver()).getCacheKey());
+        assertEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q2.getMetaData(env.entityResolver()).getCacheKey());
 
-        assertNotEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q3.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
-        assertNotEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q4.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey());
+        assertNotEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q3.getMetaData(env.entityResolver()).getCacheKey());
+        assertNotEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q4.getMetaData(env.entityResolver()).getCacheKey());
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
index b69e08f1c..d8da64481 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
@@ -52,7 +52,7 @@ public class ObjectSelect_PrimitiveColumnsIT {
     @BeforeEach
     public void createTestRecords() throws Exception {
         context = env.context();
-        unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+        unitDbAdapter = env.unitDbAdapter();
         tPrimitives = env.table("PRIMITIVES_TEST", "ID", "BOOLEAN_COLUMN", "INT_COLUMN");
         for (int i = 1; i <= 20; i++) {
             tPrimitives.insert(i, (i % 2 == 0), i * 10);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
index 6f73b7940..725e70f44 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
@@ -49,7 +49,7 @@ public class ObjectSelect_RunIT {
 
 	@BeforeEach
 	public void createArtistsDataSet() throws Exception {
-		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+		unitDbAdapter = env.unitDbAdapter();
 		context = env.context();
 		TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
index 7529b917d..f5552f0fd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
@@ -52,7 +52,7 @@ public class ProcedureCallIT {
 
     @Test
     public void update() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -72,7 +72,7 @@ public class ProcedureCallIT {
 
     @Test
     public void updateNoParam() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -92,7 +92,7 @@ public class ProcedureCallIT {
 
     @Test
     public void select() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -119,7 +119,7 @@ public class ProcedureCallIT {
 
     @Test
     public void fetchLimit() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -140,7 +140,7 @@ public class ProcedureCallIT {
 
     @Test
     public void fetchOffset() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -161,7 +161,7 @@ public class ProcedureCallIT {
 
     @Test
     public void columnNameCapitalization() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -189,7 +189,7 @@ public class ProcedureCallIT {
 
     @Test
     public void outParams() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -204,11 +204,11 @@ public class ProcedureCallIT {
 
     @Test
     public void selectPersistentObject() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
-        if (!env.getInstance(UnitDbAdapter.class).canMakeObjectsOutOfProcedures()) {
+        if (!env.unitDbAdapter().canMakeObjectsOutOfProcedures()) {
             return;
         }
 
@@ -232,7 +232,7 @@ public class ProcedureCallIT {
 
     @Test
     public void selectWithRowDescriptor() throws Exception {
-        if (!env.getInstance(UnitDbAdapter.class).supportsStoredProcedures()) {
+        if (!env.unitDbAdapter().supportsStoredProcedures()) {
             return;
         }
 
@@ -278,7 +278,7 @@ public class ProcedureCallIT {
         // e.g.
         // http://stackoverflow.com/questions/16921942/porting-apache-cayenne-from-oracle-to-postgresql
 
-        BaseTransaction t = new ExternalTransaction(env.getInstance(JdbcEventLogger.class));
+        BaseTransaction t = new ExternalTransaction(env.jdbcEventLogger());
         BaseTransaction.bindThreadTransaction(t);
 
         try {
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
index 67bb0118e..c859e387c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
@@ -54,7 +54,7 @@ public class QueryWithInheritancePrefetchIT {
     @BeforeEach
     public void createTestData() throws Exception {
         runtime = env.runtime();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         TableHelper tRoot = env.table("iwe_root", "id", "type", "name", "enum");
 
         tRoot.insert(1, 0, "root1", null);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
index d37231436..f6def0be8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
@@ -54,7 +54,7 @@ public class SQLExecIT {
 
     @Test
     public void returnGeneratedKeys() {
-        if(env.getInstance(UnitDbAdapter.class).supportsGeneratedKeys()) {
+        if(env.unitDbAdapter().supportsGeneratedKeys()) {
             QueryResult response = SQLExec.query("testmap", "INSERT INTO GENERATED_COLUMN (NAME) VALUES ('Surikov')")
                     .returnGeneratedKeys(true)
                     .execute(env.context());
@@ -88,7 +88,7 @@ public class SQLExecIT {
         assertEquals(1, result.firstList().size());
 
         DataRow row = (DataRow)result.firstList().get(0);
-        if(env.getInstance(UnitDbAdapter.class).isLowerCaseNames()) {
+        if(env.unitDbAdapter().isLowerCaseNames()) {
             assertTrue(row.containsKey("artist_id"));
             assertEquals(1L, ((Number)row.get("artist_id")).longValue());
             assertEquals("a", row.get("artist_name"));
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java
index 6ab649af6..1bd4e129b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateCacheKeyIT.java
@@ -40,11 +40,11 @@ public class SQLTemplateCacheKeyIT {
 
         SQLTemplate query = new SQLTemplate(Artist.class, "SELECT ME");
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.NO_CACHE, md1.getCacheStrategy());
         assertNull(md1.getCacheKey());
 
-        QueryMetadata md2 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md2 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.NO_CACHE, md2.getCacheStrategy());
         assertNull(md2.getCacheKey());
     }
@@ -56,7 +56,7 @@ public class SQLTemplateCacheKeyIT {
 
         query.setCacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.LOCAL_CACHE, md1.getCacheStrategy());
         assertNotNull(md1.getCacheKey());
     }
@@ -68,7 +68,7 @@ public class SQLTemplateCacheKeyIT {
 
         query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.SHARED_CACHE, md1.getCacheStrategy());
         assertNotNull(md1.getCacheKey());
     }
@@ -80,7 +80,7 @@ public class SQLTemplateCacheKeyIT {
 
         query.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
 
-        QueryMetadata md1 = query.getMetaData(env.getInstance(EntityResolver.class));
+        QueryMetadata md1 = query.getMetaData(env.entityResolver());
         assertEquals(QueryCacheStrategy.SHARED_CACHE, md1.getCacheStrategy());
         assertFalse("XYZ".equals(md1.getCacheKey()));
     }
@@ -97,8 +97,8 @@ public class SQLTemplateCacheKeyIT {
         q2.setFetchLimit(10);
         q2.setCacheStrategy(QueryCacheStrategy.SHARED_CACHE);
 
-        assertEquals(q1.getMetaData(env.getInstance(EntityResolver.class)).getCacheKey(), q2
-                .getMetaData(env.getInstance(EntityResolver.class))
+        assertEquals(q1.getMetaData(env.entityResolver()).getCacheKey(), q2
+                .getMetaData(env.entityResolver())
                 .getCacheKey());
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
index d3a0b1157..47b922b1c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
@@ -62,8 +62,8 @@ public class SQLTemplateIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+		queryInterceptor = env.dataChannelInterceptor();
+		unitDbAdapter = env.unitDbAdapter();
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
 		tPainting = env.table("PAINTING", "PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE", "ESTIMATED_PRICE");
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java
index a3dc234d5..21fa259bf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectById_RunIT.java
@@ -54,8 +54,8 @@ public class SelectById_RunIT {
 
 	@BeforeEach
 	public void setUp() throws Exception {
-		interceptor = env.getInstance(DataChannelInterceptor.class);
-		resolver = env.getInstance(EntityResolver.class);
+		interceptor = env.dataChannelInterceptor();
+		resolver = env.entityResolver();
 		tArtist = env.table("ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME");
 		tPainting = env.table("PAINTING").setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE")
 				.setColumnTypes(Types.INTEGER, Types.BIGINT, Types.VARCHAR);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
index 33f84cc0e..56f82679c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
@@ -52,7 +52,7 @@ public class SelectQueryClobIT {
      */
     @Test
     public void selectLikeIgnoreCaseClob() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             createClobDataSet();
             List<?> objects = ObjectSelect.query(ClobTestEntity.class)
                     .where(ClobTestEntity.CLOB_COL.likeIgnoreCase("clob%"))
@@ -63,7 +63,7 @@ public class SelectQueryClobIT {
 
     @Test
     public void selectFetchLimit_Offset_DistinctClob() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
+        if (env.unitDbAdapter().supportsLobs()) {
             createClobDataSet();
 
             // see CAY-1539... CLOB column causes suppression of DISTINCT in
@@ -80,7 +80,7 @@ public class SelectQueryClobIT {
 
     @Test
     public void selectEqualsClob() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobComparisons()) {
+        if (env.unitDbAdapter().supportsLobComparisons()) {
             createClobDataSet();
             List<?> objects = ObjectSelect.query(ClobTestEntity.class)
                     .where(ClobTestEntity.CLOB_COL.eq("clob1"))
@@ -91,7 +91,7 @@ public class SelectQueryClobIT {
 
     @Test
     public void selectNotEqualsClob() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobComparisons()) {
+        if (env.unitDbAdapter().supportsLobComparisons()) {
             createClobDataSet();
             List<?> objects = ObjectSelect.query(ClobTestEntity.class)
                     .where(ClobTestEntity.CLOB_COL.ne("clob1"))
@@ -102,7 +102,7 @@ public class SelectQueryClobIT {
 
     @Test
     public void selectNotEqualsEmptyClob() throws Exception {
-        if (env.getInstance(UnitDbAdapter.class).supportsLobComparisons()) {
+        if (env.unitDbAdapter().supportsLobComparisons()) {
             createClobDataSet();
             List<?> objects = ObjectSelect.query(ClobTestEntity.class)
                     .where(ClobTestEntity.CLOB_COL.ne(""))
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
index 03e1f4dba..14483028a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
@@ -59,7 +59,7 @@ public class SelectQueryReturnTypesIT {
     @Test
     public void selectBitwiseNot() throws Exception {
 
-        if (!env.getInstance(UnitDbAdapter.class).supportsBitwiseOps()) {
+        if (!env.unitDbAdapter().supportsBitwiseOps()) {
             return;
         }
 
@@ -79,7 +79,7 @@ public class SelectQueryReturnTypesIT {
     @Test
     public void selectBitwiseOr() throws Exception {
 
-        if (!env.getInstance(UnitDbAdapter.class).supportsBitwiseOps()) {
+        if (!env.unitDbAdapter().supportsBitwiseOps()) {
             return;
         }
 
@@ -100,7 +100,7 @@ public class SelectQueryReturnTypesIT {
     @Test
     public void selectBitwiseAnd() throws Exception {
 
-        if (!env.getInstance(UnitDbAdapter.class).supportsBitwiseOps()) {
+        if (!env.unitDbAdapter().supportsBitwiseOps()) {
             return;
         }
 
@@ -121,7 +121,7 @@ public class SelectQueryReturnTypesIT {
     @Test
     public void selectBitwiseXor() throws Exception {
 
-        if (!env.getInstance(UnitDbAdapter.class).supportsBitwiseOps()) {
+        if (!env.unitDbAdapter().supportsBitwiseOps()) {
             return;
         }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java
index cf379ce65..7082c60e0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactoryIT.java
@@ -47,11 +47,11 @@ public class PersistentObjectDescriptorFactoryIT {
     public void visitDeclaredProperties_IterationOrder() {
 
         PersistentObjectDescriptorFactory factory = new PersistentObjectDescriptorFactory(
-                env.getInstance(EntityResolver.class).getClassDescriptorMap(),
+                env.entityResolver().getClassDescriptorMap(),
                 new SingletonFaultFactory(),
                 new DefaultValueComparisonStrategyFactory(mock(ValueObjectTypeRegistry.class)));
 
-        for (ObjEntity e : env.getInstance(EntityResolver.class).getObjEntities()) {
+        for (ObjEntity e : env.entityResolver().getObjEntities()) {
             ClassDescriptor descriptor = factory.getDescriptor(e.getName());
 
             final PropertyDescriptor[] lastProcessed = new PropertyDescriptor[1];
@@ -86,11 +86,11 @@ public class PersistentObjectDescriptorFactoryIT {
     public void visitProperties_IterationOrder() {
 
         PersistentObjectDescriptorFactory factory = new PersistentObjectDescriptorFactory(
-                env.getInstance(EntityResolver.class).getClassDescriptorMap(),
+                env.entityResolver().getClassDescriptorMap(),
                 new SingletonFaultFactory(),
                 new DefaultValueComparisonStrategyFactory(mock(ValueObjectTypeRegistry.class)));
 
-        for (ObjEntity e : env.getInstance(EntityResolver.class).getObjEntities()) {
+        for (ObjEntity e : env.entityResolver().getObjEntities()) {
             ClassDescriptor descriptor = factory.getDescriptor(e.getName());
 
             final PropertyDescriptor[] lastProcessed = new PropertyDescriptor[1];
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java
index 4c0b2a754..a962fa81c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_InheritanceMapsIT.java
@@ -44,11 +44,11 @@ public class PersistentObjectDescriptorFactory_InheritanceMapsIT {
     public void visitProperties_IterationOrder() {
 
         PersistentObjectDescriptorFactory factory = new PersistentObjectDescriptorFactory(
-                env.getInstance(EntityResolver.class).getClassDescriptorMap(),
+                env.entityResolver().getClassDescriptorMap(),
                 new SingletonFaultFactory(),
                 new DefaultValueComparisonStrategyFactory(mock(ValueObjectTypeRegistry.class)));
 
-        for (ObjEntity e : env.getInstance(EntityResolver.class).getObjEntities()) {
+        for (ObjEntity e : env.entityResolver().getObjEntities()) {
             ClassDescriptor descriptor = factory.getDescriptor(e.getName());
 
             final PropertyDescriptor[] lastProcessed = new PropertyDescriptor[1];
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java
index e1278b160..4e244640c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/generic/PersistentObjectDescriptorFactory_VerticalInheritanceIT.java
@@ -40,7 +40,7 @@ public class PersistentObjectDescriptorFactory_VerticalInheritanceIT {
     public void visitProperties_IterationOrder() {
 
         PersistentObjectDescriptorFactory factory = new PersistentObjectDescriptorFactory(
-                env.getInstance(EntityResolver.class).getClassDescriptorMap(),
+                env.entityResolver().getClassDescriptorMap(),
                 new SingletonFaultFactory(),
                 new DefaultValueComparisonStrategyFactory(mock(ValueObjectTypeRegistry.class))
         );
diff --git a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
index 9c98b842d..7ee02b762 100644
--- a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
@@ -66,7 +66,7 @@ public class CayenneRuntimeBuilderIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		runtime = env.runtime();
-		dsi = env.getInstance(DataSourceDescriptor.class);
+		dsi = env.dataSourceDescriptor();
 		TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 		tArtist.insert(33001, "AA1");
 		tArtist.insert(33002, "AA2");
diff --git a/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java b/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
index 88fb6dc1f..cb604710e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/template/directive/BindDirectiveIT.java
@@ -217,7 +217,7 @@ public class BindDirectiveIT {
 		SQLTemplate template = new SQLTemplate(Object.class, templateString);
 		template.setParams(parameters);
 		MockOperationObserver observer = new MockOperationObserver();
-		env.getInstance(DataNode.class).performQueries(Collections.singletonList(template), observer);
+		env.dataNode().performQueries(Collections.singletonList(template), observer);
 
 		return ObjectSelect.dataRowQuery(Artist.class).selectOne(env.context());
 	}
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
index 762beebd8..ca9aee0e0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
@@ -65,7 +65,7 @@ public class TransactionCustomConnectionIT {
     public void initTransactionManager() {
         context = env.context();
         runtime = env.runtime();
-        jdbcEventLogger = env.getInstance(JdbcEventLogger.class);
+        jdbcEventLogger = env.jdbcEventLogger();
         // no binding in test container, get it from runtime
         manager = runtime.getInjector().getInstance(TransactionManager.class);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
index f19126748..e65269745 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
@@ -58,7 +58,7 @@ public class TransactionIsolationIT {
     public void initTransactionManager() {
         context = env.context();
         runtime = env.runtime();
-        unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+        unitDbAdapter = env.unitDbAdapter();
         // no binding in test container, get it from runtime
         manager = runtime.getInjector().getInstance(TransactionManager.class);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
index 8e2a98c16..18bf5d4ba 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
@@ -57,7 +57,7 @@ public class TransactionPropagationRollbackIT {
     public void initTransactionManager() {
         context = env.context();
         runtime = env.runtime();
-        unitDbAdapter = env.getInstance(UnitDbAdapter.class);
+        unitDbAdapter = env.unitDbAdapter();
         // no binding in test container, get it from runtime
         manager = runtime.getInjector().getInstance(TransactionManager.class);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
index 86c3b2b73..3911a27ce 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
@@ -38,7 +38,7 @@ public class TransactionThreadIT {
     @Test
     public void threadConnectionReuseOnSelect() throws Exception {
 
-        Transaction t = new CayenneTransaction(env.getInstance(JdbcEventLogger.class));
+        Transaction t = new CayenneTransaction(env.jdbcEventLogger());
         BaseTransaction.bindThreadTransaction(t);
 
         try {
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java
index f39d01a48..6f0a3627d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/UserTransactionIT.java
@@ -45,7 +45,7 @@ public class UserTransactionIT {
         Artist a = env.context().newObject(Artist.class);
         a.setArtistName("AAA");
 
-        TxWrapper t = new TxWrapper(new CayenneTransaction(env.getInstance(JdbcEventLogger.class)));
+        TxWrapper t = new TxWrapper(new CayenneTransaction(env.jdbcEventLogger()));
         BaseTransaction.bindThreadTransaction(t);
 
         try {
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
index 5f566329b..db2efe96e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
@@ -19,16 +19,26 @@
 package org.apache.cayenne.unit.di.runtime;
 
 import org.apache.cayenne.access.DataContext;
+import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.configuration.runtime.CoreModule;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.DIBootstrap;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.spi.DefaultScope;
+import org.apache.cayenne.log.JdbcEventLogger;
+import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
+import org.apache.cayenne.unit.UnitDbAdapter;
+import org.apache.cayenne.unit.di.DataChannelInterceptor;
+import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
@@ -75,8 +85,8 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
      * Disables the automatic {@code DBCleaner.clean()} call in {@link #beforeEach}.
      * Use this when the test (or a base class) needs to perform schema-specific
      * setup (e.g. break circular FKs) before cleaning. The caller is then
-     * responsible for invoking {@code env.getInstance(DBCleaner.class).clean()}
-     * from its own {@code @BeforeEach}.
+     * responsible for invoking {@code env.dbCleaner().clean()} from its own
+     * {@code @BeforeEach}.
      */
     public CayenneTestsEnv withoutAutoClean() {
         return new CayenneTestsEnv(project, extraModules, false, weakReferenceStrategy);
@@ -109,11 +119,11 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
         dbHelper = INJECTOR.getInstance(DBHelper.class);
 
         if (autoClean) {
-            DBCleaner dbCleaner = INJECTOR.getInstance(DBCleaner.class);
+            DBCleaner cleaner = dbCleaner();
             try {
-                dbCleaner.clean();
+                cleaner.clean();
             } catch (Exception ex) {
-                dbCleaner.clean();
+                cleaner.clean();
             }
         }
     }
@@ -142,11 +152,56 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
         return runtime;
     }
 
-    /**
-     * Access to less-common injectable types (DataChannelInterceptor, UnitDbAdapter, etc.).
-     */
-    public <T> T getInstance(Class<T> type) {
-        return INJECTOR.getInstance(type);
+    public UnitDbAdapter unitDbAdapter() {
+        return INJECTOR.getInstance(UnitDbAdapter.class);
+    }
+
+    public DbAdapter dbAdapter() {
+        return INJECTOR.getInstance(DbAdapter.class);
+    }
+
+    public JdbcAdapter jdbcAdapter() {
+        return INJECTOR.getInstance(JdbcAdapter.class);
+    }
+
+    public EntityResolver entityResolver() {
+        return INJECTOR.getInstance(EntityResolver.class);
+    }
+
+    public DataNode dataNode() {
+        return INJECTOR.getInstance(DataNode.class);
+    }
+
+    public DataChannelInterceptor dataChannelInterceptor() {
+        return INJECTOR.getInstance(DataChannelInterceptor.class);
+    }
+
+    public AdhocObjectFactory adhocObjectFactory() {
+        return INJECTOR.getInstance(AdhocObjectFactory.class);
+    }
+
+    public JdbcEventLogger jdbcEventLogger() {
+        return INJECTOR.getInstance(JdbcEventLogger.class);
+    }
+
+    public RuntimeCaseDataSourceFactory dataSourceFactory() {
+        return INJECTOR.getInstance(RuntimeCaseDataSourceFactory.class);
+    }
+
+    public DBCleaner dbCleaner() {
+        return INJECTOR.getInstance(DBCleaner.class);
+    }
+
+    public DataSourceDescriptor dataSourceDescriptor() {
+        return INJECTOR.getInstance(DataSourceDescriptor.class);
+    }
+
+    public SQLTemplateCustomizer sqlTemplateCustomizer() {
+        return INJECTOR.getInstance(SQLTemplateCustomizer.class);
+    }
+
+    public SchemaBuilder schemaBuilder() {
+        return INJECTOR.getInstance(SchemaBuilder.class);
     }
 
     public static class WeakReferenceStrategyModule implements Module {
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/PeopleProjectCase.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/PeopleProjectCase.java
index 888d03c31..02d55faa7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/PeopleProjectCase.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/PeopleProjectCase.java
@@ -39,6 +39,6 @@ public class PeopleProjectCase {
 		// PostgreSQL's strict FK enforcement aborts the cleanup
 		dbHelper = env.dbHelper();
 		dbHelper.update("PERSON").set("DEPARTMENT_ID", null, Types.INTEGER).execute();
-		env.getInstance(DBCleaner.class).clean();
+		env.dbCleaner().clean();
 	}
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
index 7753fdcbf..9b7ada418 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
@@ -52,7 +52,7 @@ public class CAY_115IT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        accessStackAdapter = env.getInstance(UnitDbAdapter.class);
+        accessStackAdapter = env.unitDbAdapter();
         tClobMaster = env.table("CLOB_MASTER", "CLOB_MASTER_ID", "CLOB_COLUMN", "NAME");
         
         tClobDetail = env.table("CLOB_DETAIL", "CLOB_DETAIL_ID", "CLOB_MASTER_ID", "NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
index 7f5eec7f1..ff7c1a767 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
@@ -45,7 +45,7 @@ public class DeepMergeOperationIT {
 
     @BeforeEach
     public void setUp() {
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         context = env.context();
         context1 = (DataContext) env.runtime().newContext();
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java
index 2fffbc8a9..f18044bfb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java
@@ -44,7 +44,7 @@ public class DeepMergeOperationInheritanceIT extends PeopleProjectCase {
     public void setUp() {
         context = env.context();
         context1 = (DataContext) env.runtime().newContext();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java b/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
index ea9b83551..d7a00c835 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
@@ -56,7 +56,7 @@ public class ShallowMergeOperationIT {
     public void setUp() throws Exception {
         runtime = env.runtime();
         context = env.context();
-        queryInterceptor = env.getInstance(DataChannelInterceptor.class);
+        queryInterceptor = env.dataChannelInterceptor();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
index 6fd508453..9733c35f6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
@@ -652,7 +652,7 @@ public class JsonTypeIT {
 
     private void testJson(String jsonString) {
         testJsonVarchar(jsonString);
-        if (env.getInstance(UnitDbAdapter.class).supportsJsonType()) {
+        if (env.unitDbAdapter().supportsJsonType()) {
             testJsonOther(jsonString);
         }
     }


(cayenne) 02/05: Unit tests cleanup - no need to make a distinction between ObjectContext and DataContext in the test Env

Posted by aa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 81d8dc5c651d60f5829ba2fef62a888d139836d0
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Wed May 13 18:26:26 2026 -0400

    Unit tests cleanup - no need to make a distinction between ObjectContext and DataContext in the test Env
---
 .../java/org/apache/cayenne/CDOOneToManyFKIT.java  |  16 +-
 .../java/org/apache/cayenne/CDOOneToOneFKIT.java   |   2 +-
 .../test/java/org/apache/cayenne/Cay2412IT.java    |   2 +-
 .../CayennePersistentObjectFlattenedRelIT.java     |  22 +-
 .../CayennePersistentObjectInContextIT.java        |   2 +-
 .../org/apache/cayenne/CompoundPkChangeIT.java     |  28 +-
 .../cayenne/DataContextMaxIdQualifierIT.java       |   2 +-
 .../apache/cayenne/FlattenedRelationshipsIT.java   |   2 +-
 .../java/org/apache/cayenne/GenericMappingIT.java  |  28 +-
 .../apache/cayenne/HybridPersistentObjectIT.java   |  36 +--
 .../java/org/apache/cayenne/PregeneratedPKIT.java  |   2 +-
 .../java/org/apache/cayenne/access/CAY2723IT.java  |   2 +-
 .../java/org/apache/cayenne/access/Cay2032IT.java  |   6 +-
 .../java/org/apache/cayenne/access/Cay2666IT.java  |   6 +-
 .../cayenne/access/DataContextArrayTypeIT.java     |   2 +-
 .../cayenne/access/DataContextBinaryPKIT.java      |   4 +-
 .../apache/cayenne/access/DataContextBlobIT.java   |   2 +-
 .../cayenne/access/DataContextCallbacksIT.java     |   6 +-
 .../apache/cayenne/access/DataContextCharPKIT.java |   6 +-
 .../cayenne/access/DataContextCharTypeIT.java      |   2 +-
 .../apache/cayenne/access/DataContextClobIT.java   |   2 +-
 .../apache/cayenne/access/DataContextCommitIT.java |   6 +-
 .../cayenne/access/DataContextCompoundRelIT.java   |   2 +-
 .../cayenne/access/DataContextCrossDBIT.java       |   2 +-
 .../access/DataContextDataChannelEventsIT.java     |   2 +-
 .../cayenne/access/DataContextDelegateIT.java      |   2 +-
 .../access/DataContextDelegateSharedCacheIT.java   |   2 +-
 .../cayenne/access/DataContextDeleteRulesIT.java   |   2 +-
 .../access/DataContextDisjointByIdPrefetchIT.java  |   2 +-
 .../DataContextDisjointByIdPrefetch_ExtrasIT.java  |   2 +-
 ...tyWithMeaningfulPKAndCustomDbRowOpSorterIT.java |  38 +--
 .../DataContextEntityWithMeaningfulPKIT.java       |   2 +-
 .../apache/cayenne/access/DataContextExtrasIT.java |   2 +-
 .../access/DataContextFlattenedAttributesIT.java   |   2 +-
 .../org/apache/cayenne/access/DataContextIT.java   |   2 +-
 .../cayenne/access/DataContextIteratedQueryIT.java |   2 +-
 .../cayenne/access/DataContextLocalObjectIT.java   |   2 +-
 .../cayenne/access/DataContextObjectIdQueryIT.java |  24 +-
 .../DataContextObjectIdQuery_PolymorphicIT.java    |   2 +-
 .../access/DataContextObjectTrackingIT.java        |   2 +-
 .../cayenne/access/DataContextOrderingIT.java      |  34 +--
 .../cayenne/access/DataContextOuterJoinsIT.java    | 243 +++++++++--------
 .../access/DataContextPaginatedQueryIT.java        |   2 +-
 .../access/DataContextPerformQueryAPIIT.java       |   2 +-
 .../cayenne/access/DataContextPrefetchIT.java      |   2 +-
 .../access/DataContextPrefetchMultistepIT.java     |   2 +-
 .../DataContextPrefetchQualifierOverlapIT.java     |   6 +-
 .../access/DataContextProcedureQueryIT.java        |  34 +--
 .../cayenne/access/DataContextQueryCachingIT.java  |   2 +-
 .../cayenne/access/DataContextQueryChainIT.java    |   6 +-
 .../cayenne/access/DataContextRefreshQueryIT.java  |   2 +-
 .../cayenne/access/DataContextRefreshingIT.java    |   2 +-
 .../access/DataContextRelationshipQueryIT.java     |   2 +-
 ...DataContextRelationshipQuery_PolymorphicIT.java |   2 +-
 .../cayenne/access/DataContextRollbackIT.java      |  64 ++---
 .../access/DataContextSQLTemplateCompoundIT.java   |   2 +-
 .../cayenne/access/DataContextSQLTemplateIT.java   |   2 +-
 .../cayenne/access/DataContextSerializationIT.java |   2 +-
 .../cayenne/access/DataContextSharedCacheIT.java   |   2 +-
 .../cayenne/access/DataContextValidationIT.java    |  30 +--
 .../cayenne/access/DataDomainQueryActionIT.java    |   4 +-
 .../org/apache/cayenne/access/DataRowUtilsIT.java  |   2 +-
 .../org/apache/cayenne/access/DeleteObjectIT.java  |   2 +-
 .../org/apache/cayenne/access/DeleteRulesIT.java   | 122 ++++-----
 .../apache/cayenne/access/EntityInheritanceIT.java |  24 +-
 .../access/FlattenedRelationshipInContextIT.java   |   2 +-
 .../cayenne/access/IncrementalFaultListIT.java     |   2 +-
 .../org/apache/cayenne/access/JointPrefetchIT.java |   2 +-
 .../access/NestedDataContextLocalCacheIT.java      |  10 +-
 .../access/NestedDataContextParentEventsIT.java    |   6 +-
 .../NestedDataContextParentPeerEventsIT.java       |   2 +-
 .../access/NestedDataContextPeerEventsIT.java      |  36 +--
 .../cayenne/access/NestedDataContextReadIT.java    |   2 +-
 .../access/NestedDataContextRollbackIT.java        |  20 +-
 .../access/NestedDataContextValidationIT.java      |   6 +-
 .../cayenne/access/NestedDataContextWriteIT.java   |   2 +-
 .../access/NestedDataContext_DeadlockIT.java       |   2 +-
 .../org/apache/cayenne/access/NumericTypesIT.java  |   2 +-
 .../cayenne/access/ObjectStoreDiffRetainingIT.java |   2 +-
 .../org/apache/cayenne/access/ObjectStoreGCIT.java |   2 +-
 .../org/apache/cayenne/access/ObjectStoreIT.java   |  40 +--
 .../apache/cayenne/access/OptimisticLockingIT.java |   2 +-
 .../access/PrefetchProcessorTreeBuilderIT.java     |   2 +-
 .../cayenne/access/PrimitiveAttributesIT.java      |   6 +-
 .../cayenne/access/ReturnTypesMappingIT.java       | 288 ++++++++++-----------
 .../SimpleIdIncrementalFaultListDataRowsIT.java    |   2 +-
 .../access/SimpleIdIncrementalFaultListIT.java     |   2 +-
 .../cayenne/access/SingleTableInheritanceIT.java   |   2 +-
 .../org/apache/cayenne/access/ToManyListIT.java    |  54 ++--
 .../apache/cayenne/access/jdbc/SelectActionIT.java |  10 +-
 ...SelectActionWithUnsupportedDistinctTypesIT.java |   2 +-
 .../select/DefaultObjectSelectTranslatorIT.java    |   6 +-
 .../select/DefaultSelectTranslatorIT.java          |  56 ++--
 .../cayenne/access/types/DateTimeTypesIT.java      |   5 +-
 .../access/types/LegacyDateTimeTypesIT.java        |  44 ++--
 .../exp/AggregateExpInMemoryEvaluationIT.java      |   2 +-
 .../apache/cayenne/exp/TranslateExpressionIT.java  |   2 +-
 .../parser/ExpressionCollectionEvaluationIT.java   |   2 +-
 .../cayenne/exp/parser/ExpressionEvaluationIT.java |   2 +-
 .../apache/cayenne/exp/property/IdPropertyIT.java  |   2 +-
 .../apache/cayenne/exp/property/PathAliasesIT.java |   2 +-
 .../org/apache/cayenne/map/EntityResolverIT.java   |   2 +-
 .../java/org/apache/cayenne/query/CAY2541IT.java   |   2 +-
 .../org/apache/cayenne/query/ColumnSelectIT.java   |   2 +-
 .../org/apache/cayenne/query/EJBQLQueryIT.java     |   2 +-
 .../org/apache/cayenne/query/MappedQueryIT.java    |  28 +-
 .../cayenne/query/ObjectSelectIteratedQueryIT.java |   2 +-
 .../cayenne/query/ObjectSelect_AggregateIT.java    |   2 +-
 .../query/ObjectSelect_PrimitiveColumnsIT.java     |   2 +-
 .../apache/cayenne/query/ObjectSelect_RunIT.java   |   2 +-
 .../cayenne/query/ObjectSelect_SubqueryIT.java     |   2 +-
 .../org/apache/cayenne/query/ProcedureCallIT.java  |  18 +-
 .../cayenne/query/QueryWithCompoundJoinIT.java     |   2 +-
 .../java/org/apache/cayenne/query/SQLExecIT.java   |  20 +-
 .../java/org/apache/cayenne/query/SQLSelectIT.java |   2 +-
 .../cayenne/query/SQLSelectIteratedQueryIT.java    |   2 +-
 .../org/apache/cayenne/query/SQLTemplateIT.java    |   2 +-
 .../cayenne/query/SelectByIdIteratedQueryIT.java   |   2 +-
 .../cayenne/tx/TransactionCustomConnectionIT.java  |   2 +-
 .../apache/cayenne/tx/TransactionIsolationIT.java  |   2 +-
 .../tx/TransactionPropagationRollbackIT.java       |   2 +-
 .../org/apache/cayenne/tx/TransactionThreadIT.java |   4 +-
 .../cayenne/unit/di/runtime/CayenneTestsEnv.java   |  28 +-
 .../di/runtime/RuntimeCaseDataContextProvider.java |   7 +-
 .../cayenne/unit/di/runtime/RuntimeCaseModule.java |   2 -
 .../runtime/RuntimeCaseObjectContextProvider.java  |  36 ---
 .../org/apache/cayenne/unit/jira/CAY_115IT.java    |   2 +-
 .../org/apache/cayenne/unit/jira/CAY_191IT.java    |   2 +-
 .../org/apache/cayenne/unit/jira/CAY_194IT.java    |   2 +-
 .../apache/cayenne/util/DeepMergeOperationIT.java  |   2 +-
 .../util/DeepMergeOperationInheritanceIT.java      |   2 +-
 .../cayenne/util/ShallowMergeOperationIT.java      |   2 +-
 .../org/apache/cayenne/value/json/JsonTypeIT.java  |  12 +-
 133 files changed, 819 insertions(+), 890 deletions(-)

diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
index 0e6de31d8..51f8591dd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOOneToManyFKIT.java
@@ -40,31 +40,31 @@ public class CDOOneToManyFKIT {
     @Test
     public void readRelationship() {
 
-        ToManyRoot2 src2 = env.dataContext().newObject(ToManyRoot2.class);
-        ToManyFkRoot src = env.dataContext().newObject(ToManyFkRoot.class);
+        ToManyRoot2 src2 = env.context().newObject(ToManyRoot2.class);
+        ToManyFkRoot src = env.context().newObject(ToManyFkRoot.class);
 
         // this should go away when such mapping becomes fully supported
         src.setDepId(1);
-        ToManyFkDep target = env.dataContext().newObject(ToManyFkDep.class);
+        ToManyFkDep target = env.context().newObject(ToManyFkDep.class);
 
         // this should go away when such mapping becomes fully supported
         target.setDepId(1);
         target.setRoot2(src2);
 
         src.addToDeps(target);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        env.dataContext().invalidateObjects(src, target, src2);
+        env.context().invalidateObjects(src, target, src2);
 
-        ToManyFkRoot src1 = (ToManyFkRoot) Cayenne.objectForPK(env.dataContext(), src.getObjectId());
+        ToManyFkRoot src1 = (ToManyFkRoot) Cayenne.objectForPK(env.context(), src.getObjectId());
         assertNotNull(src1.getDeps());
         assertEquals(1, src1.getDeps().size());
         // resolve HOLLOW
         assertSame(src1, src1.getDeps().get(0).getRoot());
 
-        env.dataContext().invalidateObjects(src1, src1.getDeps().get(0));
+        env.context().invalidateObjects(src1, src1.getDeps().get(0));
 
-        ToManyFkDep target2 = (ToManyFkDep) Cayenne.objectForPK(env.dataContext(), target.getObjectId());
+        ToManyFkDep target2 = (ToManyFkDep) Cayenne.objectForPK(env.context(), target.getObjectId());
         assertNotNull(target2.getRoot());
 
         // resolve HOLLOW
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java
index fe6319b43..ba5d67c22 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOOneToOneFKIT.java
@@ -49,7 +49,7 @@ public class CDOOneToOneFKIT {
 
     @BeforeEach
     public void setUp() {
-        context = env.dataContext();
+        context = env.context();
         context1 = (DataContext) env.runtime().newContext();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java b/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
index f1f0d02d5..54e902c20 100644
--- a/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
@@ -43,7 +43,7 @@ public class Cay2412IT {
 
     @BeforeEach
     public void prepareData() throws Exception {
-        context = env.dataContext();
+        context = env.context();
 
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
index 7ee9fce46..a459a7296 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectFlattenedRelIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.access.MockDataNode;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.runtime.CayenneRuntime;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
 import org.apache.cayenne.testdo.testmap.Artist;
@@ -37,10 +36,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 import java.sql.Types;
 import java.util.List;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class CayennePersistentObjectFlattenedRelIT {
 
@@ -48,27 +44,22 @@ public class CayennePersistentObjectFlattenedRelIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private CayenneRuntime runtime;
-    private DBHelper dbHelper;
     private DataChannelInterceptor queryInterceptor;
 
     private TableHelper tArtist;
-
     private TableHelper tArtGroup;
-
     private TableHelper tArtistGroup;
 
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        dbHelper.update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
+        env.dbHelper().update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
         env.getInstance(DBCleaner.class).clean();
-        tArtist = new TableHelper(dbHelper, "ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
-        tArtGroup = new TableHelper(dbHelper, "ARTGROUP", "GROUP_ID", "NAME");
-
-        tArtistGroup = new TableHelper(dbHelper, "ARTIST_GROUP", "ARTIST_ID", "GROUP_ID");
+        tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
+        tArtGroup = env.table("ARTGROUP", "GROUP_ID", "NAME");
+        tArtistGroup = env.table("ARTIST_GROUP", "ARTIST_ID", "GROUP_ID");
     }
 
     private void create1Artist1ArtGroupDataSet() throws Exception {
@@ -209,7 +200,8 @@ public class CayennePersistentObjectFlattenedRelIT {
 
         Artist a1 = Cayenne.objectForPK(env.context(), Artist.class, 33001);
 
-        List<ArtGroup> results = ObjectSelect.query(ArtGroup.class, ArtGroup.NAME.eq("g1")).select(env.context());;
+        List<ArtGroup> results = ObjectSelect.query(ArtGroup.class, ArtGroup.NAME.eq("g1")).select(env.context());
+        ;
         assertEquals(1, results.size());
 
         ArtGroup group = results.get(0);
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
index 96d9e901b..365ffd51b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
@@ -47,7 +47,7 @@ public class CayennePersistentObjectInContextIT {
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java b/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java
index 9701a9eff..8088cee3c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CompoundPkChangeIT.java
@@ -42,14 +42,14 @@ public class CompoundPkChangeIT {
     @Test
     public void compoundPkChangeSingleElement() throws Exception {
 
-        CompoundPkTestEntity object = env.dataContext().newObject(CompoundPkTestEntity.class);
+        CompoundPkTestEntity object = env.context().newObject(CompoundPkTestEntity.class);
         CompoundPkTestEntity refreshedObject = null;
 
         object.setKey1(key1v1);
         object.setKey2(key2v1);
         object.setName("testing testing");
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertEquals(key1v1, object.getObjectId().getIdSnapshot().get(
                 CompoundPkTestEntity.KEY1_PK_COLUMN));
         assertEquals(key2v1, object.getObjectId().getIdSnapshot().get(
@@ -59,12 +59,12 @@ public class CompoundPkChangeIT {
                 object.getObjectId(),
                 false,
                 ObjectIdQuery.CACHE_REFRESH);
-        refreshedObject = (CompoundPkTestEntity) Cayenne.objectForQuery(env.dataContext(), refetch);
+        refreshedObject = (CompoundPkTestEntity) Cayenne.objectForQuery(env.context(), refetch);
         assertEquals(object.getObjectId(), refreshedObject.getObjectId());
 
         object.setKey2(key2v2);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertEquals(key1v1, object.getObjectId().getIdSnapshot().get(
                 CompoundPkTestEntity.KEY1_PK_COLUMN));
         assertEquals(key2v2, object.getObjectId().getIdSnapshot().get(
@@ -75,12 +75,12 @@ public class CompoundPkChangeIT {
                 false,
                 ObjectIdQuery.CACHE_REFRESH);
         refreshedObject = (CompoundPkTestEntity) Cayenne
-                .objectForQuery(env.dataContext(), refetch1);
+                .objectForQuery(env.context(), refetch1);
         assertEquals(object.getObjectId(), refreshedObject.getObjectId());
 
         object.setKey2(key2v3);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertEquals(key1v1, object.getObjectId().getIdSnapshot().get(
                 CompoundPkTestEntity.KEY1_PK_COLUMN));
         assertEquals(key2v3, object.getObjectId().getIdSnapshot().get(
@@ -91,21 +91,21 @@ public class CompoundPkChangeIT {
                 false,
                 ObjectIdQuery.CACHE_REFRESH);
         refreshedObject = (CompoundPkTestEntity) Cayenne
-                .objectForQuery(env.dataContext(), refetch2);
+                .objectForQuery(env.context(), refetch2);
         assertEquals(object.getObjectId(), refreshedObject.getObjectId());
     }
 
     @Test
     public void compoundPkChangeAllElements() throws Exception {
 
-        CompoundPkTestEntity object = env.dataContext().newObject(CompoundPkTestEntity.class);
+        CompoundPkTestEntity object = env.context().newObject(CompoundPkTestEntity.class);
         CompoundPkTestEntity refreshedObject = null;
 
         object.setKey1(key1v1);
         object.setKey2(key2v1);
         object.setName("testing testing");
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertEquals(key1v1, object.getObjectId().getIdSnapshot().get(
                 CompoundPkTestEntity.KEY1_PK_COLUMN));
         assertEquals(key2v1, object.getObjectId().getIdSnapshot().get(
@@ -115,13 +115,13 @@ public class CompoundPkChangeIT {
                 object.getObjectId(),
                 false,
                 ObjectIdQuery.CACHE_REFRESH);
-        refreshedObject = (CompoundPkTestEntity) Cayenne.objectForQuery(env.dataContext(), refetch);
+        refreshedObject = (CompoundPkTestEntity) Cayenne.objectForQuery(env.context(), refetch);
         assertEquals(object.getObjectId(), refreshedObject.getObjectId());
 
         object.setKey1(key1v2);
         object.setKey2(key2v2);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertEquals(key1v2, object.getObjectId().getIdSnapshot().get(
                 CompoundPkTestEntity.KEY1_PK_COLUMN));
         assertEquals(key2v2, object.getObjectId().getIdSnapshot().get(
@@ -132,13 +132,13 @@ public class CompoundPkChangeIT {
                 false,
                 ObjectIdQuery.CACHE_REFRESH);
         refreshedObject = (CompoundPkTestEntity) Cayenne
-                .objectForQuery(env.dataContext(), refetch1);
+                .objectForQuery(env.context(), refetch1);
         assertEquals(object.getObjectId(), refreshedObject.getObjectId());
 
         object.setKey1(key1v3);
         object.setKey2(key2v3);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertEquals(key1v3, object.getObjectId().getIdSnapshot().get(
                 CompoundPkTestEntity.KEY1_PK_COLUMN));
         assertEquals(key2v3, object.getObjectId().getIdSnapshot().get(
@@ -149,7 +149,7 @@ public class CompoundPkChangeIT {
                 false,
                 ObjectIdQuery.CACHE_REFRESH);
         refreshedObject = (CompoundPkTestEntity) Cayenne
-                .objectForQuery(env.dataContext(), refetch2);
+                .objectForQuery(env.context(), refetch2);
         assertEquals(object.getObjectId(), refreshedObject.getObjectId());
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
index df448b63a..2c32aab71 100644
--- a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
@@ -52,7 +52,7 @@ public class DataContextMaxIdQualifierIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         runtime = env.runtime();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
index 1e12e4fcc..66ccca5f3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
@@ -62,7 +62,7 @@ public class FlattenedRelationshipsIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         context1 = (DataContext) env.runtime().newContext();
 
         tFlattenedTest1 = env.table("FLATTENED_TEST_1", "FT1_ID", "NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java b/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java
index 3553462fc..f5a193dfa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/GenericMappingIT.java
@@ -42,60 +42,60 @@ public class GenericMappingIT {
 
     @Test
     public void testInsertSingle() {
-        Persistent g1 = env.dataContext().newObject("Generic1");
+        Persistent g1 = env.context().newObject("Generic1");
         g1.writeProperty("name", "G1 Name");
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     @Test
     public void testInsertRelated() {
-        Persistent g1 = env.dataContext().newObject("Generic1");
+        Persistent g1 = env.context().newObject("Generic1");
         g1.writeProperty("name", "G1 Name");
 
-        Persistent g2 = env.dataContext().newObject("Generic2");
+        Persistent g2 = env.context().newObject("Generic2");
         g2.writeProperty("name", "G2 Name");
         g2.setToOneTarget("toGeneric1", g1, true);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     @Test
     public void testSelect() {
-        env.dataContext().performNonSelectingQuery(new SQLTemplate(
+        env.context().performNonSelectingQuery(new SQLTemplate(
                 "Generic1",
                 "INSERT INTO GENERIC1 (ID, NAME) VALUES (1, 'AAAA')"));
-        env.dataContext().performNonSelectingQuery(new SQLTemplate(
+        env.context().performNonSelectingQuery(new SQLTemplate(
                 "Generic1",
                 "INSERT INTO GENERIC1 (ID, NAME) VALUES (2, 'BBBB')"));
-        env.dataContext().performNonSelectingQuery(new SQLTemplate(
+        env.context().performNonSelectingQuery(new SQLTemplate(
                 "Generic1",
                 "INSERT INTO GENERIC2 (GENERIC1_ID, ID, NAME) VALUES (1, 1, 'CCCCC')"));
 
         Expression qual = ExpressionFactory.matchExp("name", "AAAA");
-        List<?> result = ObjectSelect.query(Object.class, "Generic1").where(qual).select(env.dataContext());
+        List<?> result = ObjectSelect.query(Object.class, "Generic1").where(qual).select(env.context());
         assertEquals(1, result.size());
     }
 
     @Test
     public void testUpdateRelated() {
-        Persistent g1 = env.dataContext().newObject("Generic1");
+        Persistent g1 = env.context().newObject("Generic1");
         g1.writeProperty("name", "G1 Name");
 
-        Persistent g2 = env.dataContext().newObject("Generic2");
+        Persistent g2 = env.context().newObject("Generic2");
         g2.writeProperty("name", "G2 Name");
         g2.setToOneTarget("toGeneric1", g1, true);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         List<?> r1 = (List<?>) g1.readProperty("generic2s");
         assertTrue(r1.contains(g2));
 
-        Persistent g11 = env.dataContext().newObject("Generic1");
+        Persistent g11 = env.context().newObject("Generic1");
         g11.writeProperty("name", "G11 Name");
         g2.setToOneTarget("toGeneric1", g11, true);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         List<?> r11 = (List<?>) g11.readProperty("generic2s");
         assertTrue(r11.contains(g2));
diff --git a/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java
index d259aaf95..f60cd2a17 100644
--- a/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/HybridPersistentObjectIT.java
@@ -43,29 +43,29 @@ public class HybridPersistentObjectIT {
 
     @Test
     public void testCreateNew() {
-        HybridEntity1 entity1 = env.dataContext().newObject(HybridEntity1.class);
-        HybridEntity2 entity2 = env.dataContext().newObject(HybridEntity2.class);
-        env.dataContext().commitChanges();
+        HybridEntity1 entity1 = env.context().newObject(HybridEntity1.class);
+        HybridEntity2 entity2 = env.context().newObject(HybridEntity2.class);
+        env.context().commitChanges();
 
         assertNull(entity1.values);
         assertNull(entity2.values);
 
-        HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.dataContext());
+        HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.context());
         assertEquals(0, selectEntity1.getIntField());
         assertEquals(null, selectEntity1.getStrField());
 
-        HybridEntity2 selectEntity2 = ObjectSelect.query(HybridEntity2.class).selectOne(env.dataContext());
+        HybridEntity2 selectEntity2 = ObjectSelect.query(HybridEntity2.class).selectOne(env.context());
         assertEquals(0, selectEntity2.getIntField());
         assertEquals(null, selectEntity2.getStrField());
     }
 
     @Test
     public void testSetFieldAttributes() {
-        HybridEntity1 entity1 = env.dataContext().newObject(HybridEntity1.class);
+        HybridEntity1 entity1 = env.context().newObject(HybridEntity1.class);
         entity1.setIntField(123);
         entity1.setStrField("abc");
 
-        HybridEntity2 entity2 = env.dataContext().newObject(HybridEntity2.class);
+        HybridEntity2 entity2 = env.context().newObject(HybridEntity2.class);
         entity2.setIntField(321);
         entity2.setStrField("cba");
         entity2.setHybridEntity1(entity1);
@@ -73,13 +73,13 @@ public class HybridPersistentObjectIT {
         assertNull(entity1.values);
         assertNull(entity2.values);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.dataContext());
+        HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.context());
         assertEquals(123, selectEntity1.getIntField());
         assertEquals("abc", selectEntity1.getStrField());
 
-        HybridEntity2 selectEntity2 = ObjectSelect.query(HybridEntity2.class).selectOne(env.dataContext());
+        HybridEntity2 selectEntity2 = ObjectSelect.query(HybridEntity2.class).selectOne(env.context());
         assertEquals(321, selectEntity2.getIntField());
         assertEquals("cba", selectEntity2.getStrField());
         assertEquals(selectEntity1, selectEntity2.getHybridEntity1());
@@ -92,25 +92,25 @@ public class HybridPersistentObjectIT {
         addRuntimeAttribute(HybridEntity2.class, "BOOLEAN_FIELD", "boolean");
 
         try {
-            HybridEntity1 entity1 = env.dataContext().newObject(HybridEntity1.class);
+            HybridEntity1 entity1 = env.context().newObject(HybridEntity1.class);
             entity1.writeProperty("FLOAT_FIELD", 3.14);
 
-            HybridEntity2 entity2 = env.dataContext().newObject(HybridEntity2.class);
+            HybridEntity2 entity2 = env.context().newObject(HybridEntity2.class);
             entity2.writeProperty("BOOLEAN_FIELD", true);
 
             assertNotNull(entity1.values);
             assertNotNull(entity2.values);
 
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             entity1.writeProperty("FLOAT_FIELD", 2.17);
             entity2.writeProperty("BOOLEAN_FIELD", false);
 
             // attributes should be merged with context cache
-            HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.dataContext());
+            HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.context());
             assertEquals(2.17, selectEntity1.readProperty("FLOAT_FIELD"));
 
-            HybridEntity2 selectEntity2 = ObjectSelect.query(HybridEntity2.class).selectOne(env.dataContext());
+            HybridEntity2 selectEntity2 = ObjectSelect.query(HybridEntity2.class).selectOne(env.context());
             assertEquals(false, selectEntity2.readProperty("BOOLEAN_FIELD"));
 
             // attributes should be read from DB
@@ -129,16 +129,16 @@ public class HybridPersistentObjectIT {
     @Test
     public void testSetDynamicNonDbAttributes() {
         // test write arbitrary data into object
-        HybridEntity1 entity1 = env.dataContext().newObject(HybridEntity1.class);
+        HybridEntity1 entity1 = env.context().newObject(HybridEntity1.class);
         entity1.writeProperty("CUSTOM_NON_DB_ATTRIBUTE", 42L);
         assertEquals(42L, entity1.readProperty("CUSTOM_NON_DB_ATTRIBUTE"));
         assertNotNull(entity1.values);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         entity1.writeProperty("CUSTOM_NON_DB_ATTRIBUTE", 12L);
 
-        HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.dataContext());
+        HybridEntity1 selectEntity1 = ObjectSelect.query(HybridEntity1.class).selectOne(env.context());
         // this will be restored from context cache
         assertEquals(12L, selectEntity1.readProperty("CUSTOM_NON_DB_ATTRIBUTE"));
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java b/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java
index 06123d4f7..5b7cd1a73 100644
--- a/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/PregeneratedPKIT.java
@@ -48,7 +48,7 @@ public class PregeneratedPKIT {
 
     @BeforeEach
     public void setUp() {
-        context = env.dataContext();
+        context = env.context();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java b/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
index 589cdf6f9..3abd01d0d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/CAY2723IT.java
@@ -36,7 +36,7 @@ public class CAY2723IT {
 
     @Test
     public void phantomToDepPKUpdate() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         DataChannelInterceptor queryInterceptor = env.getInstance(DataChannelInterceptor.class);
 
         // try to trigger PK generator. so it wouldn't random fail the actual test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java b/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
index f67545a58..49e461e79 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
@@ -75,7 +75,7 @@ public class Cay2032IT {
         List<Team> result = ObjectSelect.query(Team.class)
                 .prefetch(Team.TEAM_USERS.disjoint())
                 .orderBy(Team.TEAM_ID_PK_PROPERTY.asc())
-                .select(env.dataContext());
+                .select(env.context());
 
         checkResult(result);
     }
@@ -85,7 +85,7 @@ public class Cay2032IT {
         List<Team> result = ObjectSelect.query(Team.class)
                 .prefetch(Team.TEAM_USERS.disjointById())
                 .orderBy(Team.TEAM_ID_PK_PROPERTY.asc())
-                .select(env.dataContext());
+                .select(env.context());
 
         checkResult(result);
     }
@@ -95,7 +95,7 @@ public class Cay2032IT {
         List<Team> result = ObjectSelect.query(Team.class)
                 .prefetch(Team.TEAM_USERS.joint())
                 .orderBy(Team.TEAM_ID_PK_PROPERTY.asc())
-                .select(env.dataContext());
+                .select(env.context());
 
         checkResult(result);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java b/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
index a27eda865..2bc6bfe1a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
@@ -128,17 +128,17 @@ public class Cay2666IT {
         tTest.insert(1, "st.One");
 
         Expression expression = ExpressionFactory.exp("name$ = 'st.One'");
-        List<CAY2666> cay2666List = ObjectSelect.query(CAY2666.class).where(expression).select(env.dataContext());
+        List<CAY2666> cay2666List = ObjectSelect.query(CAY2666.class).where(expression).select(env.context());
         assertEquals(1, cay2666List.size());
 
         expression = ExpressionFactory.exp("obj:name$ = 'st.Two'");
-        cay2666List = ObjectSelect.query(CAY2666.class).where(expression).select(env.dataContext());
+        cay2666List = ObjectSelect.query(CAY2666.class).where(expression).select(env.context());
         assertEquals(0, cay2666List.size());
 
         tTest.insert(2, "st.Two");
 
         expression = ExpressionFactory.exp("db:NAME$ = 'st.Two'");
-        cay2666List = ObjectSelect.query(CAY2666.class).where(expression).select(env.dataContext());
+        cay2666List = ObjectSelect.query(CAY2666.class).where(expression).select(env.context());
         assertEquals(1, cay2666List.size());
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java
index 9f6dc6a6e..3ce2ea711 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextArrayTypeIT.java
@@ -39,7 +39,7 @@ public class DataContextArrayTypeIT {
 
     @Test
     public void doubleArray() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         ArrayTestEntity arrayTest = context.newObject(ArrayTestEntity.class);
         Double[] doubleArray = {1.0, 2.0, 3.0};
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
index 5f9c53487..8bca72717 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBinaryPKIT.java
@@ -43,7 +43,7 @@ public class DataContextBinaryPKIT {
             return;
         }
 
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         BinaryPKTest1 master = (BinaryPKTest1) context.newObject("BinaryPKTest1");
         master.setName("master1");
 
@@ -61,7 +61,7 @@ public class DataContextBinaryPKIT {
             return;
         }
 
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         BinaryPKTest1 master = (BinaryPKTest1) context.newObject("BinaryPKTest1");
         master.setName("master1");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
index bca6e50eb..d76c2f123 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextBlobIT.java
@@ -45,7 +45,7 @@ public class DataContextBlobIT {
 
     @BeforeEach
     public void setUp() {
-        context  = env.dataContext();
+        context  = env.context();
         context2 = (DataContext) env.runtime().newContext();
         context3 = (DataContext) env.runtime().newContext();
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java
index 3f351aad0..b96fb0ed0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCallbacksIT.java
@@ -48,7 +48,7 @@ public class DataContextCallbacksIT {
 
     @Test
     public void postAddCallbacks() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         LifecycleCallbackRegistry registry = env.runtime()
                 .getDataDomain()
                 .getEntityResolver()
@@ -86,7 +86,7 @@ public class DataContextCallbacksIT {
 
     @Test
     public void prePersistCallbacks() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         LifecycleCallbackRegistry registry = env.runtime()
                 .getDataDomain()
                 .getEntityResolver()
@@ -126,7 +126,7 @@ public class DataContextCallbacksIT {
 
     @Test
     public void preRemoveCallbacks() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         LifecycleCallbackRegistry registry = env.runtime()
                 .getDataDomain()
                 .getEntityResolver()
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java
index 395638701..9f7de821b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharPKIT.java
@@ -39,7 +39,7 @@ public class DataContextCharPKIT {
 
     @Test
     public void insert() throws Exception {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         CharPkTestEntity object = context.newObject(CharPkTestEntity.class);
         object.setOtherCol("object-XYZ");
         object.setPkCol("PK1");
@@ -71,7 +71,7 @@ public class DataContextCharPKIT {
 
     @Test
     public void delete() throws Exception {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         CharPkTestEntity object = context.newObject(CharPkTestEntity.class);
         object.setOtherCol("object-XYZ");
         object.setPkCol("PK1");
@@ -92,7 +92,7 @@ public class DataContextCharPKIT {
 
     @Test
     public void update() throws Exception {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
         CharPkTestEntity object = context.newObject(CharPkTestEntity.class);
         object.setOtherCol("object-XYZ");
         object.setPkCol("PK1");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
index f116c3038..0a4cd88ea 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCharTypeIT.java
@@ -38,7 +38,7 @@ public class DataContextCharTypeIT {
     @Test
     public void charTrimming() {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
-            DataContext context = env.dataContext();
+            DataContext context = env.context();
             ReturnTypesMap1 map1 = context.newObject(ReturnTypesMap1.class);
             map1.setCharColumn("  text   ");
             ReturnTypesMap1 map2 = context.newObject(ReturnTypesMap1.class);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
index ab6000548..58b71bf53 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextClobIT.java
@@ -44,7 +44,7 @@ public class DataContextClobIT {
 
     @BeforeEach
     public void setUp() {
-        context  = env.dataContext();
+        context  = env.context();
         context2 = (DataContext) env.runtime().newContext();
         context3 = (DataContext) env.runtime().newContext();
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java
index 8ad530534..9e4886b3b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCommitIT.java
@@ -45,7 +45,7 @@ public class DataContextCommitIT {
 
     @Test
     public void flushToParent_Commit_New() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
 
         // commit new object
         Artist a = context.newObject(Artist.class);
@@ -71,7 +71,7 @@ public class DataContextCommitIT {
 
     @Test
     public void flushToParent_Commit_Mix() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
 
         Artist a = context.newObject(Artist.class);
         a.setArtistName("Test");
@@ -99,7 +99,7 @@ public class DataContextCommitIT {
 
     @Test
     public void flushToParent_NewNoAttributes() {
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
 
         // commit new object with uninitialized attributes
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
index e38a5fc96..f711eb676 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCompoundRelIT.java
@@ -48,7 +48,7 @@ public class DataContextCompoundRelIT {
 
     @BeforeEach
     public void setUp() {
-        context  = env.dataContext();
+        context  = env.context();
         context1 = (DataContext) env.runtime().newContext();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
index 2c522a0bf..4c47da857 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextCrossDBIT.java
@@ -41,7 +41,7 @@ public class DataContextCrossDBIT {
         // for now testing that no exceptions are thrown... wouldn't hurt to check the
         // data as well???
 
-        DataContext context = env.dataContext();
+        DataContext context = env.context();
 
         // insert
         CrossdbM1E1 o1 = context.newObject(CrossdbM1E1.class);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
index 55acbdcc3..b3c1df8a8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDataChannelEventsIT.java
@@ -50,7 +50,7 @@ public class DataContextDataChannelEventsIT {
 
     @BeforeEach
     public void setUp() {
-        context = env.dataContext();
+        context = env.context();
         peer    = (DataContext) env.runtime().newContext();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java
index e44e621b2..497680cd6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateIT.java
@@ -51,7 +51,7 @@ public class DataContextDelegateIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
 
         // prepare a single gallery record
         Gallery gallery = (Gallery) context.newObject("Gallery");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
index 5860e989b..1d7bd9078 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDelegateSharedCacheIT.java
@@ -51,7 +51,7 @@ public class DataContextDelegateSharedCacheIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context  = env.dataContext();
+        context  = env.context();
         context1 = (DataContext) env.runtime().newContext();
 
         // prepare a single artist record
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
index 2e56111c3..c41dff7b2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDeleteRulesIT.java
@@ -59,7 +59,7 @@ public class DataContextDeleteRulesIT {
         // Break ARTGROUP self-referencing FK before DB clean, then re-clean
         env.dbHelper().update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
         env.getInstance(DBCleaner.class).clean();
-        context = env.dataContext();
+        context = env.context();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
index e980f3d7d..281112fdb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
@@ -59,7 +59,7 @@ public class DataContextDisjointByIdPrefetchIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
index 8174d4c63..16c0375af 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetch_ExtrasIT.java
@@ -57,7 +57,7 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tBag = env.table("BAG", "ID", "NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java
index 8003bf306..ee40878d4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT.java
@@ -36,66 +36,66 @@ public class DataContextEntityWithMeaningfulPKAndCustomDbRowOpSorterIT {
 
     @Test
     public void insertDelete() {
-        MeaningfulPk pkObj = env.dataContext().newObject(MeaningfulPk.class);
+        MeaningfulPk pkObj = env.context().newObject(MeaningfulPk.class);
         pkObj.setPk("123");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        env.dataContext().deleteObject(pkObj);
+        env.context().deleteObject(pkObj);
 
-        MeaningfulPk pkObj2 = env.dataContext().newObject(MeaningfulPk.class);
+        MeaningfulPk pkObj2 = env.context().newObject(MeaningfulPk.class);
         pkObj2.setPk("123");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     @Test
     public void test_MeaningfulPkInsertDeleteCascade() {
         // setup
-        MeaningfulPKTest1 obj = env.dataContext().newObject(MeaningfulPKTest1.class);
+        MeaningfulPKTest1 obj = env.context().newObject(MeaningfulPKTest1.class);
         obj.setPkAttribute(1000);
         obj.setDescr("aaa");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // must be able to set reverse relationship
-        MeaningfulPKDep dep = env.dataContext().newObject(MeaningfulPKDep.class);
+        MeaningfulPKDep dep = env.context().newObject(MeaningfulPKDep.class);
         dep.setToMeaningfulPK(obj);
         dep.setPk(10);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // test
-        env.dataContext().deleteObject(obj);
+        env.context().deleteObject(obj);
 
-        MeaningfulPKTest1 obj2 = env.dataContext().newObject(MeaningfulPKTest1.class);
+        MeaningfulPKTest1 obj2 = env.context().newObject(MeaningfulPKTest1.class);
         obj2.setPkAttribute(1000);
         obj2.setDescr("bbb");
 
-        MeaningfulPKDep dep2 = env.dataContext().newObject(MeaningfulPKDep.class);
+        MeaningfulPKDep dep2 = env.context().newObject(MeaningfulPKDep.class);
         dep2.setToMeaningfulPK(obj2);
         dep2.setPk(10);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     @Test
     public void test_MeaningfulPkWithFkUpdate() {
         // setup
-        MeaningfulPKTest1 obj = env.dataContext().newObject(MeaningfulPKTest1.class);
+        MeaningfulPKTest1 obj = env.context().newObject(MeaningfulPKTest1.class);
         obj.setPkAttribute(1001);
         obj.setDescr("aaa");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        MeaningfulPKDep dep = env.dataContext().newObject(MeaningfulPKDep.class);
+        MeaningfulPKDep dep = env.context().newObject(MeaningfulPKDep.class);
         dep.setToMeaningfulPK(obj);
         dep.setPk(10);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // check that operations are sorted correctly
         dep.setToMeaningfulPK(null);
         obj.setPkAttribute(1002);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // set relationship with a new PK
         dep.setDescr("test");
         dep.setToMeaningfulPK(obj);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java
index f34eae967..627a180bc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEntityWithMeaningfulPKIT.java
@@ -56,7 +56,7 @@ public class DataContextEntityWithMeaningfulPKIT {
 
     @BeforeEach
     public void setUp() {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
index 5da683f09..c0a3ac08f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
@@ -69,7 +69,7 @@ public class DataContextExtrasIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         logger = env.getInstance(JdbcEventLogger.class);
         objectFactory = env.getInstance(AdhocObjectFactory.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
index 2e32a8bb3..592cd93e5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
@@ -67,7 +67,7 @@ public class DataContextFlattenedAttributesIT {
 
     @BeforeEach
     public void createTestDataSetStructure() {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
index 00acfed9c..552014e8b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
@@ -78,7 +78,7 @@ public class DataContextIT {
 
 	@BeforeEach
 	public void setUp() throws Exception {
-		context = env.dataContext();
+		context = env.context();
 		accessStackAdapter = env.getInstance(UnitDbAdapter.class);
 		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
 		dataSourceFactory = env.getInstance(RuntimeCaseDataSourceFactory.class);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
index c8a84b7fa..db7b16e63 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
@@ -51,7 +51,7 @@ public class DataContextIteratedQueryIT {
 
     @BeforeEach
     public void before() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tExhibit = env.table("EXHIBIT", "EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
index 66c3d4c3d..1529e332b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
@@ -58,7 +58,7 @@ public class DataContextLocalObjectIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context1 = env.dataContext();
+        context1 = env.context();
         context2 = (DataContext) env.runtime().newContext();
         interceptor = env.getInstance(DataChannelInterceptor.class);
         runtime = env.runtime();
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java
index 7f8b2fe06..a56655c96 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQueryIT.java
@@ -43,13 +43,13 @@ public class DataContextObjectIdQueryIT  {
     @Test
     public void refreshNullifiedValuesNew() {
 
-        Artist a = env.dataContext().newObject(Artist.class);
+        Artist a = env.context().newObject(Artist.class);
         a.setArtistName("X");
         a.setDateOfBirth(new Date());
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        env.dataContext().performGenericQuery(new SQLTemplate(
+        env.context().performGenericQuery(new SQLTemplate(
                 Artist.class,
                 "UPDATE ARTIST SET DATE_OF_BIRTH = NULL"));
 
@@ -59,7 +59,7 @@ public class DataContextObjectIdQueryIT  {
                 Artist.ARTIST_ID_PK_COLUMN,
                 id), false, ObjectIdQuery.CACHE_REFRESH);
 
-        Artist a1 = (Artist) Cayenne.objectForQuery(env.dataContext(), query);
+        Artist a1 = (Artist) Cayenne.objectForQuery(env.context(), query);
         assertNull(a1.getDateOfBirth());
         assertEquals("X", a1.getArtistName());
     }
@@ -67,12 +67,12 @@ public class DataContextObjectIdQueryIT  {
     @Test
     public void noRefreshValuesNew() {
 
-        Artist a = env.dataContext().newObject(Artist.class);
+        Artist a = env.context().newObject(Artist.class);
         a.setArtistName("X");
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        env.dataContext().performGenericQuery(new SQLTemplate(
+        env.context().performGenericQuery(new SQLTemplate(
                 Artist.class,
                 "UPDATE ARTIST SET ARTIST_NAME = 'Y'"));
 
@@ -82,7 +82,7 @@ public class DataContextObjectIdQueryIT  {
                 Artist.ARTIST_ID_PK_COLUMN,
                 id), false, ObjectIdQuery.CACHE);
 
-        Artist a1 = (Artist) Cayenne.objectForQuery(env.dataContext(), query);
+        Artist a1 = (Artist) Cayenne.objectForQuery(env.context(), query);
         assertEquals("X", a1.getArtistName());
     }
 
@@ -94,13 +94,13 @@ public class DataContextObjectIdQueryIT  {
                 "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME, DATE_OF_BIRTH) VALUES (44, 'X', #bind($date 'DATE'))");
         insert.setParameters(Collections.singletonMap("date", new Date()));
 
-        env.dataContext().performGenericQuery(insert);
+        env.context().performGenericQuery(insert);
 
-        Artist a = Cayenne.objectForPK(env.dataContext(), Artist.class, 44L);
+        Artist a = Cayenne.objectForPK(env.context(), Artist.class, 44L);
         assertNotNull(a.getDateOfBirth());
         assertEquals("X", a.getArtistName());
 
-        env.dataContext().performGenericQuery(new SQLTemplate(
+        env.context().performGenericQuery(new SQLTemplate(
                 Artist.class,
                 "UPDATE ARTIST SET DATE_OF_BIRTH = NULL"));
 
@@ -109,7 +109,7 @@ public class DataContextObjectIdQueryIT  {
                 Artist.ARTIST_ID_PK_COLUMN,
                 44L), false, ObjectIdQuery.CACHE_REFRESH);
 
-        Artist a1 = (Artist) Cayenne.objectForQuery(env.dataContext(), query);
+        Artist a1 = (Artist) Cayenne.objectForQuery(env.context(), query);
         assertNull(a1.getDateOfBirth());
         assertEquals("X", a1.getArtistName());
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java
index 1e5124ea3..1eadedf2d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectIdQuery_PolymorphicIT.java
@@ -49,7 +49,7 @@ public class DataContextObjectIdQuery_PolymorphicIT extends PeopleProjectCase {
 
 	@BeforeEach
 	public void before() {
-		context1 = env.dataContext();
+		context1 = env.context();
 		context2 = (DataContext) env.runtime().newContext();
 		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
 		tPerson = new TableHelper(dbHelper, "PERSON").setColumns("PERSON_ID", "NAME", "PERSON_TYPE")
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
index 17110d883..76691e299 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
@@ -65,7 +65,7 @@ public class DataContextObjectTrackingIT  {
     @BeforeEach
     public void setUp() throws Exception {
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
index 0940429e8..f57c6aa09 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOrderingIT.java
@@ -43,26 +43,26 @@ public class DataContextOrderingIT  {
 
         Calendar c = Calendar.getInstance();
 
-        Artist a1 = env.dataContext().newObject(Artist.class);
+        Artist a1 = env.context().newObject(Artist.class);
         a1.setArtistName("2");
         a1.setDateOfBirth(c.getTime());
 
         c.add(Calendar.DAY_OF_MONTH, -1);
-        Artist a2 = env.dataContext().newObject(Artist.class);
+        Artist a2 = env.context().newObject(Artist.class);
         a2.setArtistName("3");
         a2.setDateOfBirth(c.getTime());
 
         c.add(Calendar.DAY_OF_MONTH, -1);
-        Artist a3 = env.dataContext().newObject(Artist.class);
+        Artist a3 = env.context().newObject(Artist.class);
         a3.setArtistName("3");
         a3.setDateOfBirth(c.getTime());
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .orderBy(Artist.ARTIST_NAME.desc(), Artist.DATE_OF_BIRTH.desc());
 
-        List<Artist> list = query.select(env.dataContext());
+        List<Artist> list = query.select(env.context());
         assertEquals(3, list.size());
         assertSame(a2, list.get(0));
         assertSame(a3, list.get(1));
@@ -74,38 +74,38 @@ public class DataContextOrderingIT  {
 
         Calendar c = Calendar.getInstance();
 
-        Artist a1 = env.dataContext().newObject(Artist.class);
+        Artist a1 = env.context().newObject(Artist.class);
         a1.setArtistName("2");
         a1.setDateOfBirth(c.getTime());
 
         c.add(Calendar.DAY_OF_MONTH, -1);
-        Artist a2 = env.dataContext().newObject(Artist.class);
+        Artist a2 = env.context().newObject(Artist.class);
         a2.setArtistName("3");
         a2.setDateOfBirth(c.getTime());
 
         c.add(Calendar.DAY_OF_MONTH, -1);
-        Artist a3 = env.dataContext().newObject(Artist.class);
+        Artist a3 = env.context().newObject(Artist.class);
         a3.setArtistName("3");
         a3.setDateOfBirth(c.getTime());
 
-        Painting p1 = env.dataContext().newObject(Painting.class);
+        Painting p1 = env.context().newObject(Painting.class);
         p1.setEstimatedPrice(new BigDecimal(1));
         p1.setPaintingTitle("Y");
         a1.addToPaintingArray(p1);
 
-        Painting p2 = env.dataContext().newObject(Painting.class);
+        Painting p2 = env.context().newObject(Painting.class);
         p2.setEstimatedPrice(new BigDecimal(2));
         p2.setPaintingTitle("X");
         a2.addToPaintingArray(p2);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ObjectSelect<Artist> query1 = ObjectSelect.query(Artist.class)
                 // per CAY-1074, adding a to-many join to expression messes up the ordering
                 .and(Artist.PAINTING_ARRAY.ne((List<Painting>) null))
                 .orderBy(Artist.ARTIST_NAME.desc(), (Artist.DATE_OF_BIRTH.desc()));
 
-        List<Artist> list1 = query1.select(env.dataContext());
+        List<Artist> list1 = query1.select(env.context());
         assertEquals(2, list1.size());
     }
 
@@ -113,26 +113,26 @@ public class DataContextOrderingIT  {
     public void customPropertySort() throws Exception {
         Calendar c = Calendar.getInstance();
 
-        Artist a1 = env.dataContext().newObject(Artist.class);
+        Artist a1 = env.context().newObject(Artist.class);
         a1.setArtistName("31");
         a1.setDateOfBirth(c.getTime());
 
         c.add(Calendar.DAY_OF_MONTH, -1);
-        Artist a2 = env.dataContext().newObject(Artist.class);
+        Artist a2 = env.context().newObject(Artist.class);
         a2.setArtistName("22");
         a2.setDateOfBirth(c.getTime());
 
         c.add(Calendar.DAY_OF_MONTH, -1);
-        Artist a3 = env.dataContext().newObject(Artist.class);
+        Artist a3 = env.context().newObject(Artist.class);
         a3.setArtistName("13");
         a3.setDateOfBirth(c.getTime());
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .orderBy(Artist.ARTIST_NAME.substring(2, 1).desc());
 
-        List<Artist> list = query.select(env.dataContext());
+        List<Artist> list = query.select(env.context());
         assertEquals(3, list.size());
         assertSame(a3, list.get(0));
         assertSame(a2, list.get(1));
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
index 15229a562..0070fff38 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextOuterJoinsIT.java
@@ -17,9 +17,9 @@
  *  under the License.
  ****************************************************************/
 package org.apache.cayenne.access;
+
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
@@ -27,8 +27,8 @@ import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
 import org.apache.cayenne.unit.di.runtime.DBCleaner;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.extension.RegisterExtension;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
 import java.sql.Types;
 import java.util.List;
@@ -37,126 +37,121 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class DataContextOuterJoinsIT {
 
-	@RegisterExtension
-	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
-
-	protected DBHelper dbHelper;
-
-	protected TableHelper artistHelper;
-	protected TableHelper paintingHelper;
-	protected TableHelper artgroupHelper;
-	protected TableHelper artistGroupHelper;
-
-	@BeforeEach
-	public void cleanUpDB() throws Exception {
-		dbHelper = env.dbHelper();
-		dbHelper.update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
-		env.getInstance(DBCleaner.class).clean();
-	}
-
-	@BeforeEach
-	public void setUp() throws Exception {
-		artistHelper = new TableHelper(dbHelper, "ARTIST", "ARTIST_ID", "ARTIST_NAME");
-		paintingHelper = new TableHelper(dbHelper, "PAINTING", "PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE")
-				.setColumnTypes(Types.INTEGER, Types.BIGINT, Types.VARCHAR);
-
-		artgroupHelper = new TableHelper(dbHelper, "ARTGROUP", "GROUP_ID", "NAME");
-		artistGroupHelper = new TableHelper(dbHelper, "ARTIST_GROUP", "GROUP_ID", "ARTIST_ID");
-	}
-
-	@Test
-	public void selectWithOuterJoinFlattened() throws Exception {
-
-		artistHelper.insert(33001, "AA1");
-		artistHelper.insert(33002, "AA2");
-		artistHelper.insert(33003, "BB1");
-		artistHelper.insert(33004, "BB2");
-
-		artgroupHelper.insert(1, "G1");
-
-		artistGroupHelper.insert(1, 33001);
-		artistGroupHelper.insert(1, 33002);
-		artistGroupHelper.insert(1, 33004);
-
-		List<Artist> artists = ObjectSelect.query(Artist.class)
-				.where(Artist.GROUP_ARRAY.outer().isNull())
-				.orderBy(Artist.ARTIST_NAME.asc())
-				.select(env.context());
-		assertEquals(1, artists.size());
-		assertEquals("BB1", artists.get(0).getArtistName());
-	}
-
-	@Test
-	public void selectWithOuterJoin() throws Exception {
-
-		artistHelper.insert(33001, "AA1");
-		artistHelper.insert(33002, "AA2");
-		artistHelper.insert(33003, "BB1");
-		artistHelper.insert(33004, "BB2");
-
-		paintingHelper.insert(33001, 33001, "P1");
-		paintingHelper.insert(33002, 33002, "P2");
-
-		List<Artist> artists = ObjectSelect.query(Artist.class)
-				.where(Artist.PAINTING_ARRAY.outer().isNull())
-				.orderBy(Artist.ARTIST_NAME.asc())
-				.select(env.context());
-		assertEquals(2, artists.size());
-		assertEquals("BB1", artists.get(0).getArtistName());
-
-		artists = ObjectSelect.query(Artist.class)
-				.where(Artist.PAINTING_ARRAY.outer().isNull())
-				.or(Artist.ARTIST_NAME.eq("AA1"))
-				.orderBy(Artist.ARTIST_NAME.asc())
-				.select(env.context());
-		assertEquals(3, artists.size());
-		assertEquals("AA1", artists.get(0).getArtistName());
-		assertEquals("BB1", artists.get(1).getArtistName());
-		assertEquals("BB2", artists.get(2).getArtistName());
-	}
-
-	@Test
-	public void selectWithOuterJoinFromString() throws Exception {
-
-		artistHelper.insert(33001, "AA1");
-		artistHelper.insert(33002, "AA2");
-		artistHelper.insert(33003, "BB1");
-		artistHelper.insert(33004, "BB2");
-
-		paintingHelper.insert(33001, 33001, "P1");
-		paintingHelper.insert(33002, 33002, "P2");
-
-		List<Artist> artists = ObjectSelect.query(Artist.class)
-				.where(ExpressionFactory.exp("paintingArray+ = null"))
-				.orderBy(Artist.ARTIST_NAME.asc())
-				.select(env.context());
-		assertEquals(2, artists.size());
-		assertEquals("BB1", artists.get(0).getArtistName());
-
-		artists = ObjectSelect.query(Artist.class)
-				.where(ExpressionFactory.exp("paintingArray+ = null"))
-				.or(Artist.ARTIST_NAME.eq("AA1"))
-				.orderBy(Artist.ARTIST_NAME.asc())
-				.select(env.context());
-		assertEquals(3, artists.size());
-		assertEquals("AA1", artists.get(0).getArtistName());
-		assertEquals("BB1", artists.get(1).getArtistName());
-		assertEquals("BB2", artists.get(2).getArtistName());
-	}
-
-	@Test
-	public void selectWithOuterOrdering() throws Exception {
-
-		artistHelper.insert(33001, "AA1");
-		artistHelper.insert(33002, "AA2");
-
-		paintingHelper.insert(33001, 33001, "P1");
-		paintingHelper.insert(33002, 33002, "P2");
-		paintingHelper.insert(33003, null, "P3");
-
-		List<Painting> paintings = ObjectSelect.query(Painting.class)
-				.orderBy(Painting.TO_ARTIST.outer().dot(Artist.ARTIST_NAME).desc())
-				.select(env.context());
-		assertEquals(3, paintings.size());
-	}
+    @RegisterExtension
+    static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
+
+    protected TableHelper artistHelper;
+    protected TableHelper paintingHelper;
+    protected TableHelper artgroupHelper;
+    protected TableHelper artistGroupHelper;
+
+    @BeforeEach
+    public void cleanUpDB() throws Exception {
+        env.dbHelper().update("ARTGROUP").set("PARENT_GROUP_ID", null, Types.INTEGER).execute();
+        env.getInstance(DBCleaner.class).clean();
+
+        artistHelper = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
+        paintingHelper = env
+                .table("PAINTING", "PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE")
+                .setColumnTypes(Types.INTEGER, Types.BIGINT, Types.VARCHAR);
+
+        artgroupHelper = env.table("ARTGROUP", "GROUP_ID", "NAME");
+        artistGroupHelper = env.table("ARTIST_GROUP", "GROUP_ID", "ARTIST_ID");
+    }
+
+    @Test
+    public void selectWithOuterJoinFlattened() throws Exception {
+
+        artistHelper.insert(33001, "AA1");
+        artistHelper.insert(33002, "AA2");
+        artistHelper.insert(33003, "BB1");
+        artistHelper.insert(33004, "BB2");
+
+        artgroupHelper.insert(1, "G1");
+
+        artistGroupHelper.insert(1, 33001);
+        artistGroupHelper.insert(1, 33002);
+        artistGroupHelper.insert(1, 33004);
+
+        List<Artist> artists = ObjectSelect.query(Artist.class)
+                .where(Artist.GROUP_ARRAY.outer().isNull())
+                .orderBy(Artist.ARTIST_NAME.asc())
+                .select(env.context());
+        assertEquals(1, artists.size());
+        assertEquals("BB1", artists.get(0).getArtistName());
+    }
+
+    @Test
+    public void selectWithOuterJoin() throws Exception {
+
+        artistHelper.insert(33001, "AA1");
+        artistHelper.insert(33002, "AA2");
+        artistHelper.insert(33003, "BB1");
+        artistHelper.insert(33004, "BB2");
+
+        paintingHelper.insert(33001, 33001, "P1");
+        paintingHelper.insert(33002, 33002, "P2");
+
+        List<Artist> artists = ObjectSelect.query(Artist.class)
+                .where(Artist.PAINTING_ARRAY.outer().isNull())
+                .orderBy(Artist.ARTIST_NAME.asc())
+                .select(env.context());
+        assertEquals(2, artists.size());
+        assertEquals("BB1", artists.get(0).getArtistName());
+
+        artists = ObjectSelect.query(Artist.class)
+                .where(Artist.PAINTING_ARRAY.outer().isNull())
+                .or(Artist.ARTIST_NAME.eq("AA1"))
+                .orderBy(Artist.ARTIST_NAME.asc())
+                .select(env.context());
+        assertEquals(3, artists.size());
+        assertEquals("AA1", artists.get(0).getArtistName());
+        assertEquals("BB1", artists.get(1).getArtistName());
+        assertEquals("BB2", artists.get(2).getArtistName());
+    }
+
+    @Test
+    public void selectWithOuterJoinFromString() throws Exception {
+
+        artistHelper.insert(33001, "AA1");
+        artistHelper.insert(33002, "AA2");
+        artistHelper.insert(33003, "BB1");
+        artistHelper.insert(33004, "BB2");
+
+        paintingHelper.insert(33001, 33001, "P1");
+        paintingHelper.insert(33002, 33002, "P2");
+
+        List<Artist> artists = ObjectSelect.query(Artist.class)
+                .where(ExpressionFactory.exp("paintingArray+ = null"))
+                .orderBy(Artist.ARTIST_NAME.asc())
+                .select(env.context());
+        assertEquals(2, artists.size());
+        assertEquals("BB1", artists.get(0).getArtistName());
+
+        artists = ObjectSelect.query(Artist.class)
+                .where(ExpressionFactory.exp("paintingArray+ = null"))
+                .or(Artist.ARTIST_NAME.eq("AA1"))
+                .orderBy(Artist.ARTIST_NAME.asc())
+                .select(env.context());
+        assertEquals(3, artists.size());
+        assertEquals("AA1", artists.get(0).getArtistName());
+        assertEquals("BB1", artists.get(1).getArtistName());
+        assertEquals("BB2", artists.get(2).getArtistName());
+    }
+
+    @Test
+    public void selectWithOuterOrdering() throws Exception {
+
+        artistHelper.insert(33001, "AA1");
+        artistHelper.insert(33002, "AA2");
+
+        paintingHelper.insert(33001, 33001, "P1");
+        paintingHelper.insert(33002, 33002, "P2");
+        paintingHelper.insert(33003, null, "P3");
+
+        List<Painting> paintings = ObjectSelect.query(Painting.class)
+                .orderBy(Painting.TO_ARTIST.outer().dot(Artist.ARTIST_NAME).desc())
+                .select(env.context());
+        assertEquals(3, paintings.size());
+    }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
index c2038ef5d..4d91d3f90 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
@@ -46,7 +46,7 @@ public class DataContextPaginatedQueryIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
index 4e2b7ceab..19965f7fb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
@@ -68,7 +68,7 @@ public class DataContextPerformQueryAPIIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         context2 = (DataContext) env.runtime().newContext();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
index a55ac13bf..563521abf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
@@ -77,7 +77,7 @@ public class DataContextPrefetchIT  {
 	
 	@BeforeEach
 	public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
index 099e7fd08..748874fd1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
@@ -64,7 +64,7 @@ public class DataContextPrefetchMultistepIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
index 7b56584b4..5402d3d73 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
@@ -58,7 +58,7 @@ public class DataContextPrefetchQualifierOverlapIT  {
                 .and(Artist.PAINTING_ARRAY.dot(Painting.PAINTING_TITLE).like("AB%"))
                 .prefetch(Artist.PAINTING_ARRAY.disjoint());
 
-        List<Artist> result = query.select(env.dataContext());
+        List<Artist> result = query.select(env.context());
         assertEquals(1, result.size());
 
         Artist a = result.get(0);
@@ -73,7 +73,7 @@ public class DataContextPrefetchQualifierOverlapIT  {
                 .and(Artist.PAINTING_ARRAY.dot(Painting.PAINTING_TITLE).like("AB%"))
                 .prefetch(Artist.PAINTING_ARRAY.joint());
 
-        List<Artist> result = query.select(env.dataContext());
+        List<Artist> result = query.select(env.context());
         assertEquals(1, result.size());
 
         Artist a = result.get(0);
@@ -90,7 +90,7 @@ public class DataContextPrefetchQualifierOverlapIT  {
                 .or(Artist.ARTIST_NAME.like("A%"))
                 .orderBy(Artist.ARTIST_NAME.asc());
 
-        List<Artist> result = query.select(env.dataContext());
+        List<Artist> result = query.select(env.context());
         assertEquals(2, result.size());
 
         Artist a = result.get(0);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
index db0241885..a16d5cfee 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryIT.java
@@ -77,7 +77,7 @@ public class DataContextProcedureQueryIT  {
         BaseTransaction.bindThreadTransaction(t);
 
         try {
-            env.dataContext().performGenericQuery(q);
+            env.context().performGenericQuery(q);
         } finally {
             BaseTransaction.bindThreadTransaction(null);
             t.commit();
@@ -87,7 +87,7 @@ public class DataContextProcedureQueryIT  {
         ObjectSelect<Artist> select = ObjectSelect.query(Artist.class)
                 .prefetch("paintingArray", PrefetchTreeNode.UNDEFINED_SEMANTICS);
 
-        List<Artist> artists = select.select(env.dataContext());
+        List<Artist> artists = select.select(env.context());
         assertEquals(1, artists.size());
 
         Artist a = artists.get(0);
@@ -113,7 +113,7 @@ public class DataContextProcedureQueryIT  {
         BaseTransaction.bindThreadTransaction(t);
 
         try {
-            env.dataContext().performGenericQuery(q);
+            env.context().performGenericQuery(q);
         } finally {
             BaseTransaction.bindThreadTransaction(null);
             t.commit();
@@ -123,7 +123,7 @@ public class DataContextProcedureQueryIT  {
         ObjectSelect<Artist> select = ObjectSelect.query(Artist.class)
                 .prefetch("paintingArray", PrefetchTreeNode.UNDEFINED_SEMANTICS);
 
-        List<Artist> artists = select.select(env.dataContext());
+        List<Artist> artists = select.select(env.context());
         assertEquals(1, artists.size());
 
         Artist a = artists.get(0);
@@ -149,11 +149,11 @@ public class DataContextProcedureQueryIT  {
         assertNotNull(artists, "Null result from StoredProcedure.");
         assertEquals(1, artists.size());
         DataRow artistRow = (DataRow) artists.get(0);
-        Artist a = env.dataContext().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
+        Artist a = env.context().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
         Painting p = a.getPaintingArray().get(0);
 
         // invalidate painting, it may have been updated in the proc
-        env.dataContext().invalidateObjects(p);
+        env.context().invalidateObjects(p);
         assertEquals(2000, p.getEstimatedPrice().intValue());
     }
 
@@ -176,11 +176,11 @@ public class DataContextProcedureQueryIT  {
         assertNotNull(artists, "Null result from StoredProcedure.");
         assertEquals(1, artists.size());
         DataRow artistRow = (DataRow) artists.get(0);
-        Artist a = env.dataContext().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
+        Artist a = env.context().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
         Painting p = a.getPaintingArray().get(0);
 
         // invalidate painting, it may have been updated in the proc
-        env.dataContext().invalidateObjects(p);
+        env.context().invalidateObjects(p);
         assertEquals(2000, p.getEstimatedPrice().intValue());
     }
 
@@ -194,7 +194,7 @@ public class DataContextProcedureQueryIT  {
         createArtist(1000.0);
 
         // test ProcedureQuery with Procedure as root
-        Procedure proc = env.dataContext().getEntityResolver().getProcedure(SELECT_STORED_PROCEDURE);
+        Procedure proc = env.context().getEntityResolver().getProcedure(SELECT_STORED_PROCEDURE);
         ProcedureQuery q = new ProcedureQuery(proc);
         q.addParameter("aName", "An Artist");
         q.addParameter("paintingPrice", 3000);
@@ -205,11 +205,11 @@ public class DataContextProcedureQueryIT  {
         assertNotNull(artists, "Null result from StoredProcedure.");
         assertEquals(1, artists.size());
         DataRow artistRow = (DataRow) artists.get(0);
-        Artist a = env.dataContext().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
+        Artist a = env.context().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
         Painting p = a.getPaintingArray().get(0);
 
         // invalidate painting, it may have been updated in the proc
-        env.dataContext().invalidateObjects(p);
+        env.context().invalidateObjects(p);
         assertEquals(2000, p.getEstimatedPrice().intValue());
     }
 
@@ -327,7 +327,7 @@ public class DataContextProcedureQueryIT  {
         Painting p = a.getPaintingArray().get(0);
 
         // invalidate painting, it may have been updated in the proc
-        env.dataContext().invalidateObjects(p);
+        env.context().invalidateObjects(p);
         assertEquals(1101.01, p.getEstimatedPrice().doubleValue(), 0.02);
     }
 
@@ -342,7 +342,7 @@ public class DataContextProcedureQueryIT  {
         createArtist(1000.0);
 
         // test ProcedureQuery with Procedure as root
-        Procedure proc = env.dataContext().getEntityResolver().getProcedure(SELECT_STORED_PROCEDURE);
+        Procedure proc = env.context().getEntityResolver().getProcedure(SELECT_STORED_PROCEDURE);
         ProcedureQuery q = new ProcedureQuery(proc);
         q.setFetchingDataRows(true);
         q.addParameter("aName", "An Artist");
@@ -388,7 +388,7 @@ public class DataContextProcedureQueryIT  {
         BaseTransaction.bindThreadTransaction(t);
 
         try {
-            return env.dataContext().performQuery(q);
+            return env.context().performQuery(q);
         } finally {
             BaseTransaction.bindThreadTransaction(null);
             t.commit();
@@ -396,16 +396,16 @@ public class DataContextProcedureQueryIT  {
     }
 
     protected void createArtist(double paintingPrice) {
-        Artist a = env.dataContext().newObject(Artist.class);
+        Artist a = env.context().newObject(Artist.class);
         a.setArtistName("An Artist");
 
-        Painting p = env.dataContext().newObject(Painting.class);
+        Painting p = env.context().newObject(Painting.class);
         p.setPaintingTitle("A Painting");
         // converting double to string prevents rounding weirdness...
         p.setEstimatedPrice(new BigDecimal("" + paintingPrice));
         a.addToPaintingArray(p);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     /**
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
index eefdfb6d9..e1be00d08 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
@@ -64,7 +64,7 @@ public class DataContextQueryCachingIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING", "PAINTING_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
index bcd98247c..03186b549 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
@@ -40,15 +40,15 @@ public class DataContextQueryChainIT  {
 
     @Test
     public void selectQuery() {
-        Artist a1 = env.dataContext().newObject(Artist.class);
+        Artist a1 = env.context().newObject(Artist.class);
         a1.setArtistName("X");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         QueryChain chain = new QueryChain();
         chain.addQuery(ObjectSelect.query(Artist.class));
         chain.addQuery(ObjectSelect.query(Artist.class));
 
-        QueryResponse r = env.dataContext().performGenericQuery(chain);
+        QueryResponse r = env.context().performGenericQuery(chain);
 
         // data comes back as datarows
         assertEquals(2, r.size());
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
index 5d0afca59..741d41639 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
@@ -52,7 +52,7 @@ public class DataContextRefreshQueryIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING", "PAINTING_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
index 44e53b75c..ea7af20b6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
@@ -61,7 +61,7 @@ public class DataContextRefreshingIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
index 6d8172f65..a37b98c36 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
@@ -48,7 +48,7 @@ public class DataContextRelationshipQueryIT  {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
         tPainting = env.table("PAINTING", "PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID");
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java
index 085e1eff7..15af464cf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQuery_PolymorphicIT.java
@@ -47,7 +47,7 @@ public class DataContextRelationshipQuery_PolymorphicIT extends PeopleProjectCas
 
     @BeforeEach
     public void before() {
-        context1 = env.dataContext();
+        context1 = env.context();
         context2 = (DataContext) env.runtime().newContext();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tPerson = new TableHelper(dbHelper, "PERSON").setColumns("PERSON_ID", "NAME", "PERSON_TYPE")
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java
index 360e34197..9682ff706 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRollbackIT.java
@@ -43,18 +43,18 @@ public class DataContextRollbackIT  {
 
     @Test
     public void rollbackNew() {
-        Artist artist = (Artist) env.dataContext().newObject("Artist");
+        Artist artist = (Artist) env.context().newObject("Artist");
         artist.setArtistName("a");
 
-        Painting p1 = (Painting) env.dataContext().newObject("Painting");
+        Painting p1 = (Painting) env.context().newObject("Painting");
         p1.setPaintingTitle("p1");
         p1.setToArtist(artist);
 
-        Painting p2 = (Painting) env.dataContext().newObject("Painting");
+        Painting p2 = (Painting) env.context().newObject("Painting");
         p2.setPaintingTitle("p2");
         p2.setToArtist(artist);
 
-        Painting p3 = (Painting) env.dataContext().newObject("Painting");
+        Painting p3 = (Painting) env.context().newObject("Painting");
         p3.setPaintingTitle("p3");
         p3.setToArtist(artist);
 
@@ -62,7 +62,7 @@ public class DataContextRollbackIT  {
         assertEquals(artist, p1.getToArtist());
         assertEquals(3, artist.getPaintingArray().size());
 
-        env.dataContext().rollbackChanges();
+        env.context().rollbackChanges();
 
         // after:
         assertEquals(PersistenceState.TRANSIENT, artist.getPersistenceState());
@@ -71,18 +71,18 @@ public class DataContextRollbackIT  {
     @Test
     public void rollbackNewObject() {
         String artistName = "revertTestArtist";
-        Artist artist = (Artist) env.dataContext().newObject("Artist");
+        Artist artist = (Artist) env.context().newObject("Artist");
         artist.setArtistName(artistName);
 
-        env.dataContext().rollbackChanges();
+        env.context().rollbackChanges();
 
         assertEquals(PersistenceState.TRANSIENT, artist.getPersistenceState());
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         // The commit should have made no changes, so
         // perform a fetch to ensure that this artist hasn't been persisted to the db
 
         DataContext freshContext = (DataContext) env.runtime().newContext();
-        assertNotSame(env.dataContext(), freshContext);
+        assertNotSame(env.context(), freshContext);
 
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .where(Artist.ARTIST_NAME.eq(artistName));
@@ -98,23 +98,23 @@ public class DataContextRollbackIT  {
     public void rollbackWithMultipleNewObjects() {
         String artistName = "rollbackTestArtist";
         String paintingTitle = "rollbackTestPainting";
-        Artist artist = (Artist) env.dataContext().newObject("Artist");
+        Artist artist = (Artist) env.context().newObject("Artist");
         artist.setArtistName(artistName);
 
-        Painting painting = (Painting) env.dataContext().newObject("Painting");
+        Painting painting = (Painting) env.context().newObject("Painting");
         painting.setPaintingTitle(paintingTitle);
         painting.setToArtist(artist);
 
-        env.dataContext().rollbackChanges();
+        env.context().rollbackChanges();
 
         assertEquals(PersistenceState.TRANSIENT, artist.getPersistenceState());
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // The commit should have made no changes, so
         // perform a fetch to ensure that this artist hasn't been persisted to the db
 
         DataContext freshContext = (DataContext) env.runtime().newContext();
-        assertNotSame(env.dataContext(), freshContext);
+        assertNotSame(env.context(), freshContext);
 
         List<?> queryResults = ObjectSelect.query(Artist.class)
                 .where(Artist.ARTIST_NAME.eq(artistName))
@@ -127,16 +127,16 @@ public class DataContextRollbackIT  {
     public void rollbackRelationshipModification() {
         String artistName = "relationshipModArtist";
         String paintingTitle = "relationshipTestPainting";
-        Artist artist = (Artist) env.dataContext().newObject("Artist");
+        Artist artist = (Artist) env.context().newObject("Artist");
         artist.setArtistName(artistName);
-        Painting painting = (Painting) env.dataContext().newObject("Painting");
+        Painting painting = (Painting) env.context().newObject("Painting");
         painting.setPaintingTitle(paintingTitle);
         painting.setToArtist(artist);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         painting.setToArtist(null);
         assertEquals(0, artist.getPaintingArray().size());
-        env.dataContext().rollbackChanges();
+        env.context().rollbackChanges();
 
         assertTrue(((ValueHolder) artist.getPaintingArray()).isFault());
         assertEquals(1, artist.getPaintingArray().size());
@@ -144,10 +144,10 @@ public class DataContextRollbackIT  {
 
         // Check that the reverse relationship was handled
         assertEquals(1, artist.getPaintingArray().size());
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         DataContext freshContext = (DataContext) env.runtime().newContext();
-        assertNotSame(env.dataContext(), freshContext);
+        assertNotSame(env.context(), freshContext);
 
         List<?> queryResults = ObjectSelect.query(Painting.class)
                 .where(Painting.PAINTING_TITLE.eq(paintingTitle))
@@ -163,26 +163,26 @@ public class DataContextRollbackIT  {
     @Test
     public void rollbackDeletedObject() {
         String artistName = "deleteTestArtist";
-        Artist artist = (Artist) env.dataContext().newObject("Artist");
+        Artist artist = (Artist) env.context().newObject("Artist");
         artist.setArtistName(artistName);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        env.dataContext().deleteObjects(artist);
-        env.dataContext().rollbackChanges();
+        env.context().deleteObjects(artist);
+        env.context().rollbackChanges();
 
         // Now check everything is as it should be
         assertEquals(PersistenceState.HOLLOW, artist.getPersistenceState());
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         // The commit should have made no changes, so
         // perform a fetch to ensure that this artist hasn't been deleted from the db
 
         DataContext freshContext = (DataContext) env.runtime().newContext();
-        assertNotSame(env.dataContext(), freshContext);
+        assertNotSame(env.context(), freshContext);
 
         List<?> queryResults = ObjectSelect.query(Artist.class)
                 .where(Artist.ARTIST_NAME.eq(artistName))
-                .select(env.dataContext());
+                .select(env.context());
 
         assertEquals(1, queryResults.size());
     }
@@ -190,23 +190,23 @@ public class DataContextRollbackIT  {
     @Test
     public void rollbackModifiedObject() {
         String artistName = "initialTestArtist";
-        Artist artist = (Artist) env.dataContext().newObject("Artist");
+        Artist artist = (Artist) env.context().newObject("Artist");
         artist.setArtistName(artistName);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         artist.setArtistName("a new value");
 
-        env.dataContext().rollbackChanges();
+        env.context().rollbackChanges();
 
         // Make sure the inmemory changes have been rolled back
         assertEquals(artistName, artist.getArtistName());
 
         // Commit what's in memory...
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // .. and ensure that the correct data is in the db
         DataContext freshContext = (DataContext) env.runtime().newContext();
-        assertNotSame(env.dataContext(), freshContext);
+        assertNotSame(env.context(), freshContext);
 
         List<?> queryResults = ObjectSelect.query(Artist.class)
                 .where(Artist.ARTIST_NAME.eq(artistName))
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
index 91fdf6e64..5c1bcdb1b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
@@ -51,7 +51,7 @@ public class DataContextSQLTemplateCompoundIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tCompoundPkTest = env.table("COMPOUND_PK_TEST", "KEY1", "KEY2");
 
         tCompoundFkTest = env.table("COMPOUND_FK_TEST", "PKEY", "F_KEY1", "F_KEY2");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
index b4a1aef80..3a42871af 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
@@ -63,7 +63,7 @@ public class DataContextSQLTemplateIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		runtime = env.runtime();
-		context = env.dataContext();
+		context = env.context();
 		sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
index 00ad78c41..f6d7f9cb9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
@@ -61,7 +61,7 @@ public class DataContextSerializationIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         logger = env.getInstance(JdbcEventLogger.class);
         CayenneRuntime.bindThreadInjector(runtime.getInjector());
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
index 6f115b743..c1c882110 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheIT.java
@@ -62,7 +62,7 @@ public class DataContextSharedCacheIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         context1 = (DataContext) env.runtime().newContext();
         sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
         // prepare a single artist record
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java
index e0c1ba763..8fce8770f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextValidationIT.java
@@ -40,27 +40,27 @@ public class DataContextValidationIT {
 
     @Test
     public void validatingObjectsOnCommitProperty() throws Exception {
-        env.dataContext().setValidatingObjectsOnCommit(true);
-        assertTrue(env.dataContext().isValidatingObjectsOnCommit());
+        env.context().setValidatingObjectsOnCommit(true);
+        assertTrue(env.context().isValidatingObjectsOnCommit());
 
-        env.dataContext().setValidatingObjectsOnCommit(false);
-        assertFalse(env.dataContext().isValidatingObjectsOnCommit());
+        env.context().setValidatingObjectsOnCommit(false);
+        assertFalse(env.context().isValidatingObjectsOnCommit());
     }
 
     @Test
     public void validatingObjectsOnCommit() throws Exception {
         // test that validation is called properly
 
-        env.dataContext().setValidatingObjectsOnCommit(true);
-        Artist a1 = env.dataContext().newObject(Artist.class);
+        env.context().setValidatingObjectsOnCommit(true);
+        Artist a1 = env.context().newObject(Artist.class);
         a1.setArtistName("a1");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertTrue(a1.isValidateForSaveCalled());
 
-        env.dataContext().setValidatingObjectsOnCommit(false);
-        Artist a2 = env.dataContext().newObject(Artist.class);
+        env.context().setValidatingObjectsOnCommit(false);
+        Artist a2 = env.context().newObject(Artist.class);
         a2.setArtistName("a2");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         assertFalse(a2.isValidateForSaveCalled());
     }
 
@@ -75,18 +75,18 @@ public class DataContextValidationIT {
             p.setToArtist(a);
         };
 
-        env.dataContext().setValidatingObjectsOnCommit(true);
-        Artist a1 = env.dataContext().newObject(Artist.class);
+        env.context().setValidatingObjectsOnCommit(true);
+        Artist a1 = env.context().newObject(Artist.class);
         a1.setValidationDelegate(delegate);
         a1.setArtistName("a1");
 
         // add another artist to ensure that modifying context works when more than one
         // object is committed
-        Artist a2 = env.dataContext().newObject(Artist.class);
+        Artist a2 = env.context().newObject(Artist.class);
         a2.setValidationDelegate(delegate);
         a2.setArtistName("a2");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        assertEquals(2, ObjectSelect.query(Painting.class).select(env.dataContext()).size());
+        assertEquals(2, ObjectSelect.query(Painting.class).select(env.context()).size());
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
index 3806f801d..45578007c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataDomainQueryActionIT.java
@@ -52,7 +52,7 @@ public class DataDomainQueryActionIT {
 
         DataDomain domain = env.runtime().getDataDomain();
 
-        Painting p = env.dataContext().newObject(Painting.class);
+        Painting p = env.context().newObject(Painting.class);
         p.setPaintingTitle("sample");
 
         ObjectSelect<Painting> query = ObjectSelect.query(Painting.class)
@@ -81,7 +81,7 @@ public class DataDomainQueryActionIT {
             }
         };
 
-        DataDomainQueryAction action = new DataDomainQueryAction(env.dataContext(), domain, query);
+        DataDomainQueryAction action = new DataDomainQueryAction(env.context(), domain, query);
         action.execute();
 
         domain.queryCache = cache;
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
index 253e6d881..c7a45cf55 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
@@ -53,7 +53,7 @@ public class DataRowUtilsIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING", "PAINTING_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
index 5b7c97e31..1981cd939 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
@@ -53,7 +53,7 @@ public class DeleteObjectIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
         tPainting = env.table("PAINTING", "PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
index 043779d34..12a0a39c1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DeleteRulesIT.java
@@ -53,37 +53,37 @@ public class DeleteRulesIT {
     @Test
     public void denyToOne() {
 
-        DeleteRuleTest1 test1 = env.dataContext().newObject(DeleteRuleTest1.class);
-        DeleteRuleTest2 test2 = env.dataContext().newObject(DeleteRuleTest2.class);
+        DeleteRuleTest1 test1 = env.context().newObject(DeleteRuleTest1.class);
+        DeleteRuleTest2 test2 = env.context().newObject(DeleteRuleTest2.class);
         test1.setTest2(test2);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        assertThrows(Exception.class, () -> env.dataContext().deleteObjects(test1));
-        env.dataContext().commitChanges();
+        assertThrows(Exception.class, () -> env.context().deleteObjects(test1));
+        env.context().commitChanges();
 
     }
 
     @Test
     public void noActionToOne() {
-        DeleteRuleTest2 test2 = env.dataContext().newObject(DeleteRuleTest2.class);
-        DeleteRuleTest3 test3 = env.dataContext().newObject(DeleteRuleTest3.class);
+        DeleteRuleTest2 test2 = env.context().newObject(DeleteRuleTest2.class);
+        DeleteRuleTest3 test3 = env.context().newObject(DeleteRuleTest3.class);
         test3.setToDeleteRuleTest2(test2);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // must go on without exceptions...
-        env.dataContext().deleteObjects(test3);
-        env.dataContext().commitChanges();
+        env.context().deleteObjects(test3);
+        env.context().commitChanges();
     }
 
     @Test
     public void noActionToMany() {
-        DeleteRuleTest2 test2 = env.dataContext().newObject(DeleteRuleTest2.class);
-        DeleteRuleTest3 test3 = env.dataContext().newObject(DeleteRuleTest3.class);
+        DeleteRuleTest2 test2 = env.context().newObject(DeleteRuleTest2.class);
+        DeleteRuleTest3 test3 = env.context().newObject(DeleteRuleTest3.class);
         test3.setToDeleteRuleTest2(test2);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // must go on without exceptions...
-        env.dataContext().deleteObjects(test2);
+        env.context().deleteObjects(test2);
 
         // don't commit, since this will cause a constraint exception
     }
@@ -94,21 +94,21 @@ public class DeleteRulesIT {
         int oldRule = changeDeleteRule(DeleteRule.NO_ACTION);
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
 
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             // must go on without exceptions...
-            env.dataContext().deleteObjects(a);
+            env.context().deleteObjects(a);
 
             // assert that join is deleted
             assertJoinDeleted(a, b);
             assertEquals(PersistenceState.DELETED, a.getPersistenceState());
             assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
             assertTrue(b.getUntitledRel().contains(a));
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
         } finally {
             changeDeleteRule(oldRule);
@@ -122,20 +122,20 @@ public class DeleteRulesIT {
         ObjRelationship reverse = unsetReverse();
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
 
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             // must go on without exceptions...
-            env.dataContext().deleteObjects(a);
+            env.context().deleteObjects(a);
 
             // assert that join is deleted
             assertJoinDeleted(a, b);
             assertEquals(PersistenceState.DELETED, a.getPersistenceState());
             assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
         } finally {
             changeDeleteRule(oldRule);
             restoreReverse(reverse);
@@ -148,17 +148,17 @@ public class DeleteRulesIT {
         int oldRule = changeDeleteRule(DeleteRule.CASCADE);
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             // must go on without exceptions...
-            env.dataContext().deleteObjects(a);
+            env.context().deleteObjects(a);
 
             // assert that join is deleted
             assertJoinDeleted(a, b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             assertEquals(PersistenceState.TRANSIENT, a.getPersistenceState());
             assertEquals(PersistenceState.TRANSIENT, b.getPersistenceState());
@@ -174,17 +174,17 @@ public class DeleteRulesIT {
         ObjRelationship reverse = unsetReverse();
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             // must go on without exceptions...
-            env.dataContext().deleteObjects(a);
+            env.context().deleteObjects(a);
 
             // assert that join is deleted
             assertJoinDeleted(a, b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
             assertEquals(PersistenceState.TRANSIENT, a.getPersistenceState());
             assertEquals(PersistenceState.TRANSIENT, b.getPersistenceState());
         } finally {
@@ -199,20 +199,20 @@ public class DeleteRulesIT {
         int oldRule = changeDeleteRule(DeleteRule.NULLIFY);
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             // must go on without exceptions...
-            env.dataContext().deleteObjects(a);
+            env.context().deleteObjects(a);
 
             // assert that join is deleted
             assertJoinDeleted(a, b);
             assertEquals(PersistenceState.DELETED, a.getPersistenceState());
             assertEquals(PersistenceState.MODIFIED, b.getPersistenceState());
             assertFalse(b.getUntitledRel().contains(a));
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
         } finally {
             changeDeleteRule(oldRule);
         }
@@ -225,19 +225,19 @@ public class DeleteRulesIT {
         ObjRelationship reverse = unsetReverse();
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             // must go on without exceptions...
-            env.dataContext().deleteObjects(a);
+            env.context().deleteObjects(a);
 
             // assert that join is deleted
             assertJoinDeleted(a, b);
             assertEquals(PersistenceState.DELETED, a.getPersistenceState());
             assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
         } finally {
             changeDeleteRule(oldRule);
             restoreReverse(reverse);
@@ -250,12 +250,12 @@ public class DeleteRulesIT {
         int oldRule = changeDeleteRule(DeleteRule.DENY);
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            assertThrows(DeleteDenyException.class, () -> env.dataContext().deleteObjects(a));
+            assertThrows(DeleteDenyException.class, () -> env.context().deleteObjects(a));
             assertJoinNotDeleted(a, b);
         } finally {
             changeDeleteRule(oldRule);
@@ -269,12 +269,12 @@ public class DeleteRulesIT {
         ObjRelationship reverse = unsetReverse();
 
         try {
-            DeleteRuleFlatA a = env.dataContext().newObject(DeleteRuleFlatA.class);
-            DeleteRuleFlatB b = env.dataContext().newObject(DeleteRuleFlatB.class);
+            DeleteRuleFlatA a = env.context().newObject(DeleteRuleFlatA.class);
+            DeleteRuleFlatB b = env.context().newObject(DeleteRuleFlatB.class);
             a.addToFlatB(b);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            assertThrows(DeleteDenyException.class, () -> env.dataContext().deleteObjects(a));
+            assertThrows(DeleteDenyException.class, () -> env.context().deleteObjects(a));
             assertJoinNotDeleted(a, b);
         } finally {
             changeDeleteRule(oldRule);
@@ -283,7 +283,7 @@ public class DeleteRulesIT {
     }
 
     private int changeDeleteRule(int deleteRule) {
-        ObjEntity entity = env.dataContext().getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
+        ObjEntity entity = env.context().getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
 
         ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B.getName());
         int oldRule = relationship.getDeleteRule();
@@ -292,32 +292,32 @@ public class DeleteRulesIT {
     }
 
     private ObjRelationship unsetReverse() {
-        ObjEntity entity = env.dataContext().getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
+        ObjEntity entity = env.context().getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
 
         ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B.getName());
         ObjRelationship reverse = relationship.getReverseRelationship();
 
         if (reverse != null) {
             reverse.getSourceEntity().removeRelationship(reverse.getName());
-            env.dataContext().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatA");
-            env.dataContext().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatB");
+            env.context().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatA");
+            env.context().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatB");
         }
 
         return reverse;
     }
 
     private void restoreReverse(ObjRelationship reverse) {
-        ObjEntity entity = env.dataContext().getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
+        ObjEntity entity = env.context().getEntityResolver().getObjEntity(DeleteRuleFlatA.class);
 
         ObjRelationship relationship = entity.getRelationship(DeleteRuleFlatA.FLAT_B.getName());
         relationship.getTargetEntity().addRelationship(reverse);
-        env.dataContext().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatA");
-        env.dataContext().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatB");
+        env.context().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatA");
+        env.context().getEntityResolver().getClassDescriptorMap().removeDescriptor("DeleteRuleFlatB");
     }
 
     private void assertJoinDeleted(DeleteRuleFlatA a, DeleteRuleFlatB b) {
 
-        ObjectDiff changes = env.dataContext().getObjectStore().changes.get(a.getObjectId());
+        ObjectDiff changes = env.context().getObjectStore().changes.get(a.getObjectId());
 
         assertNotNull(changes);
         Collection<NodeDiff> diffs = new ArrayList<>();
@@ -338,7 +338,7 @@ public class DeleteRulesIT {
     }
 
     private void assertJoinNotDeleted(DeleteRuleFlatA a, DeleteRuleFlatB b) {
-        ObjectDiff changes = env.dataContext().getObjectStore().changes.get(a.getObjectId());
+        ObjectDiff changes = env.context().getObjectStore().changes.get(a.getObjectId());
 
         if (changes != null) {
             Collection<NodeDiff> diffs = new ArrayList<>();
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
index 7121731e7..0512c0b95 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EntityInheritanceIT.java
@@ -43,15 +43,15 @@ public class EntityInheritanceIT {
     @Disabled("This test fails")
     @Test
     public void cAY1008() {
-        RelatedEntity related = env.dataContext().newObject(RelatedEntity.class);
+        RelatedEntity related = env.context().newObject(RelatedEntity.class);
 
-        BaseEntity base = env.dataContext().newObject(BaseEntity.class);
+        BaseEntity base = env.context().newObject(BaseEntity.class);
         base.setToRelatedEntity(related);
 
         assertEquals(1, related.getBaseEntities().size());
         assertEquals(0, related.getSubEntities().size());
 
-        SubEntity sub = env.dataContext().newObject(SubEntity.class);
+        SubEntity sub = env.context().newObject(SubEntity.class);
         sub.setToRelatedEntity(related);
 
         assertEquals(2, related.getBaseEntities().size());
@@ -67,37 +67,37 @@ public class EntityInheritanceIT {
     @Test
     public void cAY1009() {
         // We should have only one relationship. DirectToSubEntity -> SubEntity.
-        assertEquals(1, env.dataContext()
+        assertEquals(1, env.context()
                 .getEntityResolver()
                 .getObjEntity("DirectToSubEntity")
                 .getRelationships()
                 .size());
 
-        DirectToSubEntity direct = env.dataContext().newObject(DirectToSubEntity.class);
+        DirectToSubEntity direct = env.context().newObject(DirectToSubEntity.class);
 
-        SubEntity sub = env.dataContext().newObject(SubEntity.class);
+        SubEntity sub = env.context().newObject(SubEntity.class);
         sub.setToDirectToSubEntity(direct);
 
         assertEquals(1, direct.getSubEntities().size());
 
-        env.dataContext().deleteObject(sub);
+        env.context().deleteObject(sub);
 
         assertEquals(0, direct.getSubEntities().size());
     }
 
     @Test
     public void cAY2091() {
-        RelatedEntity related = env.dataContext().newObject(RelatedEntity.class);
-        SubEntity subEntity = env.dataContext().newObject(SubEntity.class);
+        RelatedEntity related = env.context().newObject(RelatedEntity.class);
+        SubEntity subEntity = env.context().newObject(SubEntity.class);
         subEntity.setToRelatedEntity(related);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         int subEntityId = Cayenne.intPKForObject(subEntity);
 
-        BaseEntity forPkLoadedEntity = Cayenne.objectForPK(env.dataContext(), BaseEntity.class, subEntityId);
+        BaseEntity forPkLoadedEntity = Cayenne.objectForPK(env.context(), BaseEntity.class, subEntityId);
         assertEquals(forPkLoadedEntity.getClass(), SubEntity.class);
 
-        BaseEntity selectLoadedEntity = SelectById.query(BaseEntity.class, subEntityId).selectOne(env.dataContext());
+        BaseEntity selectLoadedEntity = SelectById.query(BaseEntity.class, subEntityId).selectOne(env.context());
         assertEquals(selectLoadedEntity.getClass(), SubEntity.class);
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
index 07cf98b0e..1fa645acf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
@@ -52,7 +52,7 @@ public class FlattenedRelationshipInContextIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tFlattenedTest1 = env.table("FLATTENED_TEST_1", "FT1_ID", "NAME");
 
         tFlattenedTest2 = env.table("FLATTENED_TEST_2", "FT2_ID", "FT1_ID", "NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java b/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java
index e061455fd..140ee586d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/IncrementalFaultListIT.java
@@ -40,7 +40,7 @@ public class IncrementalFaultListIT {
 		ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
 				.pageSize(10);
 
-		IncrementalFaultList<Artist> i1 = new IncrementalFaultList<Artist>(env.dataContext(), query, 10, List.of());
+		IncrementalFaultList<Artist> i1 = new IncrementalFaultList<Artist>(env.context(), query, 10, List.of());
 		IncrementalFaultList<Artist> i2 = Util.cloneViaSerialization(i1);
 
 		assertNotNull(i2);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java b/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
index e353310e7..8430dc5c2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
@@ -70,7 +70,7 @@ public class JointPrefetchIT {
     
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java
index 6674d642b..e4dab61ff 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextLocalCacheIT.java
@@ -43,19 +43,19 @@ public class NestedDataContextLocalCacheIT {
         ObjectSelect<Artist> query = ObjectSelect.query(Artist.class)
                 .cacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
 
-        ObjectContext child1 = env.runtime().newContext(env.dataContext());
+        ObjectContext child1 = env.runtime().newContext(env.context());
 
         assertNull(((DataContext) child1).getQueryCache().get(
                 query.getMetaData(child1.getEntityResolver())));
 
-        assertNull(env.dataContext().getQueryCache().get(
-                query.getMetaData(env.dataContext().getEntityResolver())));
+        assertNull(env.context().getQueryCache().get(
+                query.getMetaData(env.context().getEntityResolver())));
 
         List<?> results = child1.performQuery(query);
         assertSame(results, ((DataContext) child1).getQueryCache().get(
                 query.getMetaData(child1.getEntityResolver())));
 
-        assertNull(env.dataContext().getQueryCache().get(
-                query.getMetaData(env.dataContext().getEntityResolver())));
+        assertNull(env.context().getQueryCache().get(
+                query.getMetaData(env.context().getEntityResolver())));
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
index 0b1829969..478760fb2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentEventsIT.java
@@ -41,17 +41,17 @@ public class NestedDataContextParentEventsIT {
 
     @Test
     public void parentUpdatedId() throws Exception {
-        ObjectContext child1 = env.runtime().newContext(env.dataContext());
+        ObjectContext child1 = env.runtime().newContext(env.context());
 
         final Artist ac = child1.newObject(Artist.class);
         ac.setArtistName("X");
         child1.commitChangesToParent();
 
-        final Artist ap = (Artist) env.dataContext().getGraphManager().getNode(ac.getObjectId());
+        final Artist ap = (Artist) env.context().getGraphManager().getNode(ac.getObjectId());
         assertNotNull(ap);
 
         assertTrue(ap.getObjectId().isTemporary());
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         new ParallelTestContainer() {
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
index 7ee1b3f98..d29df49e8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextParentPeerEventsIT.java
@@ -50,7 +50,7 @@ public class NestedDataContextParentPeerEventsIT {
     @BeforeEach
     public void setUp() {
         runtime = env.runtime();
-        parentContext1 = env.dataContext();
+        parentContext1 = env.context();
         parentContext2 = (DataContext) env.runtime().newContext();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
index f29158061..73c24b38f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextPeerEventsIT.java
@@ -44,14 +44,14 @@ public class NestedDataContextPeerEventsIT {
     @Test
 	public void peerObjectUpdatedTempOID() throws Exception {
 
-		ObjectContext peer1 = env.runtime().newContext(env.dataContext());
+		ObjectContext peer1 = env.runtime().newContext(env.context());
 		final Artist a1 = peer1.newObject(Artist.class);
 		a1.setArtistName("Y");
 
 		ObjectId a1TempId = a1.getObjectId();
 		assertTrue(a1TempId.isTemporary());
 
-		ObjectContext peer2 = env.runtime().newContext(env.dataContext());
+		ObjectContext peer2 = env.runtime().newContext(env.context());
 		final Artist a2 = peer2.localObject(a1);
 
 		assertEquals(a1TempId, a2.getObjectId());
@@ -72,14 +72,14 @@ public class NestedDataContextPeerEventsIT {
 
     @Test
 	public void peerObjectUpdatedSimpleProperty() throws Exception {
-		Artist a = env.dataContext().newObject(Artist.class);
+		Artist a = env.context().newObject(Artist.class);
 		a.setArtistName("X");
-		env.dataContext().commitChanges();
+		env.context().commitChanges();
 
-		ObjectContext peer1 = env.runtime().newContext(env.dataContext());
+		ObjectContext peer1 = env.runtime().newContext(env.context());
 		Artist a1 = peer1.localObject(a);
 
-		final ObjectContext peer2 = env.runtime().newContext(env.dataContext());
+		final ObjectContext peer2 = env.runtime().newContext(env.context());
 		final Artist a2 = peer2.localObject(a);
 
 		a1.setArtistName("Y");
@@ -101,21 +101,21 @@ public class NestedDataContextPeerEventsIT {
     @Test
 	public void peerObjectUpdatedToOneRelationship() throws Exception {
 
-		Artist a = env.dataContext().newObject(Artist.class);
-		Artist altA = env.dataContext().newObject(Artist.class);
+		Artist a = env.context().newObject(Artist.class);
+		Artist altA = env.context().newObject(Artist.class);
 
-		Painting p = env.dataContext().newObject(Painting.class);
+		Painting p = env.context().newObject(Painting.class);
 		p.setToArtist(a);
 		p.setPaintingTitle("PPP");
 		a.setArtistName("X");
 		altA.setArtistName("Y");
-		env.dataContext().commitChanges();
+		env.context().commitChanges();
 
-		ObjectContext peer1 = env.runtime().newContext(env.dataContext());
+		ObjectContext peer1 = env.runtime().newContext(env.context());
 		Painting p1 = peer1.localObject(p);
 		Artist altA1 = peer1.localObject(altA);
 
-		final ObjectContext peer2 = env.runtime().newContext(env.dataContext());
+		final ObjectContext peer2 = env.runtime().newContext(env.context());
 		final Painting p2 = peer2.localObject(p);
 		final Artist altA2 = peer2.localObject(altA);
 		Artist a2 = peer2.localObject(a);
@@ -140,25 +140,25 @@ public class NestedDataContextPeerEventsIT {
     @Test
 	public void peerObjectUpdatedToManyRelationship() throws Exception {
 
-		Artist a = env.dataContext().newObject(Artist.class);
+		Artist a = env.context().newObject(Artist.class);
 		a.setArtistName("X");
 
-		Painting px = env.dataContext().newObject(Painting.class);
+		Painting px = env.context().newObject(Painting.class);
 		px.setToArtist(a);
 		px.setPaintingTitle("PX");
 
-		Painting py = env.dataContext().newObject(Painting.class);
+		Painting py = env.context().newObject(Painting.class);
 		py.setPaintingTitle("PY");
 
-		env.dataContext().commitChanges();
+		env.context().commitChanges();
 		// pause to let the context events propagate
 		Thread.sleep(500);
 
-		ObjectContext peer1 = env.runtime().newContext(env.dataContext());
+		ObjectContext peer1 = env.runtime().newContext(env.context());
 		Painting py1 = peer1.localObject(py);
 		Artist a1 = peer1.localObject(a);
 
-		final ObjectContext peer2 = env.runtime().newContext(env.dataContext());
+		final ObjectContext peer2 = env.runtime().newContext(env.context());
 		final Painting py2 = peer2.localObject(py);
 		final Artist a2 = peer2.localObject(a);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
index fe684d8f5..427d2202a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
@@ -58,7 +58,7 @@ public class NestedDataContextReadIT {
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java
index dbda70e79..fe252905c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextRollbackIT.java
@@ -35,37 +35,37 @@ public class NestedDataContextRollbackIT {
 
     @Test
     public void rollbackChanges() {
-        ObjectContext child1 = env.runtime().newContext(env.dataContext());
+        ObjectContext child1 = env.runtime().newContext(env.context());
 
-        assertFalse(env.dataContext().hasChanges());
+        assertFalse(env.context().hasChanges());
         assertFalse(child1.hasChanges());
 
-        env.dataContext().newObject(Artist.class);
+        env.context().newObject(Artist.class);
         child1.newObject(Artist.class);
 
-        assertTrue(env.dataContext().hasChanges());
+        assertTrue(env.context().hasChanges());
         assertTrue(child1.hasChanges());
 
         child1.rollbackChanges();
-        assertFalse(env.dataContext().hasChanges());
+        assertFalse(env.context().hasChanges());
         assertFalse(child1.hasChanges());
     }
 
     @Test
     public void rollbackChangesLocally() {
-        ObjectContext child1 = env.runtime().newContext(env.dataContext());
+        ObjectContext child1 = env.runtime().newContext(env.context());
 
-        assertFalse(env.dataContext().hasChanges());
+        assertFalse(env.context().hasChanges());
         assertFalse(child1.hasChanges());
 
-        env.dataContext().newObject(Artist.class);
+        env.context().newObject(Artist.class);
         child1.newObject(Artist.class);
 
-        assertTrue(env.dataContext().hasChanges());
+        assertTrue(env.context().hasChanges());
         assertTrue(child1.hasChanges());
 
         child1.rollbackChangesLocally();
-        assertTrue(env.dataContext().hasChanges());
+        assertTrue(env.context().hasChanges());
         assertFalse(child1.hasChanges());
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java
index e6dc8179a..4193a3c52 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextValidationIT.java
@@ -38,9 +38,9 @@ public class NestedDataContextValidationIT {
 
     @Test
     public void validateOnCommitToParent() {
-        env.dataContext().setValidatingObjectsOnCommit(true);
+        env.context().setValidatingObjectsOnCommit(true);
 
-        ObjectContext childContext = env.runtime().newContext(env.dataContext());
+        ObjectContext childContext = env.runtime().newContext(env.context());
         assertTrue(
                 ((DataContext) childContext).isValidatingObjectsOnCommit(),
                 "Child context must have inherited the validation flag from parent");
@@ -48,7 +48,7 @@ public class NestedDataContextValidationIT {
         Artist a1 = childContext.newObject(Artist.class);
         assertThrows(ValidationException.class, childContext::commitChangesToParent);
 
-        assertFalse(env.dataContext().hasChanges());
+        assertFalse(env.context().hasChanges());
 
         a1.setArtistName("T");
         childContext.commitChangesToParent();
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
index 97dfe7d64..e9ea7a1fe 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
@@ -61,7 +61,7 @@ public class NestedDataContextWriteIT {
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java
index 1ede88b51..28143e2d1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContext_DeadlockIT.java
@@ -47,7 +47,7 @@ public class NestedDataContext_DeadlockIT {
 
 	@BeforeEach
 	public void setUp() throws Exception {
-		parent = env.dataContext();
+		parent = env.context();
 		runtime = env.runtime();
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 	}
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
index 797a657d4..fc754d4bf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
@@ -68,7 +68,7 @@ public class NumericTypesIT {
 
     @BeforeEach
     public void before() {
-        context = env.dataContext();
+        context = env.context();
         context1 = (DataContext) env.runtime().newContext();
         runtime = env.runtime();
         commitStats.before();
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
index ca2dfd655..1cfea3fd5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
@@ -46,7 +46,7 @@ public class ObjectStoreDiffRetainingIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH")
                 .setColumnTypes(Types.BIGINT, Types.CHAR, Types.DATE);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
index 8af1f88d3..a3e37bc8c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreGCIT.java
@@ -40,7 +40,7 @@ public class ObjectStoreGCIT {
 
     @BeforeEach
     public void setUp() {
-        context = env.dataContext();
+        context = env.context();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java
index 38c61b9e6..3042f0309 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreIT.java
@@ -47,24 +47,24 @@ public class ObjectStoreIT {
     @Test
     public void registeredObjectsCount() throws Exception {
 
-        assertEquals(0, env.dataContext().getObjectStore().registeredObjectsCount());
+        assertEquals(0, env.context().getObjectStore().registeredObjectsCount());
 
         Persistent o1 = new MockPersistentObject();
         o1.setObjectId(ObjectId.of("T", "key1", "v1"));
-        env.dataContext().getObjectStore().registerNode(o1.getObjectId(), o1);
-        assertEquals(1, env.dataContext().getObjectStore().registeredObjectsCount());
+        env.context().getObjectStore().registerNode(o1.getObjectId(), o1);
+        assertEquals(1, env.context().getObjectStore().registeredObjectsCount());
 
         // test object with same id
         Persistent o2 = new MockPersistentObject();
         o2.setObjectId(ObjectId.of("T", "key1", "v1"));
-        env.dataContext().getObjectStore().registerNode(o2.getObjectId(), o2);
-        assertEquals(1, env.dataContext().getObjectStore().registeredObjectsCount());
+        env.context().getObjectStore().registerNode(o2.getObjectId(), o2);
+        assertEquals(1, env.context().getObjectStore().registeredObjectsCount());
 
         // test new object
         Persistent o3 = new MockPersistentObject();
         o3.setObjectId(ObjectId.of("T", "key3", "v3"));
-        env.dataContext().getObjectStore().registerNode(o3.getObjectId(), o3);
-        assertEquals(2, env.dataContext().getObjectStore().registeredObjectsCount());
+        env.context().getObjectStore().registerNode(o3.getObjectId(), o3);
+        assertEquals(2, env.context().getObjectStore().registeredObjectsCount());
     }
 
     @Test
@@ -74,36 +74,36 @@ public class ObjectStoreIT {
         row.put("ARTIST_ID", 1);
         row.put("ARTIST_NAME", "ArtistXYZ");
         row.put("DATE_OF_BIRTH", new Date());
-        Persistent object = env.dataContext().objectFromDataRow(Artist.class, row);
+        Persistent object = env.context().objectFromDataRow(Artist.class, row);
         ObjectId oid = object.getObjectId();
 
         // insert object into the ObjectStore
-        env.dataContext().getObjectStore().registerNode(oid, object);
-        assertSame(object, env.dataContext().getObjectStore().getNode(oid));
-        assertNotNull(env.dataContext().getObjectStore().getCachedSnapshot(oid));
+        env.context().getObjectStore().registerNode(oid, object);
+        assertSame(object, env.context().getObjectStore().getNode(oid));
+        assertNotNull(env.context().getObjectStore().getCachedSnapshot(oid));
 
-        env.dataContext().getObjectStore().objectsUnregistered(Collections.singletonList(object));
+        env.context().getObjectStore().objectsUnregistered(Collections.singletonList(object));
 
         assertEquals(oid, object.getObjectId());
-        assertNull(env.dataContext().getObjectStore().getNode(oid));
+        assertNull(env.context().getObjectStore().getNode(oid));
 
         // in the future this may not be the case
-        assertNull(env.dataContext().getObjectStore().getCachedSnapshot(oid));
+        assertNull(env.context().getObjectStore().getCachedSnapshot(oid));
     }
 
     @Test
     public void unregisterThenRegister() throws Exception {
 
         // Create a gallery.
-        Gallery g = env.dataContext().newObject(Gallery.class);
+        Gallery g = env.context().newObject(Gallery.class);
         g.setGalleryName("Test Gallery");
 
         // Create an artist in the same context.
-        Artist a = env.dataContext().newObject(Artist.class);
+        Artist a = env.context().newObject(Artist.class);
         a.setArtistName("Test Artist");
 
         // Create a painting in the same context.
-        Painting p = env.dataContext().newObject(Painting.class);
+        Painting p = env.context().newObject(Painting.class);
         p.setPaintingTitle("Test Painting");
 
         // Set the painting's gallery.
@@ -111,7 +111,7 @@ public class ObjectStoreIT {
         assertEquals(g, p.getToGallery());
 
         // Unregister the painting from the context.
-        env.dataContext().unregisterObjects(Collections.singletonList(p));
+        env.context().unregisterObjects(Collections.singletonList(p));
 
         // Make sure that even though the painting has been removed from the context's
         // object graph that the reference to the gallery is the same.
@@ -122,7 +122,7 @@ public class ObjectStoreIT {
         p.setToArtist(a);
 
         // Now commit the gallery, artist, & painting.
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // Check one last time that the painting's gallery is set to what we expect.
         assertEquals(g, p.getToGallery());
@@ -134,7 +134,7 @@ public class ObjectStoreIT {
         //
         // The full object graph is not being re-registered during auto-registration
         // with the context.
-        Painting newP = (Painting) Cayenne.objectForPK(env.dataContext(), p.getObjectId());
+        Painting newP = (Painting) Cayenne.objectForPK(env.context(), p.getObjectId());
         assertNotNull(newP.getToGallery());
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
index db6e32729..18aa72590 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
@@ -53,7 +53,7 @@ public class OptimisticLockingIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tSimpleLockingTest = env.table("SIMPLE_LOCKING_TEST").setColumns("LOCKING_TEST_ID", "NAME", "DESCRIPTION", "INT_COLUMN_NOTNULL")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.INTEGER);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java b/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
index 8d2197d9e..08c5d1906 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/PrefetchProcessorTreeBuilderIT.java
@@ -59,7 +59,7 @@ public class PrefetchProcessorTreeBuilderIT {
 
     @BeforeEach
     public void setUp() {
-        context = env.dataContext();
+        context = env.context();
         resolver = env.getInstance(EntityResolver.class);
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
index 6c6551824..f5f15f82e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
@@ -39,11 +39,11 @@ public class PrimitiveAttributesIT {
 
     @Test
     public void commit() {
-        PrimitivesTestEntity e = env.dataContext().newObject(PrimitivesTestEntity.class);
+        PrimitivesTestEntity e = env.context().newObject(PrimitivesTestEntity.class);
         e.setBooleanColumn(true);
         e.setIntColumn(88);
         e.setCharColumn('B');
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     @Test
@@ -54,7 +54,7 @@ public class PrimitiveAttributesIT {
                 .insert(3, true, Integer.MAX_VALUE, String.valueOf('Z'));
 
         List<PrimitivesTestEntity> result = ObjectSelect.query(PrimitivesTestEntity.class)
-                .orderBy(PrimitivesTestEntity.INT_COLUMN.asc()).select(env.dataContext());
+                .orderBy(PrimitivesTestEntity.INT_COLUMN.asc()).select(env.context());
         assertEquals(3, result.size());
         assertEquals(-100, result.get(0).getIntColumn());
         assertEquals('a', result.get(0).getCharColumn());
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
index c248db3bd..b2d2f9e94 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ReturnTypesMappingIT.java
@@ -57,13 +57,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void bigint() throws Exception {
         String columnName = "BIGINT_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Long bigintValue = 5326457654783454355L;
         test.setBigintColumn(bigintValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
@@ -77,15 +77,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void bigint2() throws Exception {
-       ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+       ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Long bigintValue = 5326457654783454355L;
         test.setBigintColumn(bigintValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Long columnValue = testRead.getBigintColumn();
         assertNotNull(columnValue);
         assertEquals(Long.class, columnValue.getClass());
@@ -96,15 +96,15 @@ public class ReturnTypesMappingIT {
     public void binary() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
             String columnName = "BINARY_COLUMN";
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] binaryValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setBinaryColumn(binaryValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
+            DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
             Object columnValue = testRead.get(columnName);
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -115,17 +115,17 @@ public class ReturnTypesMappingIT {
     @Test
     public void binary2() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] binaryValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setBinaryColumn(binaryValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             ReturnTypesMap2 testRead = ObjectSelect
                     .query(ReturnTypesMap2.class)
-                    .selectFirst(env.dataContext());
+                    .selectFirst(env.context());
             byte[] columnValue = testRead.getBinaryColumn();
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -136,13 +136,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void bit() throws Exception {
         String columnName = "BIT_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Boolean bitValue = true;
         test.setBitColumn(bitValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertTrue(Boolean.class.equals(columnValue.getClass())
@@ -153,15 +153,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void bit2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Boolean bitValue = true;
         test.setBitColumn(bitValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Boolean columnValue = testRead.getBitColumn();
         assertNotNull(columnValue);
         assertEquals(Boolean.class, columnValue.getClass());
@@ -175,15 +175,15 @@ public class ReturnTypesMappingIT {
 
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
             String columnName = "BLOB_COLUMN";
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] blobValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setBlobColumn(blobValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
+            DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
             Object columnValue = testRead.get(columnName);
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -194,17 +194,17 @@ public class ReturnTypesMappingIT {
     @Test
     public void blob2() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] blobValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setBlobColumn(blobValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             ReturnTypesMap2 testRead = ObjectSelect
                     .query(ReturnTypesMap2.class)
-                    .selectFirst(env.dataContext());
+                    .selectFirst(env.context());
             byte[] columnValue = testRead.getBlobColumn();
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -215,13 +215,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void booleanType() throws Exception {
         String columnName = "BOOLEAN_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Boolean booleanValue = true;
         test.setBooleanColumn(booleanValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertTrue(Boolean.class.equals(columnValue.getClass())
@@ -233,15 +233,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void booleanType2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Boolean booleanValue = true;
         test.setBooleanColumn(booleanValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Boolean columnValue = testRead.getBooleanColumn();
         assertNotNull(columnValue);
         assertEquals(Boolean.class, columnValue.getClass());
@@ -251,13 +251,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void charType() throws Exception {
         String columnName = "CHAR_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         String charValue = "Char string for tests!";
         test.setCharColumn(charValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -267,13 +267,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void nchar() throws Exception {
         String columnName = "NCHAR_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         String charValue = "درخت‌های جستجوی متوازن، نیازی ندارد که به صورت!";
         test.setNcharColumn(charValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -282,15 +282,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void charType2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         String charValue = "Char string for tests!";
         test.setCharColumn(charValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         String columnValue = testRead.getCharColumn();
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -301,7 +301,7 @@ public class ReturnTypesMappingIT {
     public void clob() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
             String columnName = "CLOB_COLUMN";
-            ReturnTypesMapLobs1 test = env.dataContext().newObject(ReturnTypesMapLobs1.class);
+            ReturnTypesMapLobs1 test = env.context().newObject(ReturnTypesMapLobs1.class);
 
             StringBuffer buffer = new StringBuffer();
             for (int i = 0; i < 10000; i++) {
@@ -309,9 +309,9 @@ public class ReturnTypesMappingIT {
             }
             String clobValue = buffer.toString();
             test.setClobColumn(clobValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesLobsMap1")).get(0);
+            DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesLobsMap1")).get(0);
             Object columnValue = testRead.get(columnName);
             if (columnValue == null && testRead.containsKey(columnName.toLowerCase())) {
                 columnValue = testRead.get(columnName.toLowerCase());
@@ -326,7 +326,7 @@ public class ReturnTypesMappingIT {
     public void nclob() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
             String columnName = "NCLOB_COLUMN";
-            ReturnTypesMapLobs1 test = env.dataContext().newObject(ReturnTypesMapLobs1.class);
+            ReturnTypesMapLobs1 test = env.context().newObject(ReturnTypesMapLobs1.class);
 
             StringBuilder buffer = new StringBuilder();
             for (int i = 0; i < 1000; i++) {
@@ -335,9 +335,9 @@ public class ReturnTypesMappingIT {
             }
             String clobValue = buffer.toString();
             test.setNclobColumn(clobValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesLobsMap1")).get(0);
+            DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesLobsMap1")).get(0);
             Object columnValue = testRead.get(columnName);
             if (columnValue == null && testRead.containsKey(columnName.toLowerCase())) {
                 columnValue = testRead.get(columnName.toLowerCase());
@@ -351,7 +351,7 @@ public class ReturnTypesMappingIT {
     @Test
     public void clob2() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
-            ReturnTypesMapLobs1 test = env.dataContext().newObject(ReturnTypesMapLobs1.class);
+            ReturnTypesMapLobs1 test = env.context().newObject(ReturnTypesMapLobs1.class);
 
             StringBuffer buffer = new StringBuffer();
             for (int i = 0; i < 10000; i++) {
@@ -359,11 +359,11 @@ public class ReturnTypesMappingIT {
             }
             String clobValue = buffer.toString();
             test.setClobColumn(clobValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             ReturnTypesMapLobs1 testRead = ObjectSelect
                     .query(ReturnTypesMapLobs1.class)
-                    .selectFirst(env.dataContext());
+                    .selectFirst(env.context());
             String columnValue = testRead.getClobColumn();
             assertNotNull(columnValue);
             assertEquals(String.class, columnValue.getClass());
@@ -374,16 +374,16 @@ public class ReturnTypesMappingIT {
     @Test
     public void date() throws Exception {
         String columnName = "DATE_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.set(2002, 1, 1);
         Date dateValue = cal.getTime();
         test.setDateColumn(dateValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(Date.class, columnValue.getClass());
@@ -392,18 +392,18 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void date2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.set(2002, 1, 1);
         Date dateValue = cal.getTime();
         test.setDateColumn(dateValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Date columnValue = testRead.getDateColumn();
         assertNotNull(columnValue);
         assertEquals(Date.class, columnValue.getClass());
@@ -413,13 +413,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void decimal() throws Exception {
         String columnName = "DECIMAL_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         BigDecimal decimalValue = new BigDecimal("578438.57843");
         test.setDecimalColumn(decimalValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(BigDecimal.class, columnValue.getClass());
@@ -428,15 +428,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void decimal2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         BigDecimal decimalValue = new BigDecimal("578438.57843");
         test.setDecimalColumn(decimalValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         BigDecimal columnValue = testRead.getDecimalColumn();
         assertNotNull(columnValue);
         assertEquals(BigDecimal.class, columnValue.getClass());
@@ -446,13 +446,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void doubleType() throws Exception {
         String columnName = "DOUBLE_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Double doubleValue = 3298.4349783d;
         test.setDoubleColumn(doubleValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
@@ -466,15 +466,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void doubleType2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Double doubleValue = 3298.4349783d;
         test.setDoubleColumn(doubleValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Double columnValue = testRead.getDoubleColumn();
         assertNotNull(columnValue);
         assertEquals(Double.class, columnValue.getClass());
@@ -484,13 +484,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void floatType() throws Exception {
         String columnName = "FLOAT_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Float floatValue = 375.437f;
         test.setFloatColumn(floatValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
@@ -504,15 +504,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void floatType2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Float floatValue = 375.437f;
         test.setFloatColumn(floatValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Float columnValue = testRead.getFloatColumn();
         assertNotNull(columnValue);
         assertEquals(Float.class, columnValue.getClass());
@@ -522,13 +522,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void integer() throws Exception {
         String columnName = "INTEGER_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Integer integerValue = 54235;
         test.setIntegerColumn(integerValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(Integer.class, columnValue.getClass());
@@ -537,15 +537,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void integer2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Integer integerValue = 54235;
         test.setIntegerColumn(integerValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Integer columnValue = testRead.getIntegerColumn();
         assertNotNull(columnValue);
         assertEquals(Integer.class, columnValue.getClass());
@@ -556,15 +556,15 @@ public class ReturnTypesMappingIT {
     public void longVarBinary() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
             String columnName = "LONGVARBINARY_COLUMN";
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] longvarbinaryValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setLongvarbinaryColumn(longvarbinaryValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
+            DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
             Object columnValue = testRead.get(columnName);
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -575,17 +575,17 @@ public class ReturnTypesMappingIT {
     @Test
     public void longVarBinary2() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] longvarbinaryValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setLongvarbinaryColumn(longvarbinaryValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             ReturnTypesMap2 testRead = ObjectSelect
                     .query(ReturnTypesMap2.class)
-                    .selectFirst(env.dataContext());
+                    .selectFirst(env.context());
             byte[] columnValue = testRead.getLongvarbinaryColumn();
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -596,7 +596,7 @@ public class ReturnTypesMappingIT {
     @Test
     public void longVarChar() throws Exception {
         String columnName = "LONGVARCHAR_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         StringBuffer buffer = new StringBuffer();
         for (int i = 0; i < 500; i++) {
@@ -604,9 +604,9 @@ public class ReturnTypesMappingIT {
         }
         String longvarcharValue = buffer.toString();
         test.setLongvarcharColumn(longvarcharValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -616,7 +616,7 @@ public class ReturnTypesMappingIT {
     @Test
     public void longNVarChar() throws Exception {
         String columnName = "LONGNVARCHAR_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         StringBuffer buffer = new StringBuffer();
         for (int i = 0; i < 500; i++) {
@@ -624,9 +624,9 @@ public class ReturnTypesMappingIT {
         }
         String longnvarcharValue = buffer.toString();
         test.setLongnvarcharColumn(longnvarcharValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -635,7 +635,7 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void longVarChar2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         StringBuffer buffer = new StringBuffer();
         for (int i = 0; i < 500; i++) {
@@ -643,11 +643,11 @@ public class ReturnTypesMappingIT {
         }
         String longvarcharValue = buffer.toString();
         test.setLongvarcharColumn(longvarcharValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         String columnValue = testRead.getLongvarcharColumn();
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -657,13 +657,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void numeric() throws Exception {
         String columnName = "NUMERIC_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         BigDecimal numericValue = new BigDecimal("578438.57843");
         test.setNumericColumn(numericValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(BigDecimal.class, columnValue.getClass());
@@ -672,15 +672,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void numeric2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         BigDecimal numericValue = new BigDecimal("578438.57843");
         test.setNumericColumn(numericValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         BigDecimal columnValue = testRead.getNumericColumn();
         assertNotNull(columnValue);
         assertEquals(BigDecimal.class, columnValue.getClass());
@@ -690,13 +690,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void real() throws Exception {
         String columnName = "REAL_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Float realValue = 5788.57843f;
         test.setRealColumn(realValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
 
@@ -717,15 +717,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void real2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Float realValue = 5788.57843f;
         test.setRealColumn(realValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Float columnValue = testRead.getRealColumn();
         assertNotNull(columnValue);
         assertEquals(Float.class, columnValue.getClass());
@@ -735,14 +735,14 @@ public class ReturnTypesMappingIT {
     @Test
     public void smallint() throws Exception {
         String columnName = "SMALLINT_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Short smallintValue = 32564;
         Integer intValue = 32564;
         test.setSmallintColumn(smallintValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
@@ -756,15 +756,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void smallint2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Short smallintValue = 32564;
         test.setSmallintColumn(smallintValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Short columnValue = testRead.getSmallintColumn();
         assertNotNull(columnValue);
         assertEquals(Short.class, columnValue.getClass());
@@ -774,16 +774,16 @@ public class ReturnTypesMappingIT {
     @Test
     public void time() throws Exception {
         String columnName = "TIME_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.set(2003, Calendar.FEBRUARY, 1, 1, 20, 30);
         Date timeValue = new Time(cal.getTime().getTime());
         test.setTimeColumn(timeValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(Date.class, columnValue.getClass());
@@ -793,18 +793,18 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void time2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.set(2003, Calendar.FEBRUARY, 1, 1, 20, 30);
         Date timeValue = new Time(cal.getTime().getTime());
         test.setTimeColumn(timeValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead =ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectOne(env.dataContext());
+                .selectOne(env.context());
         Date columnValue = testRead.getTimeColumn();
         assertNotNull(columnValue);
         assertEquals(Date.class, columnValue.getClass());
@@ -814,13 +814,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void timestamp() throws Exception {
         String columnName = "TIMESTAMP_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Date timestampValue = Calendar.getInstance().getTime();
         test.setTimestampColumn(timestampValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(Date.class, columnValue.getClass());
@@ -833,15 +833,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void timestamp2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Date timestampValue = Calendar.getInstance().getTime();
         test.setTimestampColumn(timestampValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Date columnValue = testRead.getTimestampColumn();
         assertNotNull(columnValue);
         assertEquals(Date.class, columnValue.getClass());
@@ -854,14 +854,14 @@ public class ReturnTypesMappingIT {
     @Test
     public void tinyint() throws Exception {
         String columnName = "TINYINT_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Byte tinyintValue = 89;
         Integer intValue = 89;
         test.setTinyintColumn(tinyintValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         if(env.getInstance(UnitDbAdapter.class).onlyGenericNumberType()) {
@@ -874,15 +874,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void tinyint2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         Byte tinyintValue = 89;
         test.setTinyintColumn(tinyintValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         Byte columnValue = testRead.getTinyintColumn();
         assertNotNull(columnValue);
         assertEquals(Byte.class, columnValue.getClass());
@@ -893,15 +893,15 @@ public class ReturnTypesMappingIT {
     public void varBinary() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
             String columnName = "VARBINARY_COLUMN";
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] varbinaryValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setVarbinaryColumn(varbinaryValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
-            DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
+            DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap2")).get(0);
             Object columnValue = testRead.get(columnName);
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -912,17 +912,17 @@ public class ReturnTypesMappingIT {
     @Test
     public void varBinary2() throws Exception {
         if (env.getInstance(UnitDbAdapter.class).supportsLobs()) {
-            ReturnTypesMap2 test = env.dataContext().newObject(ReturnTypesMap2.class);
+            ReturnTypesMap2 test = env.context().newObject(ReturnTypesMap2.class);
 
             byte[] varbinaryValue = {
                     3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
             };
             test.setVarbinaryColumn(varbinaryValue);
-            env.dataContext().commitChanges();
+            env.context().commitChanges();
 
             ReturnTypesMap2 testRead = ObjectSelect
                     .query(ReturnTypesMap2.class)
-                    .selectFirst(env.dataContext());
+                    .selectFirst(env.context());
             byte[] columnValue = testRead.getVarbinaryColumn();
             assertNotNull(columnValue);
             assertEquals(byte[].class, columnValue.getClass());
@@ -933,13 +933,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void varChar() throws Exception {
         String columnName = "VARCHAR_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         String varcharValue = "VARChar string for tests!";
         test.setVarcharColumn(varcharValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -949,13 +949,13 @@ public class ReturnTypesMappingIT {
     @Test
     public void nVarChar() throws Exception {
         String columnName = "NVARCHAR_COLUMN";
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         String varcharValue = "ی متوازن، نیازی ندارد که ب";
         test.setNvarcharColumn(varcharValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectReturnTypesMap1")).get(0);
         Object columnValue = testRead.get(columnName);
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
@@ -964,15 +964,15 @@ public class ReturnTypesMappingIT {
 
     @Test
     public void varChar2() throws Exception {
-        ReturnTypesMap1 test = env.dataContext().newObject(ReturnTypesMap1.class);
+        ReturnTypesMap1 test = env.context().newObject(ReturnTypesMap1.class);
 
         String varcharValue = "VARChar string for tests!";
         test.setVarcharColumn(varcharValue);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         ReturnTypesMap1 testRead = ObjectSelect
                 .query(ReturnTypesMap1.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         String columnValue = testRead.getVarcharColumn();
         assertNotNull(columnValue);
         assertEquals(String.class, columnValue.getClass());
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
index 60f0a1275..d40f53813 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
@@ -52,7 +52,7 @@ public class SimpleIdIncrementalFaultListDataRowsIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         context1 = (DataContext) env.runtime().newContext();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
         createArtistsDataSet();
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
index 94d21db68..f8d942b1c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
@@ -47,7 +47,7 @@ public class SimpleIdIncrementalFaultListIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
index 950376c84..fca64b1b6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SingleTableInheritanceIT.java
@@ -61,7 +61,7 @@ public class SingleTableInheritanceIT extends PeopleProjectCase {
 
     @BeforeEach
 	public void setUp() {
-    	context = env.dataContext();
+    	context = env.context();
     	context2 = (DataContext) env.runtime().newContext();
     	queryBlocker = env.getInstance(DataChannelInterceptor.class);
 		tAddress = new TableHelper(dbHelper, "ADDRESS", "ADDRESS_ID", "CITY", "PERSON_ID");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java b/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java
index 558bc051c..fa2738d09 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ToManyListIT.java
@@ -41,14 +41,14 @@ public class ToManyListIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private ToManyList createForNewArtist() {
-        Artist artist = env.dataContext().newObject(Artist.class);
+        Artist artist = env.context().newObject(Artist.class);
         return new ToManyList(artist, Artist.PAINTING_ARRAY.getName());
     }
 
     private ToManyList createForExistingArtist() {
-        Artist artist = env.dataContext().newObject(Artist.class);
+        Artist artist = env.context().newObject(Artist.class);
         artist.setArtistName("aa");
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
         return new ToManyList(artist, Artist.PAINTING_ARRAY.getName());
     }
 
@@ -58,11 +58,11 @@ public class ToManyListIT {
         assertFalse(list.isFault(), "Expected resolved list when created with a new object");
         assertEquals(0, list.size());
 
-        Painting p1 = env.dataContext().newObject(Painting.class);
+        Painting p1 = env.context().newObject(Painting.class);
         list.add(p1);
         assertEquals(1, list.size());
 
-        Painting p2 = env.dataContext().newObject(Painting.class);
+        Painting p2 = env.context().newObject(Painting.class);
         list.add(p2);
         assertEquals(2, list.size());
 
@@ -80,12 +80,12 @@ public class ToManyListIT {
 
         assertTrue(list.isFault(), "List must be unresolved for an existing object");
 
-        Painting p1 = env.dataContext().newObject(Painting.class);
+        Painting p1 = env.context().newObject(Painting.class);
         list.add(p1);
         assertTrue(list.isFault(), "List must be unresolved when adding an object...");
         assertTrue(addedToUnresolved(list).contains(p1));
 
-        Painting p2 = env.dataContext().newObject(Painting.class);
+        Painting p2 = env.context().newObject(Painting.class);
         list.add(p2);
         assertTrue(list.isFault(), "List must be unresolved when adding an object...");
         assertTrue(addedToUnresolved(list).contains(p2));
@@ -105,14 +105,14 @@ public class ToManyListIT {
     public void savedUnresolvedMerge() throws Exception {
         ToManyList list = createForExistingArtist();
 
-        Painting p1 = env.dataContext().newObject(Painting.class);
+        Painting p1 = env.context().newObject(Painting.class);
         p1.setPaintingTitle("p1");
 
         // list being tested is a separate copy from
         // the relationship list that Artist has, so adding a painting
         // here will not add the painting to the array being tested
         ((Artist) list.getRelationshipOwner()).addToPaintingArray(p1);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // immediately tag Artist as MODIFIED, since we are messing up with relationship
         // bypassing normal PersistentObject methods
@@ -123,7 +123,7 @@ public class ToManyListIT {
         assertTrue(list.isFault(), "List must be unresolved when adding an object...");
         assertTrue(addedToUnresolved(list).contains(p1));
 
-        Painting p2 = env.dataContext().newObject(Painting.class);
+        Painting p2 = env.context().newObject(Painting.class);
         list.add(p2);
         assertTrue(list.isFault(), "List must be unresolved when adding an object...");
         assertTrue(addedToUnresolved(list).contains(p2));
@@ -140,9 +140,9 @@ public class ToManyListIT {
     public void throwOutDeleted() throws Exception {
         ToManyList list = createForExistingArtist();
 
-        Painting p1 = env.dataContext().newObject(Painting.class);
+        Painting p1 = env.context().newObject(Painting.class);
         p1.setPaintingTitle("p1");
-        Painting p2 = env.dataContext().newObject(Painting.class);
+        Painting p2 = env.context().newObject(Painting.class);
         p2.setPaintingTitle("p2");
 
         // list being tested is a separate copy from
@@ -150,7 +150,7 @@ public class ToManyListIT {
         // here will not add the painting to the array being tested
         ((Artist) list.getRelationshipOwner()).addToPaintingArray(p1);
         ((Artist) list.getRelationshipOwner()).addToPaintingArray(p2);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         // immediately tag Artist as MODIFIED, since we are messing up with relationship
         // bypassing normal PersistentObject methods
@@ -165,8 +165,8 @@ public class ToManyListIT {
 
         // now delete p2 and resolve list
         ((Artist) list.getRelationshipOwner()).removeFromPaintingArray(p2);
-        env.dataContext().deleteObjects(p2);
-        env.dataContext().commitChanges();
+        env.context().deleteObjects(p2);
+        env.context().commitChanges();
 
         assertTrue(list.isFault(), "List must be unresolved...");
         assertTrue(
@@ -185,26 +185,26 @@ public class ToManyListIT {
 
     @Test
     public void realRelationship() throws Exception {
-        Artist artist = env.dataContext().newObject(Artist.class);
+        Artist artist = env.context().newObject(Artist.class);
         artist.setArtistName("aaa");
 
-        Painting p1 = env.dataContext().newObject(Painting.class);
+        Painting p1 = env.context().newObject(Painting.class);
         p1.setPaintingTitle("p1");
 
-        env.dataContext().commitChanges();
-        env.dataContext().invalidateObjects(artist);
+        env.context().commitChanges();
+        env.context().invalidateObjects(artist);
 
         ToManyList list = (ToManyList) artist.getPaintingArray();
         assertTrue(list.isFault(), "List must be unresolved...");
 
-        Painting p2 = env.dataContext().newObject(Painting.class);
+        Painting p2 = env.context().newObject(Painting.class);
         p2.setPaintingTitle("p2");
 
         artist.addToPaintingArray(p1);
         artist.addToPaintingArray(p2);
         assertTrue(list.isFault(), "List must be unresolved...");
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         assertTrue(list.isFault(), "List must be unresolved...");
 
@@ -217,25 +217,25 @@ public class ToManyListIT {
 
     @Test
     public void realRelationshipRollback() throws Exception {
-        Artist artist = env.dataContext().newObject(Artist.class);
+        Artist artist = env.context().newObject(Artist.class);
         artist.setArtistName("aaa");
 
-        Painting p1 = env.dataContext().newObject(Painting.class);
+        Painting p1 = env.context().newObject(Painting.class);
         p1.setPaintingTitle("p1");
         artist.addToPaintingArray(p1);
-        env.dataContext().commitChanges();
-        env.dataContext().invalidateObjects(artist);
+        env.context().commitChanges();
+        env.context().invalidateObjects(artist);
 
         ToManyList list = (ToManyList) artist.getPaintingArray();
         assertTrue(list.isFault(), "List must be unresolved...");
 
-        Painting p2 = env.dataContext().newObject(Painting.class);
+        Painting p2 = env.context().newObject(Painting.class);
 
         artist.addToPaintingArray(p2);
         assertTrue(list.isFault(), "List must be unresolved...");
         assertTrue(addedToUnresolved(list).contains(p2));
 
-        env.dataContext().rollbackChanges();
+        env.context().rollbackChanges();
 
         assertTrue(list.isFault(), "List must be unresolved...");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
index 16a7b426f..68a85f5aa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionIT.java
@@ -48,7 +48,7 @@ public class SelectActionIT {
             List<ClobTestEntity> resultRows = ObjectSelect.query(ClobTestEntity.class)
                     .where(ClobTestEntity.CLOB_VALUE.dot(ClobTestRelation.VALUE).eq(100))
                     .limit(25)
-                    .select(env.dataContext());
+                    .select(env.context());
 
             assertNotNull(resultRows);
             assertEquals(25, resultRows.size());
@@ -64,7 +64,7 @@ public class SelectActionIT {
             List<String> result = ObjectSelect.query(ClobTestEntity.class)
                     .column(ClobTestEntity.CLOB_COL)
                     .where(ClobTestEntity.CLOB_VALUE.dot(ClobTestRelation.VALUE).eq(100))
-                    .select(env.dataContext());
+                    .select(env.context());
 
             // this should be 80, but we got only single values and we forcing distinct on them
             // so here will be only 21 elements that are unique
@@ -74,7 +74,7 @@ public class SelectActionIT {
 
     protected void insertClobDb() {
         for (int i = 0; i < 80; i++) {
-            ClobTestEntity obj = env.dataContext().newObject(ClobTestEntity.class);
+            ClobTestEntity obj = env.context().newObject(ClobTestEntity.class);
             if (i < 20) {
                 obj.setClobCol("a1" + i);
             } else {
@@ -82,12 +82,12 @@ public class SelectActionIT {
             }
             insertClobRel(obj);
         }
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     protected void insertClobRel(ClobTestEntity clobId) {
         for (int i = 0; i < 20; i++) {
-            ClobTestRelation obj = env.dataContext().newObject(ClobTestRelation.class);
+            ClobTestRelation obj = env.context().newObject(ClobTestRelation.class);
             obj.setValue(100);
             obj.setClobId(clobId);
         }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java
index a7aa6455f..be3b22c30 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SelectActionWithUnsupportedDistinctTypesIT.java
@@ -53,7 +53,7 @@ public class SelectActionWithUnsupportedDistinctTypesIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tProduct = env.table("PRODUCT", "ID", "LONGVARCHAR_COL");
 
         tCustomer = env.table("CUSTOMER", "ID", "LONGVARCHAR_COL");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
index b0fc01b88..518723787 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultObjectSelectTranslatorIT.java
@@ -38,7 +38,7 @@ public class DefaultObjectSelectTranslatorIT {
     @Test
     public void simpleSql() {
         ObjectSelect<Artist> select = ObjectSelect.query(Artist.class);
-        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.dataContext().getEntityResolver());
+        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.context().getEntityResolver());
 
         String sql = translator.getSql();
         assertTrue(sql.startsWith("SELECT "));
@@ -61,7 +61,7 @@ public class DefaultObjectSelectTranslatorIT {
         ObjectSelect<Artist> select = ObjectSelect.query(Artist.class, Artist.ARTIST_NAME.eq("artist")
                 .andExp(Artist.PAINTING_ARRAY.dot(Painting.PAINTING_TITLE).eq("painting")));
 
-        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.dataContext().getEntityResolver());
+        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.context().getEntityResolver());
 
         String sql = translator.getSql();
         assertTrue(sql.startsWith("SELECT DISTINCT"));
@@ -89,7 +89,7 @@ public class DefaultObjectSelectTranslatorIT {
     public void selectWithJointPrefetch() {
         ObjectSelect<Painting> select = ObjectSelect.query(Painting.class).prefetch(Painting.TO_ARTIST.joint());
 
-        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.dataContext().getEntityResolver());
+        DefaultSelectTranslator translator = new DefaultSelectTranslator(select, env.getInstance(DbAdapter.class), env.context().getEntityResolver());
 
         String sql = translator.getSql();
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
index 24e1c9a2f..5b41eef1a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslatorIT.java
@@ -83,8 +83,8 @@ public class DefaultSelectTranslatorIT {
 	public void dbEntityQualifier() throws Exception {
 
 		ObjectSelect<Artist> q = ObjectSelect.query(Artist.class);
-		final DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
-		final DbEntity middleEntity = env.dataContext().getEntityResolver().getDbEntity("ARTIST_GROUP");
+		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
+		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
 		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
 
@@ -118,8 +118,8 @@ public class DefaultSelectTranslatorIT {
 		ObjectSelect<Painting> q = ObjectSelect.query(Painting.class)
 				.orderBy(Painting.TO_ARTIST.outer().dot(Artist.ARTIST_NAME).asc());
 
-		final DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
-		final DbEntity middleEntity = env.dataContext().getEntityResolver().getDbEntity("ARTIST_GROUP");
+		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
+		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
 		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
 
@@ -157,8 +157,8 @@ public class DefaultSelectTranslatorIT {
 
 		ObjectSelect<Artist> q = ObjectSelect.query(Artist.class, Artist.GROUP_ARRAY.dot(ArtGroup.NAME).eq("bar"));
 
-		final DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
-		final DbEntity middleEntity = env.dataContext().getEntityResolver().getDbEntity("ARTIST_GROUP");
+		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
+		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
 		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
 
@@ -192,8 +192,8 @@ public class DefaultSelectTranslatorIT {
 
 		ObjectSelect<Painting> q = ObjectSelect.query(Painting.class, Painting.TO_ARTIST.dot(Artist.ARTIST_NAME).eq("foo"));
 
-		final DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
-		final DbEntity middleEntity = env.dataContext().getEntityResolver().getDbEntity("ARTIST_GROUP");
+		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
+		final DbEntity middleEntity = env.context().getEntityResolver().getDbEntity("ARTIST_GROUP");
 
 		SelectTranslator transl = new DefaultSelectTranslator(q, env.getInstance(DataNode.class).getAdapter(), env.getInstance(DataNode.class).getEntityResolver());
 
@@ -497,7 +497,7 @@ public class DefaultSelectTranslatorIT {
 		try {
 			ObjectSelect<Artist> q = ObjectSelect.query(Artist.class)
 					.orderBy(Artist.DATE_OF_BIRTH.asc());
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
 			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
@@ -522,7 +522,7 @@ public class DefaultSelectTranslatorIT {
 			assertTrue(dateOfBirth2 > iOrderBy);
 
 		} finally {
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(false);
 		}
 
@@ -536,7 +536,7 @@ public class DefaultSelectTranslatorIT {
 					.where(Artist.DATE_OF_BIRTH.gt(new Date()))
 					.and(Artist.DATE_OF_BIRTH.lt(new Date()));
 
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
 			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
@@ -567,7 +567,7 @@ public class DefaultSelectTranslatorIT {
 			assertTrue(dateOfBirth3 > iAnd);
 
 		} finally {
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(false);
 		}
 	}
@@ -582,7 +582,7 @@ public class DefaultSelectTranslatorIT {
 					.where(Artist.PAINTING_ARRAY.dot(Painting.PAINTING_TITLE).eq("a"))
 					.prefetch(Artist.PAINTING_ARRAY.joint());
 
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
 			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
@@ -646,7 +646,7 @@ public class DefaultSelectTranslatorIT {
 			assertTrue(paintingTitle2 > iWhere, s);
 
 		} finally {
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 			entity.getDataMap().setQuotingSQLIdentifiers(false);
 		}
 	}
@@ -659,7 +659,7 @@ public class DefaultSelectTranslatorIT {
 		try {
 			ObjectSelect<Painting> q = ObjectSelect.query(Painting.class).prefetch(Painting.TO_ARTIST.joint());
 
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("PAINTING");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("PAINTING");
 			entity.getDataMap().setQuotingSQLIdentifiers(true);
 
 			String charStart = env.getInstance(UnitDbAdapter.class).getIdentifiersStartQuote();
@@ -708,7 +708,7 @@ public class DefaultSelectTranslatorIT {
 			assertTrue(iArtistIdT1 > i || iArtistId > i, s);
 
 		} finally {
-			DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("PAINTING");
+			DbEntity entity = env.context().getEntityResolver().getDbEntity("PAINTING");
 			entity.getDataMap().setQuotingSQLIdentifiers(false);
 		}
 	}
@@ -726,7 +726,7 @@ public class DefaultSelectTranslatorIT {
 		List<ColumnDescriptor> columns = Arrays.asList(tr.getResultColumns());
 		columns.sort(Comparator.comparing(ColumnDescriptor::getName));
 
-		DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("PAINTING");
+		DbEntity entity = env.context().getEntityResolver().getDbEntity("PAINTING");
 		List<DbAttribute> attributes = new ArrayList<>(entity.getAttributes());
 		attributes.sort(Comparator.comparing(DbAttribute::getName));
 
@@ -756,9 +756,9 @@ public class DefaultSelectTranslatorIT {
 		List<ColumnDescriptor> columns = Arrays.asList(tr.getResultColumns());
 		columns.sort(Comparator.comparing(ColumnDescriptor::getName));
 
-		DbEntity rootEntity = env.dataContext().getEntityResolver().getDbEntity("PAINTING");
+		DbEntity rootEntity = env.context().getEntityResolver().getDbEntity("PAINTING");
 		List<DbAttribute> attributes = new ArrayList<>(rootEntity.getAttributes());
-		DbEntity joinedEntity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+		DbEntity joinedEntity = env.context().getEntityResolver().getDbEntity("ARTIST");
 		attributes.addAll(joinedEntity.getAttributes());
 		attributes.sort(Comparator.comparing(DbAttribute::getName));
 
@@ -783,10 +783,10 @@ public class DefaultSelectTranslatorIT {
 						ExpressionFactory.matchAllExp("|awardArray", 1, 2),
 						Artist.AWARD_ARRAY.alias("aw1").dot(Award.NAME).eq("123")
 				));
-		query.select(env.dataContext());
+		query.select(env.context());
 
 		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
-																		 env.dataContext().getEntityResolver());
+																		 env.context().getEntityResolver());
 		translator.translate();
 
 		int totalJoins = translator.getContext().getTableCount() - 1;
@@ -800,10 +800,10 @@ public class DefaultSelectTranslatorIT {
 						Artist.AWARD_ARRAY.alias("aw1").containsId(1),
 						Artist.AWARD_ARRAY.alias("aw2").dot(Award.NAME).eq("123")
 				));
-		query.select(env.dataContext());
+		query.select(env.context());
 
 		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
-																		 env.dataContext().getEntityResolver());
+																		 env.context().getEntityResolver());
 		translator.translate();
 
 		int totalJoins = translator.getContext().getTableCount() - 1;
@@ -817,10 +817,10 @@ public class DefaultSelectTranslatorIT {
 						Artist.AWARD_ARRAY.alias("aw1").containsId(1),
 						Artist.PAINTING_ARRAY.alias("aw2").dot(Painting.PAINTING_TITLE).eq("123")
 				));
-		query.select(env.dataContext());
+		query.select(env.context());
 
 		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
-																		 env.dataContext().getEntityResolver());
+																		 env.context().getEntityResolver());
 		translator.translate();
 
 		int totalJoins = translator.getContext().getTableCount() - 1;
@@ -833,10 +833,10 @@ public class DefaultSelectTranslatorIT {
 				.where(ExpressionFactory.and(
 						ExpressionFactory.matchAllExp("|groupArray.name", "ag1", "ag2")
 				));
-		query.select(env.dataContext());
+		query.select(env.context());
 
 		DefaultSelectTranslator translator = new DefaultSelectTranslator(query, env.getInstance(DataNode.class).getAdapter(),
-																		 env.dataContext().getEntityResolver());
+																		 env.context().getEntityResolver());
 		translator.translate();
 
 		int totalJoins = translator.getContext().getTableCount() - 1;
@@ -846,7 +846,7 @@ public class DefaultSelectTranslatorIT {
 	@Test
 	public void dbEntityQualifier_JoinQuery() throws Exception {
 
-		final DbEntity entity = env.dataContext().getEntityResolver().getDbEntity("ARTIST");
+		final DbEntity entity = env.context().getEntityResolver().getDbEntity("ARTIST");
 		entity.setQualifier(ExpressionFactory.exp("ARTIST_NAME = 'Should be on JOIN condition and not WHERE'"));
 
 		ObjectSelect<Painting> q = ObjectSelect.query(Painting.class)
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
index 24743724d..e74d13137 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/types/DateTimeTypesIT.java
@@ -56,13 +56,12 @@ public class DateTimeTypesIT {
 
     private DataContext context;
     private UnitDbAdapter unitDbAdapter;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void before() throws SQLException {
-        context = env.dataContext();
+        context = env.context();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
-        dbHelper = env.dbHelper();
+        DBHelper dbHelper = env.dbHelper();
         dbHelper.deleteAll("LOCAL_DATE_TEST");
         dbHelper.deleteAll("LOCAL_DATETIME_TEST");
         dbHelper.deleteAll("LOCAL_TIME_TEST");
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java
index 43a097e30..10f17028b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/types/LegacyDateTimeTypesIT.java
@@ -46,37 +46,37 @@ public class LegacyDateTimeTypesIT {
     @Test
     public void calendar() {
 
-        CalendarEntity test = env.dataContext().newObject(CalendarEntity.class);
+        CalendarEntity test = env.context().newObject(CalendarEntity.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.set(2002, Calendar.FEBRUARY, 1);
 
         test.setCalendarField(cal);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         CalendarEntity testRead = ObjectSelect.query(CalendarEntity.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         assertNotNull(testRead.getCalendarField());
         assertEquals(cal, testRead.getCalendarField());
 
         test.setCalendarField(null);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     @Test
     public void date() {
-        DateTestEntity test = env.dataContext().newObject(DateTestEntity.class);
+        DateTestEntity test = env.context().newObject(DateTestEntity.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.set(2002, Calendar.FEBRUARY, 1);
         Date nowDate = cal.getTime();
         test.setDateColumn(nowDate);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         DateTestEntity testRead = ObjectSelect.query(DateTestEntity.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         assertNotNull(testRead.getDateColumn());
         assertEquals(nowDate, testRead.getDateColumn());
         assertEquals(Date.class, testRead.getDateColumn().getClass());
@@ -84,17 +84,17 @@ public class LegacyDateTimeTypesIT {
 
     @Test
     public void time() {
-        DateTestEntity test = env.dataContext().newObject(DateTestEntity.class);
+        DateTestEntity test = env.context().newObject(DateTestEntity.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
         cal.set(1970, Calendar.JANUARY, 1, 1, 20, 30);
         Date nowTime = cal.getTime();
         test.setTimeColumn(nowTime);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         DateTestEntity testRead = ObjectSelect.query(DateTestEntity.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         assertNotNull(testRead.getTimeColumn());
         assertEquals(Date.class, testRead.getTimeColumn().getClass());
 
@@ -109,7 +109,7 @@ public class LegacyDateTimeTypesIT {
 
     @Test
     public void timestamp() {
-        DateTestEntity test = env.dataContext().newObject(DateTestEntity.class);
+        DateTestEntity test = env.context().newObject(DateTestEntity.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -120,17 +120,17 @@ public class LegacyDateTimeTypesIT {
 
         Date now = cal.getTime();
         test.setTimestampColumn(now);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         DateTestEntity testRead = ObjectSelect.query(DateTestEntity.class)
-                .selectFirst(env.dataContext());
+                .selectFirst(env.context());
         assertNotNull(testRead.getTimestampColumn());
         assertEquals(now, testRead.getTimestampColumn());
     }
 
     @Test
     public void sQLTemplateTimestamp() {
-        DateTestEntity test = env.dataContext().newObject(DateTestEntity.class);
+        DateTestEntity test = env.context().newObject(DateTestEntity.class);
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -141,9 +141,9 @@ public class LegacyDateTimeTypesIT {
 
         Date now = cal.getTime();
         test.setTimestampColumn(now);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectDateTest")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectDateTest")).get(0);
         Date columnValue = (Date) testRead.get("TIMESTAMP_COLUMN");
         assertNotNull(columnValue);
         assertEquals(now, columnValue);
@@ -151,7 +151,7 @@ public class LegacyDateTimeTypesIT {
 
     @Test
     public void sQLTemplateDate() {
-        DateTestEntity test = (DateTestEntity) env.dataContext().newObject("DateTestEntity");
+        DateTestEntity test = (DateTestEntity) env.context().newObject("DateTestEntity");
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -162,9 +162,9 @@ public class LegacyDateTimeTypesIT {
 
         java.sql.Date now = new java.sql.Date(cal.getTime().getTime());
         test.setDateColumn(now);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectDateTest")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectDateTest")).get(0);
         Date columnValue = (Date) testRead.get("DATE_COLUMN");
         assertNotNull(columnValue);
         assertEquals(now.toString(), new java.sql.Date(columnValue.getTime()).toString());
@@ -172,7 +172,7 @@ public class LegacyDateTimeTypesIT {
 
     @Test
     public void sQLTemplateTime() {
-        DateTestEntity test = (DateTestEntity) env.dataContext().newObject("DateTestEntity");
+        DateTestEntity test = (DateTestEntity) env.context().newObject("DateTestEntity");
 
         Calendar cal = Calendar.getInstance();
         cal.clear();
@@ -183,9 +183,9 @@ public class LegacyDateTimeTypesIT {
 
         Time now = new Time(cal.getTime().getTime());
         test.setTimeColumn(now);
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        DataRow testRead = (DataRow) env.dataContext().performQuery(MappedSelect.query("SelectDateTest")).get(0);
+        DataRow testRead = (DataRow) env.context().performQuery(MappedSelect.query("SelectDateTest")).get(0);
         Date columnValue = (Date) testRead.get("TIME_COLUMN");
         assertNotNull(columnValue, testRead.toString());
         assertNotNull(columnValue);
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
index 3109e5373..263f230d8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
@@ -54,7 +54,7 @@ public class AggregateExpInMemoryEvaluationIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
index 6a16e6015..777d8c7aa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
@@ -45,7 +45,7 @@ public class TranslateExpressionIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java
index 6b3df9ada..97ed310c7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionCollectionEvaluationIT.java
@@ -47,7 +47,7 @@ public class ExpressionCollectionEvaluationIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.insert(1, "artist1", new java.sql.Date(System.currentTimeMillis()));
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
index 27c0e0324..5208d7749 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/parser/ExpressionEvaluationIT.java
@@ -57,7 +57,7 @@ public class ExpressionEvaluationIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java
index b114d1001..afc27b7ee 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/property/IdPropertyIT.java
@@ -48,7 +48,7 @@ public class IdPropertyIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java
index 7fde02841..7882cc267 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/property/PathAliasesIT.java
@@ -55,7 +55,7 @@ public class PathAliasesIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java
index 9364b75f3..0d5927cca 100644
--- a/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/map/EntityResolverIT.java
@@ -65,7 +65,7 @@ public class EntityResolverIT {
     @Test
     public void lookupObjEntityByPersistentObject() {
         EntityResolver resolver = new EntityResolver(env.runtime().getDataDomain().getDataMaps());
-        Artist artist = (Artist) env.dataContext().newObject("Artist");
+        Artist artist = (Artist) env.context().newObject("Artist");
         assertIsArtistObjEntity(resolver.getObjEntity(artist));
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java b/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
index a25a28a91..1b5e0649d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
@@ -45,7 +45,7 @@ public class CAY2541IT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
index 23c2654e3..9d9c94711 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
@@ -72,7 +72,7 @@ public class ColumnSelectIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
index 45ff6161d..a8d9126a9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
@@ -62,7 +62,7 @@ public class EJBQLQueryIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
index a47c41398..c376d3db1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
@@ -59,7 +59,7 @@ public class MappedQueryIT {
         createArtistsDataSet();
 
         Artist a = MappedSelect.query("ParameterizedQueryWithLocalCache", Artist.class)
-                .param("name", "artist14").select(env.dataContext()).get(0);
+                .param("name", "artist14").select(env.context()).get(0);
         assertNotNull(a);
         assertEquals("artist14", a.getArtistName());
     }
@@ -71,7 +71,7 @@ public class MappedQueryIT {
         try (ResultBatchIterator<Artist> iterator = MappedSelect
                 .query("ParameterizedQueryWithSharedCache", Artist.class)
                 .param("name", "artist14")
-                .batchIterator(env.dataContext(), 1)) {
+                .batchIterator(env.context(), 1)) {
             int count = 0;
             while (iterator.hasNext()) {
                 count++;
@@ -91,18 +91,18 @@ public class MappedQueryIT {
     public void sqlTemplateSelect() throws Exception {
         createArtistsDataSet();
 
-        List<DataRow> result = MappedSelect.query("SelectTestLower", DataRow.class).select(env.dataContext());
+        List<DataRow> result = MappedSelect.query("SelectTestLower", DataRow.class).select(env.context());
         assertEquals(20, result.size());
         assertInstanceOf(DataRow.class, result.get(0));
     }
 
     @Test
     public void sqlTemplateUpdate() throws Exception {
-        int updated = MappedExec.query("NonSelectingQuery").update(env.dataContext())[0];
+        int updated = MappedExec.query("NonSelectingQuery").update(env.context())[0];
 
         assertEquals(1, updated);
 
-        Painting painting = ObjectSelect.query(Painting.class).selectOne(env.dataContext());
+        Painting painting = ObjectSelect.query(Painting.class).selectOne(env.context());
         assertEquals("No Painting Like This", painting.getPaintingTitle());
         assertEquals(12.5, painting.getEstimatedPrice().doubleValue(), 0);
     }
@@ -118,16 +118,16 @@ public class MappedQueryIT {
         }
 
         // create an artist with painting in the database
-        Artist a = env.dataContext().newObject(Artist.class);
+        Artist a = env.context().newObject(Artist.class);
         a.setArtistName("An Artist");
 
-        Painting p = env.dataContext().newObject(Painting.class);
+        Painting p = env.context().newObject(Painting.class);
         p.setPaintingTitle("A Painting");
         // converting double to string prevents rounding weirdness...
         p.setEstimatedPrice(new BigDecimal(1000));
         a.addToPaintingArray(p);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
         List<?> artists = runProcedureSelect(MappedSelect.query("ProcedureQuery", Artist.class)
                 .param("aName", "An Artist")
@@ -144,7 +144,7 @@ public class MappedQueryIT {
     public void ejbqlQuery() throws Exception {
         createArtistsDataSet();
 
-        List result = MappedSelect.query("EjbqlQueryTest").select(env.dataContext());
+        List result = MappedSelect.query("EjbqlQueryTest").select(env.context());
         assertEquals(20, result.size());
         assertInstanceOf(DataRow.class, result.get(0));
     }
@@ -160,11 +160,11 @@ public class MappedQueryIT {
                 .query("ParameterizedQueryWithLocalCache", Artist.class).param("name", "artist2");
 
         assertNotEquals(
-                query1.getMetaData(env.dataContext().getEntityResolver()).getCacheKey(),
-                query2.getMetaData(env.dataContext().getEntityResolver()).getCacheKey());
+                query1.getMetaData(env.context().getEntityResolver()).getCacheKey(),
+                query2.getMetaData(env.context().getEntityResolver()).getCacheKey());
         assertEquals(
-                query2.getMetaData(env.dataContext().getEntityResolver()).getCacheKey(),
-                query3.getMetaData(env.dataContext().getEntityResolver()).getCacheKey());
+                query2.getMetaData(env.context().getEntityResolver()).getCacheKey(),
+                query3.getMetaData(env.context().getEntityResolver()).getCacheKey());
     }
 
     protected QueryResponse runProcedureSelect(AbstractMappedQuery q) throws Exception {
@@ -181,7 +181,7 @@ public class MappedQueryIT {
         BaseTransaction.bindThreadTransaction(t);
 
         try {
-            return env.dataContext().performGenericQuery(q);
+            return env.context().performGenericQuery(q);
         } finally {
             BaseTransaction.bindThreadTransaction(null);
             t.commit();
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
index 2ae4640fd..6b6b9ae25 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
@@ -52,7 +52,7 @@ public class ObjectSelectIteratedQueryIT {
 
     @BeforeEach
     public void before() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tPainting = env.table("PAINTING")
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE", "ARTIST_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL, Types.INTEGER);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
index 5a8e1db94..f7bafb3c6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_AggregateIT.java
@@ -58,7 +58,7 @@ public class ObjectSelect_AggregateIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         dbAdapter = env.getInstance(UnitDbAdapter.class);
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
index 937c3169b..b69e08f1c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_PrimitiveColumnsIT.java
@@ -51,7 +51,7 @@ public class ObjectSelect_PrimitiveColumnsIT {
 
     @BeforeEach
     public void createTestRecords() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
         tPrimitives = env.table("PRIMITIVES_TEST", "ID", "BOOLEAN_COLUMN", "INT_COLUMN");
         for (int i = 1; i <= 20; i++) {
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
index 978ef0197..6f73b7940 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_RunIT.java
@@ -50,7 +50,7 @@ public class ObjectSelect_RunIT {
 	@BeforeEach
 	public void createArtistsDataSet() throws Exception {
 		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
-		context = env.dataContext();
+		context = env.context();
 		TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
 		long dateBase = System.currentTimeMillis();
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java
index 44712cea3..e921ac5d7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_SubqueryIT.java
@@ -45,7 +45,7 @@ public class ObjectSelect_SubqueryIT {
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         TableHelper tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis() - 2 * 24 * 3600 * 1000;
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
index 79654a5d3..7529b917d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ProcedureCallIT.java
@@ -62,7 +62,7 @@ public class ProcedureCallIT {
         runProcedureSelect(ProcedureCall.query(UPDATE_STORED_PROCEDURE).param("paintingPrice", 3000));
 
         // check that price have doubled
-        List<Artist> artists = ObjectSelect.query(Artist.class).prefetch(Artist.PAINTING_ARRAY.disjoint()).select(env.dataContext());
+        List<Artist> artists = ObjectSelect.query(Artist.class).prefetch(Artist.PAINTING_ARRAY.disjoint()).select(env.context());
         assertEquals(1, artists.size());
 
         Artist a = artists.get(0);
@@ -82,7 +82,7 @@ public class ProcedureCallIT {
         runProcedureSelect(ProcedureCall.query(UPDATE_STORED_PROCEDURE_NOPARAM));
 
         // check that price have doubled
-        List<Artist> artists = ObjectSelect.query(Artist.class).prefetch(Artist.PAINTING_ARRAY.disjoint()).select(env.dataContext());
+        List<Artist> artists = ObjectSelect.query(Artist.class).prefetch(Artist.PAINTING_ARRAY.disjoint()).select(env.context());
         assertEquals(1, artists.size());
 
         Artist a = artists.get(0);
@@ -109,11 +109,11 @@ public class ProcedureCallIT {
         assertNotNull(artists, "Null result from StoredProcedure.");
         assertEquals(1, artists.size());
         DataRow artistRow = (DataRow) artists.get(0);
-        Artist a = env.dataContext().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
+        Artist a = env.context().objectFromDataRow(Artist.class, uppercaseConverter(artistRow));
         Painting p = a.getPaintingArray().get(0);
 
         // invalidate painting, it may have been updated in the proc
-        env.dataContext().invalidateObjects(p);
+        env.context().invalidateObjects(p);
         assertEquals(2000, p.getEstimatedPrice().intValue());
     }
 
@@ -226,7 +226,7 @@ public class ProcedureCallIT {
         Painting p = a.getPaintingArray().get(0);
 
         // invalidate painting, it may have been updated in the proc
-        env.dataContext().invalidateObjects(p);
+        env.context().invalidateObjects(p);
         assertEquals(1101.01, p.getEstimatedPrice().doubleValue(), 0.02);
     }
 
@@ -282,7 +282,7 @@ public class ProcedureCallIT {
         BaseTransaction.bindThreadTransaction(t);
 
         try {
-            return q.call(env.dataContext());
+            return q.call(env.context());
         } finally {
             BaseTransaction.bindThreadTransaction(null);
             t.commit();
@@ -290,16 +290,16 @@ public class ProcedureCallIT {
     }
 
     private void createArtist(double paintingPrice) {
-        Artist a = env.dataContext().newObject(Artist.class);
+        Artist a = env.context().newObject(Artist.class);
         a.setArtistName("An Artist");
 
-        Painting p = env.dataContext().newObject(Painting.class);
+        Painting p = env.context().newObject(Painting.class);
         p.setPaintingTitle("A Painting");
         // converting double to string prevents rounding weirdness...
         p.setEstimatedPrice(new BigDecimal("" + paintingPrice));
         a.addToPaintingArray(p);
 
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
     }
 
     /**
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
index 038eb00bf..ef2a808a1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
@@ -52,7 +52,7 @@ public class QueryWithCompoundJoinIT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         tCompoundPk = env.table("COMPOUND_PK_TEST", "KEY1", "KEY2", "NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
index 4c6c4bfb5..d37231436 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLExecIT.java
@@ -42,13 +42,13 @@ public class SQLExecIT {
     @Test
     public void dataMapNameRoot() throws Exception {
         int inserted = SQLExec.query("testmap", "INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, 'a')").update(
-                env.dataContext());
+                env.context());
         assertEquals(1, inserted);
     }
 
     @Test
     public void defaultRoot() throws Exception {
-        int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, 'a')").update(env.dataContext());
+        int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, 'a')").update(env.context());
         assertEquals(1, inserted);
     }
 
@@ -57,12 +57,12 @@ public class SQLExecIT {
         if(env.getInstance(UnitDbAdapter.class).supportsGeneratedKeys()) {
             QueryResult response = SQLExec.query("testmap", "INSERT INTO GENERATED_COLUMN (NAME) VALUES ('Surikov')")
                     .returnGeneratedKeys(true)
-                    .execute(env.dataContext());
+                    .execute(env.context());
             assertEquals(2, response.size());
 
             QueryResult response1 = SQLExec.query("testmap", "INSERT INTO GENERATED_COLUMN (NAME) VALUES ('Sidorov')")
                     .returnGeneratedKeys(false)
-                    .execute(env.dataContext());
+                    .execute(env.context());
             assertEquals(1, response1.size());
         }
     }
@@ -71,7 +71,7 @@ public class SQLExecIT {
     public void paramsArray_Single() throws Exception {
 
         int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, #bind($name))")
-                .paramsArray("a3").update(env.dataContext());
+                .paramsArray("a3").update(env.context());
 
         assertEquals(1, inserted);
         assertEquals("a3", env.dbHelper().getString("ARTIST", "ARTIST_NAME").trim());
@@ -79,10 +79,10 @@ public class SQLExecIT {
 
     @Test
     public void executeSelect() throws Exception {
-        int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, 'a')").update(env.dataContext());
+        int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (1, 'a')").update(env.context());
         assertEquals(1, inserted);
 
-        QueryResult result = SQLExec.query("SELECT * FROM ARTIST").execute(env.dataContext());
+        QueryResult result = SQLExec.query("SELECT * FROM ARTIST").execute(env.context());
         assertEquals(2, result.size());
         assertTrue(result.isList());
         assertEquals(1, result.firstList().size());
@@ -103,7 +103,7 @@ public class SQLExecIT {
     public void paramsArray_Multiple() throws Exception {
 
         int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (#bind($id), #bind($name))")
-                .paramsArray(55, "a3").update(env.dataContext());
+                .paramsArray(55, "a3").update(env.context());
 
         assertEquals(1, inserted);
         assertEquals(55L, env.dbHelper().getLong("ARTIST", "ARTIST_ID"));
@@ -114,7 +114,7 @@ public class SQLExecIT {
     public void execute_MultipleArrayBind() throws Exception {
         SQLExec inserter = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, ARTIST_NAME) VALUES (#bind($id), #bind($name))");
         for(int i = 0; i < 2; i++) {
-            QueryResult<?> result = inserter.paramsArray(i, "artist " + i).execute(env.dataContext());
+            QueryResult<?> result = inserter.paramsArray(i, "artist " + i).execute(env.context());
             assertEquals(1, result.firstUpdateCount());
         }
         assertEquals(2, env.dbHelper().getRowCount("ARTIST"));
@@ -127,7 +127,7 @@ public class SQLExecIT {
             Map<String, Object> params = new HashMap<>();
             params.put("id", i);
             params.put("name", "artist " + i);
-            QueryResult<?> result = inserter.params(params).execute(env.dataContext());
+            QueryResult<?> result = inserter.params(params).execute(env.context());
             assertEquals(1, result.firstUpdateCount());
         }
         assertEquals(2, env.dbHelper().getRowCount("ARTIST"));
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
index 78676bc0c..427e0c5a1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
@@ -55,7 +55,7 @@ public class SQLSelectIT {
 
 	@BeforeEach
 	public void before() {
-		context = env.dataContext();
+		context = env.context();
 		tPainting = env.table("PAINTING")
 				.setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE")
 				.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
index e99532827..65aba27f5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
@@ -51,7 +51,7 @@ public class SQLSelectIteratedQueryIT {
 
     @BeforeEach
     public void before() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tPainting = env.table("PAINTING")
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE", "ARTIST_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL, Types.INTEGER);
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
index 83aa3748d..d3a0b1157 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
@@ -61,7 +61,7 @@ public class SQLTemplateIT {
 
 	@BeforeEach
 	public void setUp() throws Exception {
-		context = env.dataContext();
+		context = env.context();
 		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
 		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
 		tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
index f63fb110a..e42d8c0ed 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
@@ -52,7 +52,7 @@ public class SelectByIdIteratedQueryIT {
 
     @BeforeEach
     public void before() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tPainting = env.table("PAINTING")
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE", "ARTIST_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL, Types.INTEGER);
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
index d1de72ac6..762beebd8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionCustomConnectionIT.java
@@ -63,7 +63,7 @@ public class TransactionCustomConnectionIT {
 
     @BeforeEach
     public void initTransactionManager() {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         jdbcEventLogger = env.getInstance(JdbcEventLogger.class);
         // no binding in test container, get it from runtime
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
index c34f23712..f19126748 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionIsolationIT.java
@@ -56,7 +56,7 @@ public class TransactionIsolationIT {
 
     @BeforeEach
     public void initTransactionManager() {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
         // no binding in test container, get it from runtime
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
index f360c4c6a..8e2a98c16 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionPropagationRollbackIT.java
@@ -55,7 +55,7 @@ public class TransactionPropagationRollbackIT {
 
     @BeforeEach
     public void initTransactionManager() {
-        context = env.dataContext();
+        context = env.context();
         runtime = env.runtime();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
         // no binding in test container, get it from runtime
diff --git a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
index 161de22ce..86c3b2b73 100644
--- a/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/tx/TransactionThreadIT.java
@@ -42,11 +42,11 @@ public class TransactionThreadIT {
         BaseTransaction.bindThreadTransaction(t);
 
         try {
-            ObjectSelect.query(Artist.class).select(env.dataContext());
+            ObjectSelect.query(Artist.class).select(env.context());
             assertEquals(1, t.getConnections().size());
 
             // delegate will fail if the second query opens a new connection
-            ObjectSelect.query(Artist.class).select(env.dataContext());
+            ObjectSelect.query(Artist.class).select(env.context());
 
             assertEquals(1, t.getConnections().size());
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
index 499bc9bfc..cd41a52f3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.runtime;
 
-import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.runtime.CoreModule;
@@ -35,19 +34,7 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 
 /**
- * JUnit 5 extension that wires a Cayenne test environment without requiring
- * a base class or {@code @Inject} fields. Declare it as a static field and
- * use its getter methods from test methods and {@code @BeforeEach} callbacks:
- *
- * <pre>{@code
- * @RegisterExtension
- * static final CayenneTestsExt env = CayenneTestsExt.forProject(CayenneProjects.TESTMAP_PROJECT);
- *
- * @Test
- * void someTest() {
- *     ObjectContext ctx = env.context();
- * }
- * }</pre>
+ * JUnit 5 extension that wires a Cayenne test environment.
  */
 public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
 
@@ -65,8 +52,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
     private final boolean autoClean;
     private final boolean weakReferenceStrategy;
 
-    private ObjectContext context;
-    private DataContext dataContext;
+    private DataContext context;
     private DBHelper dbHelper;
     private CayenneRuntime runtime;
 
@@ -119,8 +105,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
         INJECTOR.getInstance(RuntimeCaseExtraModules.class).setExtraModules(effectiveExtras);
 
         runtime = INJECTOR.getInstance(CayenneRuntime.class);
-        context = INJECTOR.getInstance(ObjectContext.class);
-        dataContext = INJECTOR.getInstance(DataContext.class);
+        context = INJECTOR.getInstance(DataContext.class);
         dbHelper = INJECTOR.getInstance(DBHelper.class);
 
         if (autoClean) {
@@ -137,19 +122,14 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback {
     public void afterEach(ExtensionContext ctx) {
         TEST_SCOPE.shutdown();
         context = null;
-        dataContext = null;
         dbHelper = null;
         runtime = null;
     }
 
-    public ObjectContext context() {
+    public DataContext context() {
         return context;
     }
 
-    public DataContext dataContext() {
-        return dataContext;
-    }
-
     public DBHelper dbHelper() {
         return dbHelper;
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java
index caf322bbb..3b98873f0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseDataContextProvider.java
@@ -19,17 +19,18 @@
 package org.apache.cayenne.unit.di.runtime;
 
 import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Provider;
+import org.apache.cayenne.runtime.CayenneRuntime;
 
 public class RuntimeCaseDataContextProvider implements Provider<DataContext> {
 
     @Inject
-    protected Provider<ObjectContext> objectContextProvider;
+    // injecting provider to make this provider independent from scoping of CayenneRuntime
+    protected Provider<CayenneRuntime> runtimeProvider;
 
     public DataContext get() throws ConfigurationException {
-        return (DataContext) objectContextProvider.get();
+        return (DataContext) runtimeProvider.get().newContext();
     }
 }
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java
index a9cbea540..2aa245068 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.cayenne.unit.di.runtime;
 
-import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.access.DefaultObjectMapRetainStrategy;
@@ -260,7 +259,6 @@ public class RuntimeCaseModule implements Module {
         binder.bind(RuntimeCaseProperties.class).to(RuntimeCaseProperties.class).in(testScope);
         binder.bind(RuntimeCaseExtraModules.class).to(RuntimeCaseExtraModules.class).in(testScope);
         binder.bind(CayenneRuntime.class).toProvider(CayenneRuntimeProvider.class).in(testScope);
-        binder.bind(ObjectContext.class).toProvider(RuntimeCaseObjectContextProvider.class).withoutScope();
         binder.bind(DataContext.class).toProvider(RuntimeCaseDataContextProvider.class).withoutScope();
         binder.bind(DBHelper.class).toProvider(FlavoredDBHelperProvider.class).in(testScope);
         binder.bind(DBCleaner.class).toProvider(DBCleanerProvider.class).in(testScope);
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseObjectContextProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseObjectContextProvider.java
deleted file mode 100644
index 8b1fa00be..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseObjectContextProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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.
- ****************************************************************/
-package org.apache.cayenne.unit.di.runtime;
-
-import org.apache.cayenne.ConfigurationException;
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.runtime.CayenneRuntime;
-
-public class RuntimeCaseObjectContextProvider implements Provider<ObjectContext> {
-
-    @Inject
-    // injecting provider to make this provider independent from scoping of CayenneRuntime
-    protected Provider<CayenneRuntime> runtimeProvider;
-
-    public ObjectContext get() throws ConfigurationException {
-        return runtimeProvider.get().newContext();
-    }
-}
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
index 13cf051a3..7753fdcbf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_115IT.java
@@ -51,7 +51,7 @@ public class CAY_115IT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
         tClobMaster = env.table("CLOB_MASTER", "CLOB_MASTER_ID", "CLOB_COLUMN", "NAME");
         
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java
index 1f4cde2f2..aa14beb18 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_191IT.java
@@ -44,7 +44,7 @@ public class CAY_191IT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         tRelationshipHelper = env.table("RELATIONSHIP_HELPER", "NAME", "RELATIONSHIP_HELPER_ID");
         
         tFkOfDifferentType = env.table("FK_OF_DIFFERENT_TYPE", "ID", "RELATIONSHIP_HELPER_FK");
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java
index 13d2b0e03..3e639cc84 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/jira/CAY_194IT.java
@@ -51,7 +51,7 @@ public class CAY_194IT {
 
     @BeforeEach
     public void setUp() throws Exception {
-        context = env.dataContext();
+        context = env.context();
         dbHelper = env.dbHelper();
         TableHelper tReflexive = new TableHelper(dbHelper, "REFLEXIVE_AND_TO_ONE", "REFLEXIVE_AND_TO_ONE_ID", "PARENT_ID");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
index 21789c562..7f5eec7f1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationIT.java
@@ -46,7 +46,7 @@ public class DeepMergeOperationIT {
     @BeforeEach
     public void setUp() {
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        context = env.dataContext();
+        context = env.context();
         context1 = (DataContext) env.runtime().newContext();
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java
index 3b8b61fb5..2fffbc8a9 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/DeepMergeOperationInheritanceIT.java
@@ -42,7 +42,7 @@ public class DeepMergeOperationInheritanceIT extends PeopleProjectCase {
 
     @BeforeEach
     public void setUp() {
-        context = env.dataContext();
+        context = env.context();
         context1 = (DataContext) env.runtime().newContext();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java b/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
index 02533bcdd..ea9b83551 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
@@ -55,7 +55,7 @@ public class ShallowMergeOperationIT {
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
-        context = env.dataContext();
+        context = env.context();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         tArtist = env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME");
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java b/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
index e3f43f849..6fd508453 100644
--- a/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/value/json/JsonTypeIT.java
@@ -658,20 +658,20 @@ public class JsonTypeIT {
     }
 
     private void testJsonOther(String jsonString) {
-        JsonOther jsonInsert = env.dataContext().newObject(JsonOther.class);
+        JsonOther jsonInsert = env.context().newObject(JsonOther.class);
         jsonInsert.setData(new Json(jsonString));
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        JsonOther jsonSelect = env.dataContext().selectOne(SelectById.query(JsonOther.class, jsonInsert.getObjectId()));
+        JsonOther jsonSelect = env.context().selectOne(SelectById.query(JsonOther.class, jsonInsert.getObjectId()));
         assertEquals(jsonInsert.getData(), jsonSelect.getData());
     }
 
     private void testJsonVarchar(String jsonString) {
-        JsonVarchar jsonInsert = env.dataContext().newObject(JsonVarchar.class);
+        JsonVarchar jsonInsert = env.context().newObject(JsonVarchar.class);
         jsonInsert.setData(new Json(jsonString));
-        env.dataContext().commitChanges();
+        env.context().commitChanges();
 
-        JsonVarchar jsonSelect = env.dataContext().selectOne(SelectById.query(JsonVarchar.class, jsonInsert.getObjectId()));
+        JsonVarchar jsonSelect = env.context().selectOne(SelectById.query(JsonVarchar.class, jsonInsert.getObjectId()));
         assertEquals(jsonInsert.getData(), jsonSelect.getData());
     }
 }