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 17:52:44 UTC

(cayenne) 03/04: Using JUnit 5 extension API instead of test class inheritance and Cayenne injection

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 a3dd8b3ac573f42dbf8c8c880130a06f1eff68dc
Author: Andrus Adamchik <an...@objectstyle.com>
AuthorDate: Wed May 13 12:19:19 2026 -0400

    Using JUnit 5 extension API instead of test class inheritance and Cayenne injection
    
    cleanup
---
 .../cayenne/jcache/CayenneJCacheModuleIT.java      |   5 +-
 .../cayenne/CDOCollectionRelationshipIT.java       |   9 +-
 .../java/org/apache/cayenne/CDOMany2OneIT.java     |   9 +-
 .../org/apache/cayenne/CDOMapRelationshipIT.java   |  11 +-
 .../java/org/apache/cayenne/CDOOne2ManyIT.java     |   7 +-
 .../org/apache/cayenne/CDOQualifiedEntitiesIT.java |  11 +-
 .../org/apache/cayenne/CDOSetRelationshipIT.java   |   7 +-
 .../test/java/org/apache/cayenne/Cay2412IT.java    |   6 +-
 .../java/org/apache/cayenne/CayenneCompoundIT.java |   9 +-
 .../test/java/org/apache/cayenne/CayenneIT.java    |   7 +-
 .../CayennePersistentObjectInContextIT.java        |   5 +-
 .../CayennePersistentObjectRelationshipsIT.java    |   9 +-
 ...yennePersistentObjectSetToManyCollectionIT.java |   7 +-
 .../CayennePersistentObjectSetToManyListIT.java    |   7 +-
 .../CayennePersistentObjectSetToManyMapIT.java     |  11 +-
 .../CayennePersistentObjectSetToManySetIT.java     |   7 +-
 .../org/apache/cayenne/CircularDependencyIT.java   |   9 +-
 .../cayenne/DataContextMaxIdQualifierIT.java       |   7 +-
 .../apache/cayenne/FlattenedRelationshipsIT.java   |  15 +--
 .../java/org/apache/cayenne/LazyAttributesIT.java  |   5 +-
 .../org/apache/cayenne/OneWayRelationshipsIT.java  |  11 +-
 .../java/org/apache/cayenne/access/CAY2509IT.java  |   4 +-
 .../java/org/apache/cayenne/access/Cay2032IT.java  |   6 +-
 .../java/org/apache/cayenne/access/Cay2641IT.java  |   4 +-
 .../java/org/apache/cayenne/access/Cay2666IT.java  |   2 +-
 .../access/DataContextDisjointByIdPrefetchIT.java  |   9 +-
 .../DataContextDisjointByIdPrefetch_ExtrasIT.java  |  15 +--
 .../access/DataContextEJBQLArrayResultIT.java      |   7 +-
 .../access/DataContextEJBQLConditionsIT.java       |   7 +-
 .../cayenne/access/DataContextEJBQLDeleteIT.java   |   5 +-
 .../cayenne/access/DataContextEJBQLDeletePKIT.java |   5 +-
 .../access/DataContextEJBQLFetchJoinIT.java        |  13 +-
 .../DataContextEJBQLFlattenedRelationshipsIT.java  |  11 +-
 .../access/DataContextEJBQLGroupByHavingIT.java    |   9 +-
 .../cayenne/access/DataContextEJBQLIsNullIT.java   |   7 +-
 .../cayenne/access/DataContextEJBQLJoinsIT.java    |   9 +-
 .../DataContextEJBQLNumericalFunctionalIT.java     |   5 +-
 .../cayenne/access/DataContextEJBQLOrderByIT.java  |   7 +-
 .../access/DataContextEJBQLQueryCompoundIT.java    |   7 +-
 .../cayenne/access/DataContextEJBQLQueryIT.java    |   7 +-
 .../cayenne/access/DataContextEJBQLSubqueryIT.java |   7 +-
 .../access/DataContextEJBQLUpdateCompoundIT.java   |   7 +-
 .../cayenne/access/DataContextEJBQLUpdateIT.java   |   7 +-
 .../apache/cayenne/access/DataContextExtrasIT.java |   7 +-
 .../access/DataContextFlattenedAttributesIT.java   |  11 +-
 .../org/apache/cayenne/access/DataContextIT.java   |  11 +-
 .../cayenne/access/DataContextIteratedQueryIT.java |  11 +-
 .../cayenne/access/DataContextJoinAliasesIT.java   |  11 +-
 .../cayenne/access/DataContextLocalObjectIT.java   |   5 +-
 .../apache/cayenne/access/DataContextNoPkIT.java   |   5 +-
 .../access/DataContextObjectTrackingIT.java        |   7 +-
 .../access/DataContextPaginatedQueryIT.java        |   5 +-
 .../access/DataContextPerformQueryAPIIT.java       |   7 +-
 .../access/DataContextPrefetchExtras1IT.java       |   7 +-
 .../access/DataContextPrefetchExtrasIT.java        |  11 +-
 .../cayenne/access/DataContextPrefetchIT.java      |  19 ++-
 .../access/DataContextPrefetchMultistepIT.java     |  11 +-
 .../DataContextPrefetchQualifierOverlapIT.java     |   7 +-
 .../cayenne/access/DataContextQueryCachingIT.java  |   7 +-
 .../cayenne/access/DataContextRefreshQueryIT.java  |   7 +-
 .../cayenne/access/DataContextRefreshingIT.java    |   7 +-
 .../access/DataContextRelationshipQueryIT.java     |   7 +-
 .../access/DataContextSQLTemplateCompoundIT.java   |   7 +-
 .../cayenne/access/DataContextSQLTemplateIT.java   |   7 +-
 .../cayenne/access/DataContextSerializationIT.java |   5 +-
 .../access/DataContextSharedCacheEmpiricIT.java    |   5 +-
 .../apache/cayenne/access/DataNodeQueriesIT.java   |   5 +-
 .../org/apache/cayenne/access/DataRowUtilsIT.java  |   7 +-
 .../org/apache/cayenne/access/DeleteObjectIT.java  |   7 +-
 .../org/apache/cayenne/access/EmbeddingIT.java     |  11 +-
 .../cayenne/access/EmbeddingSerializeIT.java       |   5 +-
 .../java/org/apache/cayenne/access/EnumIT.java     |   5 +-
 .../apache/cayenne/access/FlattenedPrefetchIT.java |  11 +-
 .../access/FlattenedRelationshipInContextIT.java   |   9 +-
 .../apache/cayenne/access/IdentityColumnsIT.java   |   5 +-
 .../org/apache/cayenne/access/JointPrefetchIT.java |   9 +-
 .../cayenne/access/NestedDataContextReadIT.java    |   7 +-
 .../cayenne/access/NestedDataContextWriteIT.java   |   9 +-
 .../access/NestedDataContext_DeadlockIT.java       |   5 +-
 .../org/apache/cayenne/access/NumericTypesIT.java  |   7 +-
 .../cayenne/access/ObjectStoreDiffRetainingIT.java |   7 +-
 .../apache/cayenne/access/OptimisticLockingIT.java |   9 +-
 .../cayenne/access/PrimitiveAttributesIT.java      |   5 +-
 .../apache/cayenne/access/QuotedIdentifiersIT.java |   3 -
 .../SimpleIdIncrementalFaultListDataRowsIT.java    |   5 +-
 .../access/SimpleIdIncrementalFaultListIT.java     |   5 +-
 .../SimpleIdIncrementalFaultListPrefetchIT.java    |   7 +-
 .../java/org/apache/cayenne/access/UUIDIT.java     |   5 +-
 .../cayenne/access/VerticalInheritanceIT.java      | 135 ++++++++++-----------
 .../VerticalInheritanceMultipleAttributesIT.java   |   9 +-
 .../cayenne/access/jdbc/SQLTemplateActionIT.java   |   5 +-
 ...SelectActionWithUnsupportedDistinctTypesIT.java |  11 +-
 .../select/DefaultSelectTranslatorIT.java          |   3 -
 .../translator/select/QualifierTranslatorIT.java   |   5 +-
 .../AshwoodEntitySorter_RelationshipsIT.java       |   7 +-
 .../exp/AggregateExpInMemoryEvaluationIT.java      |  11 +-
 .../java/org/apache/cayenne/exp/CaseWhenIT.java    |   5 +-
 .../cayenne/exp/ParsedExpQualifierCompatIT.java    |   7 +-
 .../apache/cayenne/exp/TranslateExpressionIT.java  |   9 +-
 .../org/apache/cayenne/exp/parser/ASTExistsIT.java |   9 +-
 .../apache/cayenne/exp/parser/ASTExtractIT.java    |   3 -
 .../cayenne/exp/parser/ASTFunctionCallDateIT.java  |   3 -
 .../apache/cayenne/exp/parser/ASTNotExistsIT.java  |   9 +-
 .../parser/ExpressionCollectionEvaluationIT.java   |   9 +-
 .../cayenne/exp/parser/ExpressionEvaluationIT.java |   9 +-
 .../apache/cayenne/exp/property/IdPropertyIT.java  |   9 +-
 .../apache/cayenne/exp/property/PathAliasesIT.java |  11 +-
 .../java/org/apache/cayenne/query/CAY2541IT.java   |   9 +-
 .../org/apache/cayenne/query/ColumnSelectIT.java   |  11 +-
 .../apache/cayenne/query/EJBQLQueryCountIT.java    |   7 +-
 .../org/apache/cayenne/query/EJBQLQueryIT.java     |   7 +-
 .../apache/cayenne/query/EJBQLQueryNumericIT.java  |   5 +-
 .../org/apache/cayenne/query/MappedQueryIT.java    |   5 +-
 .../cayenne/query/ObjectSelectIteratedQueryIT.java |   7 +-
 .../cayenne/query/ObjectSelect_AggregateIT.java    |  11 +-
 .../query/ObjectSelect_FetchLimitOrderingIT.java   |   5 +-
 .../query/ObjectSelect_PrimitiveColumnsIT.java     |   5 +-
 .../apache/cayenne/query/ObjectSelect_RunIT.java   |   9 +-
 .../cayenne/query/ObjectSelect_SubqueryIT.java     |   9 +-
 .../cayenne/query/QueryWithCompoundJoinIT.java     |   7 +-
 .../query/QueryWithInheritancePrefetchIT.java      |   7 +-
 .../java/org/apache/cayenne/query/SQLSelectIT.java |   9 +-
 .../cayenne/query/SQLSelectIteratedQueryIT.java    |   7 +-
 .../org/apache/cayenne/query/SQLTemplateIT.java    |   9 +-
 .../cayenne/query/SelectByIdIteratedQueryIT.java   |   7 +-
 .../org/apache/cayenne/query/SelectById_RunIT.java |   7 +-
 .../apache/cayenne/query/SelectQueryClobIT.java    |   5 +-
 .../cayenne/query/SelectQueryReturnTypesIT.java    |   5 +-
 .../reflect/MixedPersistenceStrategyIT.java        |  11 +-
 .../cayenne/runtime/CayenneRuntimeBuilderIT.java   |   5 +-
 .../template/directive/BindDirectiveIT.java        |   5 +-
 .../template/directive/ResultDirectiveIT.java      |   5 +-
 .../cayenne/unit/di/runtime/CayenneTestsEnv.java   |   9 ++
 .../org/apache/cayenne/unit/jira/CAY_115IT.java    |   7 +-
 .../org/apache/cayenne/unit/jira/CAY_191IT.java    |   7 +-
 .../cayenne/util/ShallowMergeOperationIT.java      |   5 +-
 136 files changed, 379 insertions(+), 766 deletions(-)

diff --git a/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java b/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java
index 5f39336d4..e2b9e9e42 100644
--- a/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java
+++ b/cayenne-jcache/src/test/java/org/apache/cayenne/jcache/CayenneJCacheModuleIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.Module;
 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.Artist;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -50,7 +49,6 @@ public class CayenneJCacheModuleIT {
             .forProject(CayenneProjects.TESTMAP_PROJECT)
             .withExtraModules(EhCacheModule.class);
 
-    private DBHelper dbHelper;
     ObjectContext context;
     CayenneRuntime runtime;
 
@@ -58,10 +56,9 @@ public class CayenneJCacheModuleIT {
 
     @BeforeEach
     public void setUpTableHelper() throws Exception {
-        dbHelper = env.dbHelper();
         context = env.context();
         runtime = env.runtime();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
         tArtist.deleteAll();
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
index 86507813a..1a5c25cfc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOCollectionRelationshipIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.RefreshQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMany;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToManyTarget;
@@ -46,18 +45,14 @@ public class CDOCollectionRelationshipIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RELATIONSHIPS_COLLECTION_TO_MANY_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        TableHelper tCollectionToMany = new TableHelper(dbHelper, "COLLECTION_TO_MANY");
+        TableHelper tCollectionToMany = env.table("COLLECTION_TO_MANY");
         tCollectionToMany.setColumns("ID");
 
-        TableHelper tCollectionToManyTarget = new TableHelper(
-                dbHelper,
-                "COLLECTION_TO_MANY_TARGET");
+        TableHelper tCollectionToManyTarget = env.table("COLLECTION_TO_MANY_TARGET");
         tCollectionToManyTarget.setColumns("ID", "COLLECTION_TO_MANY_ID");
 
         // single data set for all tests
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
index d5371c31a..d9655b013 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOMany2OneIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
@@ -51,7 +50,6 @@ public class CDOMany2OneIT {
 
     private CayenneRuntime runtime;
     private ObjectContext context;
-    private DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -61,16 +59,15 @@ public class CDOMany2OneIT {
     public void setUp() throws Exception {
         runtime = env.runtime();
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.BIGINT, Types.INTEGER);
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
index 302f065b9..2f7e1e252 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOMapRelationshipIT.java
@@ -22,7 +22,6 @@ import java.util.Map;
 
 import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.query.SelectById;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.map_to_many.IdMapToMany;
 import org.apache.cayenne.testdo.map_to_many.MapToMany;
@@ -46,7 +45,6 @@ public class CDOMapRelationshipIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.MAP_TO_MANY_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tMapToMany;
     protected TableHelper tMapToManyTarget;
@@ -56,17 +54,16 @@ public class CDOMapRelationshipIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tMapToMany = new TableHelper(dbHelper, "MAP_TO_MANY");
+        tMapToMany = env.table("MAP_TO_MANY");
         tMapToMany.setColumns("ID");
 
-        tMapToManyTarget = new TableHelper(dbHelper, "MAP_TO_MANY_TARGET");
+        tMapToManyTarget = env.table("MAP_TO_MANY_TARGET");
         tMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID", "NAME");
 
-        tIdMapToMany = new TableHelper(dbHelper, "ID_MAP_TO_MANY");
+        tIdMapToMany = env.table("ID_MAP_TO_MANY");
         tIdMapToMany.setColumns("ID");
 
-        tIdMapToManyTarget = new TableHelper(dbHelper, "ID_MAP_TO_MANY_TARGET");
+        tIdMapToManyTarget = env.table("ID_MAP_TO_MANY_TARGET");
         tIdMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java
index fdd8d1cbc..3356f5e49 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOOne2ManyIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
@@ -51,7 +50,6 @@ public class CDOOne2ManyIT {
 
     private CayenneRuntime runtime;
     private ObjectContext context;
-    private DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -60,11 +58,10 @@ public class CDOOne2ManyIT {
     public void setUp() throws Exception {
         runtime = env.runtime();
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
index 175a9fd64..a6efe1144 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOQualifiedEntitiesIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.map.DbEntity;
 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.qualified.Qualified1;
 import org.apache.cayenne.testdo.qualified.Qualified2;
@@ -48,7 +47,6 @@ public class CDOQualifiedEntitiesIT {
 
     private ObjectContext context;
     private UnitDbAdapter accessStackAdapter;
-    private DBHelper dbHelper;
 
     private TableHelper tQualified1;
     private TableHelper tQualified2;
@@ -59,22 +57,21 @@ public class CDOQualifiedEntitiesIT {
     public void setUp() throws Exception {
         context = env.context();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        dbHelper = env.dbHelper();
         int bool = accessStackAdapter.supportsBoolean() ? Types.BOOLEAN : Types.INTEGER;
 
-        tQualified1 = new TableHelper(dbHelper, "TEST_QUALIFIED1")
+        tQualified1 = env.table("TEST_QUALIFIED1")
                 .setColumns("ID", "NAME", "DELETED")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, bool);
 
-        tQualified2 = new TableHelper(dbHelper, "TEST_QUALIFIED2")
+        tQualified2 = env.table("TEST_QUALIFIED2")
                 .setColumns("ID", "NAME", "DELETED", "QUALIFIED1_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, bool, Types.INTEGER);
 
-        tQualified3 = new TableHelper(dbHelper, "TEST_QUALIFIED3")
+        tQualified3 = env.table("TEST_QUALIFIED3")
                 .setColumns("ID", "NAME", "DELETED")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, bool);
 
-        tQualified4 = new TableHelper(dbHelper, "TEST_QUALIFIED4")
+        tQualified4 = env.table("TEST_QUALIFIED4")
                 .setColumns("ID", "NAME", "DELETED", "QUALIFIED3_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, bool, Types.INTEGER);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java b/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
index a2532f761..ab02fe846 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CDOSetRelationshipIT.java
@@ -20,7 +20,6 @@ package org.apache.cayenne;
 
 import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.query.SelectById;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToManyTarget;
@@ -45,7 +44,6 @@ public class CDOSetRelationshipIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RELATIONSHIPS_SET_TO_MANY_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tSetToMany;
     protected TableHelper tSetToManyTarget;
@@ -53,11 +51,10 @@ public class CDOSetRelationshipIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tSetToMany = new TableHelper(dbHelper, "SET_TO_MANY");
+        tSetToMany = env.table("SET_TO_MANY");
         tSetToMany.setColumns("ID");
 
-        tSetToManyTarget = new TableHelper(dbHelper, "SET_TO_MANY_TARGET");
+        tSetToManyTarget = env.table("SET_TO_MANY_TARGET");
         tSetToManyTarget.setColumns("ID", "SET_TO_MANY_ID");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java b/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
index 55bb2036e..35a92390f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/Cay2412IT.java
@@ -48,16 +48,16 @@ public class Cay2412IT {
     public void prepareData() throws Exception {
         context = env.dataContext();
 
-        TableHelper tArtist = new TableHelper(env.dbHelper(), "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
         tArtist.insert(1, "artist1", new java.sql.Date(System.currentTimeMillis()));
 
-        TableHelper tGallery = new TableHelper(env.dbHelper(), "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(env.dbHelper(), "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID", "ESTIMATED_PRICE");
         for (int i = 1; i <= 3; i++) {
             tPaintings.insert(i, "painting" + i, 1, 1, 22 - i);
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java
index b2452cc41..2dc331bc4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayenneCompoundIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.exp.property.PropertyFactory;
 import org.apache.cayenne.query.EJBQLQuery;
 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.compound.CharPkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
@@ -47,7 +46,6 @@ public class CayenneCompoundIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.COMPOUND_PROJECT);
 
 	private ObjectContext context;
-	protected DBHelper dbHelper;
 
 	private TableHelper tCompoundPKTest;
 	private TableHelper tCharPKTest;
@@ -56,14 +54,13 @@ public class CayenneCompoundIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		dbHelper = env.dbHelper();
-		tCompoundPKTest = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+		tCompoundPKTest = env.table("COMPOUND_PK_TEST");
 		tCompoundPKTest.setColumns("KEY1", "KEY2", "NAME");
 
-		tCharPKTest = new TableHelper(dbHelper, "CHAR_PK_TEST");
+		tCharPKTest = env.table("CHAR_PK_TEST");
 		tCharPKTest.setColumns("PK_COL", "OTHER_COL");
 
-		tCompoundIntPKTest = new TableHelper(dbHelper, "COMPOUND_INT_PK");
+		tCompoundIntPKTest = env.table("COMPOUND_INT_PK");
 		tCompoundIntPKTest.setColumns("id1", "id2", "name");
 	}
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java b/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java
index 776e7f4b2..3279bcacc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayenneIT.java
@@ -29,7 +29,6 @@ import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
-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.unit.di.runtime.CayenneProjects;
@@ -55,7 +54,6 @@ public class CayenneIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -63,11 +61,10 @@ public class CayenneIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE");
 
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
index 74bf805c9..7c22e9533 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectInContextIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.access.DataContext;
 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.Artist;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -42,7 +41,6 @@ public class CayennePersistentObjectInContextIT {
 
     protected CayenneRuntime runtime;
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
 
@@ -50,8 +48,7 @@ public class CayennePersistentObjectInContextIT {
     public void setUp() throws Exception {
         runtime = env.runtime();
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java
index 5d6e2bdaa..784007b1e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectRelationshipsIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.access.ToManyList;
 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;
@@ -52,7 +51,6 @@ public class CayennePersistentObjectRelationshipsIT {
 
     private ObjectContext context;
     private CayenneRuntime runtime;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPaintingInfo;
@@ -62,17 +60,16 @@ public class CayennePersistentObjectRelationshipsIT {
     public void setUp() throws Exception {
         context = env.context();
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
                 "ARTIST_ID");
 
-        tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
+        tPaintingInfo = env.table("PAINTING_INFO");
         tPaintingInfo.setColumns("PAINTING_ID", "TEXT_REVIEW");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java
index f706fe950..bc0ccf421 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyCollectionIT.java
@@ -19,7 +19,6 @@
 
 package org.apache.cayenne;
 
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToMany;
 import org.apache.cayenne.testdo.relationships_collection_to_many.CollectionToManyTarget;
@@ -40,16 +39,14 @@ public class CayennePersistentObjectSetToManyCollectionIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RELATIONSHIPS_COLLECTION_TO_MANY_PROJECT);
 
 	private ObjectContext context;
-	private DBHelper dbHelper;
 
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		dbHelper = env.dbHelper();
-		TableHelper tCollectionToMany = new TableHelper(dbHelper, "COLLECTION_TO_MANY");
+		TableHelper tCollectionToMany = env.table("COLLECTION_TO_MANY");
 		tCollectionToMany.setColumns("ID");
 
-		TableHelper tCollectionToManyTarget = new TableHelper(dbHelper, "COLLECTION_TO_MANY_TARGET");
+		TableHelper tCollectionToManyTarget = env.table("COLLECTION_TO_MANY_TARGET");
 		tCollectionToManyTarget.setColumns("ID", "COLLECTION_TO_MANY_ID");
 
 		// single data set for all tests
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java
index addbdc851..056202a4c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyListIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne;
 
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
@@ -46,7 +45,6 @@ public class CayennePersistentObjectSetToManyListIT {
 
 	private CayenneRuntime runtime;
 	private ObjectContext context;
-	private DBHelper dbHelper;
 
 	protected TableHelper tArtist;
 	protected TableHelper tPainting;
@@ -55,11 +53,10 @@ public class CayennePersistentObjectSetToManyListIT {
 	public void setUp() throws Exception {
 		runtime = env.runtime();
 		context = env.context();
-		dbHelper = env.dbHelper();
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-		tPainting = new TableHelper(dbHelper, "PAINTING");
+		tPainting = env.table("PAINTING");
 		tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR,
 				Types.BIGINT);
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java
index b599d1cef..29f4df3b0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManyMapIT.java
@@ -19,7 +19,6 @@
 
 package org.apache.cayenne;
 
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.map_to_many.MapToMany;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -39,7 +38,6 @@ public class CayennePersistentObjectSetToManyMapIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.MAP_TO_MANY_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tMapToMany;
     protected TableHelper tMapToManyTarget;
@@ -49,17 +47,16 @@ public class CayennePersistentObjectSetToManyMapIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tMapToMany = new TableHelper(dbHelper, "MAP_TO_MANY");
+        tMapToMany = env.table("MAP_TO_MANY");
         tMapToMany.setColumns("ID");
 
-        tMapToManyTarget = new TableHelper(dbHelper, "MAP_TO_MANY_TARGET");
+        tMapToManyTarget = env.table("MAP_TO_MANY_TARGET");
         tMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID", "NAME");
 
-        tIdMapToMany = new TableHelper(dbHelper, "ID_MAP_TO_MANY");
+        tIdMapToMany = env.table("ID_MAP_TO_MANY");
         tIdMapToMany.setColumns("ID");
 
-        tIdMapToManyTarget = new TableHelper(dbHelper, "ID_MAP_TO_MANY_TARGET");
+        tIdMapToManyTarget = env.table("ID_MAP_TO_MANY_TARGET");
         tIdMapToManyTarget.setColumns("ID", "MAP_TO_MANY_ID");
 
         createTestDataSet();
diff --git a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java
index 3f87a5d33..5da939baa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CayennePersistentObjectSetToManySetIT.java
@@ -19,7 +19,6 @@
 
 package org.apache.cayenne;
 
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.map_to_many.MapToMany;
 import org.apache.cayenne.testdo.relationships_set_to_many.SetToMany;
@@ -40,7 +39,6 @@ public class CayennePersistentObjectSetToManySetIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RELATIONSHIPS_SET_TO_MANY_PROJECT);
 
 	protected ObjectContext context;
-	protected DBHelper dbHelper;
 
 	protected TableHelper tSetToMany;
 	protected TableHelper tSetToManyTarget;
@@ -48,11 +46,10 @@ public class CayennePersistentObjectSetToManySetIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		dbHelper = env.dbHelper();
-		tSetToMany = new TableHelper(dbHelper, "SET_TO_MANY");
+		tSetToMany = env.table("SET_TO_MANY");
 		tSetToMany.setColumns("ID");
 
-		tSetToManyTarget = new TableHelper(dbHelper, "SET_TO_MANY_TARGET");
+		tSetToManyTarget = env.table("SET_TO_MANY_TARGET");
 		tSetToManyTarget.setColumns("ID", "SET_TO_MANY_ID");
 
 		createTestDataSet();
diff --git a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
index 3ff32acd9..a90099690 100644
--- a/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/CircularDependencyIT.java
@@ -19,7 +19,6 @@
 
 package org.apache.cayenne;
 
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships.E1;
 import org.apache.cayenne.testdo.relationships.E2;
@@ -45,16 +44,15 @@ public class CircularDependencyIT {
 
     private UnitDbAdapter unitDbAdapter;
     private ObjectContext context;
-    private DBHelper dbHelper;
 
     @AfterEach
     public void cleanUp() throws SQLException {
         // manually cleanup circular references
-        TableHelper e1 = new TableHelper(dbHelper, "CYCLE_E1", "id", "e2_id", "text");
+        TableHelper e1 = env.table("CYCLE_E1", "id", "e2_id", "text");
         e1.setColumnTypes(Types.INTEGER, Types.INTEGER, Types.VARCHAR);
-        TableHelper e2 = new TableHelper(dbHelper, "CYCLE_E2", "id", "e1_id", "text");
+        TableHelper e2 = env.table("CYCLE_E2", "id", "e1_id", "text");
         e2.setColumnTypes(Types.INTEGER, Types.INTEGER, Types.VARCHAR);
-        TableHelper reflexive = new TableHelper(dbHelper, "REFLEXIVE_AND_TO_ONE", "REFLEXIVE_AND_TO_ONE_ID", "NAME", "PARENT_ID");
+        TableHelper reflexive = env.table("REFLEXIVE_AND_TO_ONE", "REFLEXIVE_AND_TO_ONE_ID", "NAME", "PARENT_ID");
 
         e1.update().set("e2_id", null, Types.INTEGER).execute();
         e2.update().set("e1_id", null, Types.INTEGER).execute();
@@ -70,7 +68,6 @@ public class CircularDependencyIT {
     public void setUp() {
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
         context = env.context();
-        dbHelper = env.dbHelper();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
index 870177631..cfa4caafc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/DataContextMaxIdQualifierIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne;
 import org.apache.cayenne.access.DataContext;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
@@ -45,7 +44,6 @@ public class DataContextMaxIdQualifierIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
     protected DataChannelInterceptor queryInterceptor;
     protected CayenneRuntime runtime;
     
@@ -55,13 +53,12 @@ public class DataContextMaxIdQualifierIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         runtime = env.runtime();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE").setColumnTypes(Types.INTEGER, Types.BIGINT,
                 Types.VARCHAR);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
index 9996f05c9..9d8ab5592 100644
--- a/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/FlattenedRelationshipsIT.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_flattened.Entity1;
 import org.apache.cayenne.testdo.relationships_flattened.Entity3;
@@ -53,7 +52,6 @@ public class FlattenedRelationshipsIT {
 
     private DataContext context;
     private DataContext context1;
-    private DBHelper dbHelper;
 
     private TableHelper tFlattenedTest1;
     private TableHelper tFlattenedTest2;
@@ -66,24 +64,23 @@ public class FlattenedRelationshipsIT {
     public void setUp() throws Exception {
         context = env.dataContext();
         context1 = (DataContext) env.runtime().newContext();
-        dbHelper = env.dbHelper();
 
-        tFlattenedTest1 = new TableHelper(dbHelper, "FLATTENED_TEST_1");
+        tFlattenedTest1 = env.table("FLATTENED_TEST_1");
         tFlattenedTest1.setColumns("FT1_ID", "NAME");
 
-        tFlattenedTest2 = new TableHelper(dbHelper, "FLATTENED_TEST_2");
+        tFlattenedTest2 = env.table("FLATTENED_TEST_2");
         tFlattenedTest2.setColumns("FT2_ID", "FT1_ID", "NAME");
 
-        tFlattenedTest3 = new TableHelper(dbHelper, "FLATTENED_TEST_3");
+        tFlattenedTest3 = env.table("FLATTENED_TEST_3");
         tFlattenedTest3.setColumns("FT3_ID", "FT2_ID", "NAME");
 
-        tComplexJoin = new TableHelper(dbHelper, "COMPLEX_JOIN");
+        tComplexJoin = env.table("COMPLEX_JOIN");
         tComplexJoin.setColumns("PK", "FT1_FK", "FT3_FK", "EXTRA_COLUMN");
 
-        tFlattenedCircular = new TableHelper(dbHelper, "FLATTENED_CIRCULAR");
+        tFlattenedCircular = env.table("FLATTENED_CIRCULAR");
         tFlattenedCircular.setColumns("ID");
 
-        tFlattenedCircularJoin = new TableHelper(dbHelper, "FLATTENED_CIRCULAR_JOIN");
+        tFlattenedCircularJoin = env.table("FLATTENED_CIRCULAR_JOIN");
         tFlattenedCircularJoin.setColumns("SIDE1_ID", "SIDE2_ID");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java
index 0069e313b..b5ab33e7b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/LazyAttributesIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne;
 import java.sql.Types;
 
 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.lazy.Lazyblob;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -44,13 +43,11 @@ public class LazyAttributesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.LAZY_ATTRIBUTES_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void setup() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        TableHelper th = new TableHelper(dbHelper, "LAZYBLOB")
+        TableHelper th = env.table("LAZYBLOB")
                 .setColumns("ID", "NAME", "LAZY_DATA")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.VARBINARY);
         th.insert(1, "test", new byte[]{1, 2, 3, 4, 5});
diff --git a/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java
index 0ee42e3e5..9c6e0c5b1 100644
--- a/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/OneWayRelationshipsIT.java
@@ -23,7 +23,6 @@ import java.sql.Types;
 import java.util.List;
 
 import org.apache.cayenne.query.SQLSelect;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.oneway.OnewayTable1;
 import org.apache.cayenne.testdo.oneway.OnewayTable2;
@@ -46,7 +45,6 @@ public class OneWayRelationshipsIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.ONEWAY_PROJECT);
 
 	private ObjectContext context;
-	private DBHelper dbHelper;
 
 	private TableHelper t1Helper;
 	private TableHelper t2Helper;
@@ -56,15 +54,14 @@ public class OneWayRelationshipsIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		dbHelper = env.dbHelper();
-		t1Helper = new TableHelper(dbHelper, "oneway_table1");
+		t1Helper = env.table("oneway_table1");
 		t1Helper.setColumns("ID");
-		t2Helper = new TableHelper(dbHelper, "oneway_table2");
+		t2Helper = env.table("oneway_table2");
 		t2Helper.setColumns("ID", "TABLE1_ID");
 
-		t3Helper = new TableHelper(dbHelper, "oneway_table3");
+		t3Helper = env.table("oneway_table3");
 		t3Helper.setColumns("ID");
-		t4Helper = new TableHelper(dbHelper, "oneway_table4");
+		t4Helper = env.table("oneway_table4");
 		t4Helper.setColumns("ID", "TABLE3_ID").setColumnTypes(Types.INTEGER, Types.INTEGER);
 	}
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java b/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java
index cd9b3777d..b035e12a6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/CAY2509IT.java
@@ -47,9 +47,9 @@ public class CAY2509IT {
 
     @BeforeEach
     public void before() {
-        this.tArtist = new TableHelper(env.dbHelper(), "ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH")
+        this.tArtist = env.table("ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH")
                 .setColumnTypes(Types.BIGINT, Types.CHAR, Types.DATE);
-        this.tPainting = new TableHelper(env.dbHelper(), "PAINTING").setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE")
+        this.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/access/Cay2032IT.java b/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
index cde025562..2f2576bb5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2032IT.java
@@ -44,20 +44,20 @@ public class Cay2032IT {
     @BeforeEach
     public void createTestData() throws Exception {
         // USERS table has field `name` BLOB to trigger suppressDistinct in translator
-        TableHelper tUser = new TableHelper(env.dbHelper(), "USERS");
+        TableHelper tUser = env.table("USERS");
         tUser.setColumns("user_id");
         tUser.insert(1);
         tUser.insert(2);
         tUser.insert(3);
 
-        TableHelper tTeam = new TableHelper(env.dbHelper(), "TEAM");
+        TableHelper tTeam = env.table("TEAM");
         tTeam.setColumns("team_id");
         tTeam.insert(1);
         tTeam.insert(2);
         tTeam.insert(3);
         tTeam.insert(4);
 
-        TableHelper tTeamHasUser = new TableHelper(env.dbHelper(), "USER_HAS_TEAM");
+        TableHelper tTeamHasUser = env.table("USER_HAS_TEAM");
         tTeamHasUser.setColumns("team_id", "user_id");
         tTeamHasUser.insert(1, 2);
         tTeamHasUser.insert(2, 1);
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 eeb074961..109c65fb7 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2641IT.java
@@ -57,12 +57,12 @@ public class Cay2641IT {
         context = env.context();
         adapter = env.getInstance(DbAdapter.class);
 
-        TableHelper th = new TableHelper(env.dbHelper(), "ArtistLazy")
+        TableHelper th = env.table("ArtistLazy")
                 .setColumns("ID", "NAME", "SURNAME")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
         th.insert(1, "artist1", "artist2");
 
-        th = new TableHelper(env.dbHelper(), "PaintingLazy")
+        th = env.table("PaintingLazy")
                 .setColumns("ID", "NAME", "ARTIST_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
         th.insert(1, "painting1", 1);
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 eca704daf..6091cee9f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/Cay2666IT.java
@@ -128,7 +128,7 @@ public class Cay2666IT {
 
     @Test
     public void expressionWithDollarSign() throws Exception {
-        TableHelper tTest = new TableHelper(env.dbHelper(), "Cay2666");
+        TableHelper tTest = env.table("Cay2666");
         tTest.setColumns("ID", "NAME$");
         tTest.insert(1, "st.One");
 
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 31e454948..7c5c30451 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLSelect;
 import org.apache.cayenne.query.SortOrder;
-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;
@@ -51,7 +50,6 @@ public class DataContextDisjointByIdPrefetchIT {
 
     protected DataContext context;
 
-    protected DBHelper dbHelper;
 
     protected DataChannelInterceptor queryInterceptor;
 
@@ -62,16 +60,15 @@ public class DataContextDisjointByIdPrefetchIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE").setColumnTypes(Types.INTEGER, Types.BIGINT,
                 Types.VARCHAR);
 
-        tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
+        tPaintingInfo = env.table("PAINTING_INFO");
         tPaintingInfo.setColumns("PAINTING_ID", "TEXT_REVIEW");
     }
 
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 c469a7ea0..468a91e04 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
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
 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.things.Bag;
 import org.apache.cayenne.testdo.things.Ball;
@@ -46,7 +45,6 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT {
 
     protected DataContext context;
 
-    protected DBHelper dbHelper;
 
     protected DataChannelInterceptor queryInterceptor;
 
@@ -60,24 +58,23 @@ public class DataContextDisjointByIdPrefetch_ExtrasIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        tBag = new TableHelper(dbHelper, "BAG");
+        tBag = env.table("BAG");
         tBag.setColumns("ID", "NAME");
 
-        tBall = new TableHelper(dbHelper, "BALL");
+        tBall = env.table("BALL");
         tBall.setColumns("ID", "BOX_ID", "THING_VOLUME", "THING_WEIGHT");
 
-        tBox = new TableHelper(dbHelper, "BOX");
+        tBox = env.table("BOX");
         tBox.setColumns("ID", "BAG_ID", "NAME");
 
-        tBoxInfo = new TableHelper(dbHelper, "BOX_INFO");
+        tBoxInfo = env.table("BOX_INFO");
         tBoxInfo.setColumns("ID" ,"BOX_ID", "COLOR");
 
-        tBoxThing = new TableHelper(dbHelper, "BOX_THING");
+        tBoxThing = env.table("BOX_THING");
         tBoxThing.setColumns("BOX_ID", "THING_VOLUME", "THING_WEIGHT");
 
-        tThing = new TableHelper(dbHelper, "THING");
+        tThing = env.table("THING");
         tThing.setColumns("ID", "VOLUME", "WEIGHT");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java
index 21b83c664..bf15b6c03 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLArrayResultIT.java
@@ -20,7 +20,6 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.EJBQLQuery;
-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.unit.di.runtime.CayenneProjects;
@@ -42,21 +41,19 @@ public class DataContextEJBQLArrayResultIT {
 
     protected ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
         tArtist.insert(33001, "AA1");
         tArtist.insert(33002, "AA2");
         tArtist.insert(33003, "BB1");
         tArtist.insert(33004, "BB2");
 
-        TableHelper tPainting = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java
index 32341ec59..348d951ea 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLConditionsIT.java
@@ -30,7 +30,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
 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;
@@ -48,7 +47,6 @@ public class DataContextEJBQLConditionsIT {
 
     protected ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -57,11 +55,10 @@ public class DataContextEJBQLConditionsIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java
index 4c47141bc..7fa8bf33d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeleteIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
 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.Painting;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -44,7 +43,6 @@ public class DataContextEJBQLDeleteIT {
 
     protected ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     protected CayenneRuntime runtime;
 
@@ -54,9 +52,8 @@ public class DataContextEJBQLDeleteIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         runtime = env.runtime();
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java
index f544acd01..9271236d6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLDeletePKIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
@@ -41,7 +40,6 @@ public class DataContextEJBQLDeletePKIT {
 
     protected ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     protected TableHelper tMeaningfulPKTest1Table;
 
@@ -49,8 +47,7 @@ public class DataContextEJBQLDeletePKIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tMeaningfulPKTest1Table = new TableHelper(dbHelper, "MEANINGFUL_PK_TEST1");
+        tMeaningfulPKTest1Table = env.table("MEANINGFUL_PK_TEST1");
         tMeaningfulPKTest1Table.setColumns("PK_ATTRIBUTE", "DESCR", "INT_ATTRIBUTE");
     }
 
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 a900ff50f..fff20a3a4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFetchJoinIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.query.EJBQLQuery;
-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.ArtistExhibit;
@@ -53,7 +52,6 @@ public class DataContextEJBQLFetchJoinIT {
 
     protected ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     protected DataChannelInterceptor queryBlocker;
 
@@ -67,12 +65,11 @@ public class DataContextEJBQLFetchJoinIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         queryBlocker = env.getInstance(DataChannelInterceptor.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
@@ -83,13 +80,13 @@ public class DataContextEJBQLFetchJoinIT {
                 Types.VARCHAR,
                 Types.DECIMAL);
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
 
-        tExhibit = new TableHelper(dbHelper, "EXHIBIT");
+        tExhibit = env.table("EXHIBIT");
         tExhibit.setColumns("EXHIBIT_ID", "GALLERY_ID", "CLOSING_DATE", "OPENING_DATE");
 
-        tArtistExhibit = new TableHelper(dbHelper, "ARTIST_EXHIBIT");
+        tArtistExhibit = env.table("ARTIST_EXHIBIT");
         tArtistExhibit.setColumns("ARTIST_ID", "EXHIBIT_ID");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java
index e4cb966a9..f315c6300 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest1;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -47,7 +46,6 @@ public class DataContextEJBQLFlattenedRelationshipsIT {
 
     protected ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     protected TableHelper ft1Helper;
     protected TableHelper ft2Helper;
@@ -58,16 +56,15 @@ public class DataContextEJBQLFlattenedRelationshipsIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        ft1Helper = new TableHelper(dbHelper, "FLATTENED_TEST_1", "FT1_ID", "NAME");
+        ft1Helper = env.table("FLATTENED_TEST_1", "FT1_ID", "NAME");
 
-        ft2Helper = new TableHelper(dbHelper, "FLATTENED_TEST_2");
+        ft2Helper = env.table("FLATTENED_TEST_2");
         ft2Helper.setColumns("FT2_ID", "FT1_ID", "NAME");
 
-        ft3Helper = new TableHelper(dbHelper, "FLATTENED_TEST_3");
+        ft3Helper = env.table("FLATTENED_TEST_3");
         ft3Helper.setColumns("FT3_ID", "FT2_ID", "NAME");
 
-        ft4Helper = new TableHelper(dbHelper, "FLATTENED_TEST_4");
+        ft4Helper = env.table("FLATTENED_TEST_4");
         ft4Helper.setColumns("FT4_ID", "FT3_ID", "NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java
index c97d91e59..7d39756e4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingIT.java
@@ -20,7 +20,6 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.EJBQLQuery;
-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.Gallery;
@@ -49,7 +48,6 @@ public class DataContextEJBQLGroupByHavingIT {
 
     protected ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -59,11 +57,10 @@ public class DataContextEJBQLGroupByHavingIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
@@ -76,7 +73,7 @@ public class DataContextEJBQLGroupByHavingIT {
                 Types.VARCHAR,
                 Types.DECIMAL);
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
     }
 
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 81e565191..0246b0ac6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLIsNullIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
-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.runtime.CayenneProjects;
@@ -45,7 +44,6 @@ public class DataContextEJBQLIsNullIT {
 
     private UnitDbAdapter accessStackAdapter;
 
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -54,12 +52,11 @@ public class DataContextEJBQLIsNullIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java
index 91506e7ac..a69f1d26c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLJoinsIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.EJBQLQuery;
-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.unit.di.runtime.CayenneProjects;
@@ -46,7 +45,6 @@ public class DataContextEJBQLJoinsIT {
 
 	private ObjectContext context;
 
-	protected DBHelper dbHelper;
 
 	protected TableHelper tArtist;
 	protected TableHelper tPainting;
@@ -56,15 +54,14 @@ public class DataContextEJBQLJoinsIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		dbHelper = env.dbHelper();
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-		tPainting = new TableHelper(dbHelper, "PAINTING");
+		tPainting = env.table("PAINTING");
 		tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "GALLERY_ID", "PAINTING_TITLE", "ESTIMATED_PRICE")
 				.setColumnTypes(Types.INTEGER, Types.BIGINT, Types.INTEGER, Types.VARCHAR, Types.DECIMAL);
 
-		tGallery = new TableHelper(dbHelper, "GALLERY");
+		tGallery = env.table("GALLERY");
 		tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
 	}
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
index 54c7a696c..f36d29492 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLNumericalFunctionalIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.numeric_types.BigDecimalEntity;
 import org.apache.cayenne.testdo.numeric_types.BigIntegerEntity;
@@ -47,7 +46,6 @@ public class DataContextEJBQLNumericalFunctionalIT {
     @RegisterExtension
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.NUMERIC_TYPES_PROJECT);
 
-    protected DBHelper dbHelper;
 
     private ObjectContext context;
 
@@ -57,8 +55,7 @@ public class DataContextEJBQLNumericalFunctionalIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tBigIntegerEntity = new TableHelper(dbHelper, "BIGINTEGER_ENTITY");
+        tBigIntegerEntity = env.table("BIGINTEGER_ENTITY");
         tBigIntegerEntity.setColumns("ID", "BIG_INTEGER_FIELD");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java
index 0fd0dadaa..fb7b3eefd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLOrderByIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
@@ -42,7 +41,6 @@ public class DataContextEJBQLOrderByIT {
 
     private ObjectContext context;
 
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -51,11 +49,10 @@ public class DataContextEJBQLOrderByIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
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 175d06278..85e0af444 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryCompoundIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.EJBQLQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
@@ -46,7 +45,6 @@ public class DataContextEJBQLQueryCompoundIT {
 
 	private ObjectContext context;
 
-	private DBHelper dbHelper;
 
 	private UnitDbAdapter accessStackAdapter;
 
@@ -57,12 +55,11 @@ public class DataContextEJBQLQueryCompoundIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.context();
-		dbHelper = env.dbHelper();
 		accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-		tCompoundPk = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+		tCompoundPk = env.table("COMPOUND_PK_TEST");
 		tCompoundPk.setColumns("KEY1", "KEY2");
 
-		tCompoundFk = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+		tCompoundFk = env.table("COMPOUND_FK_TEST");
 		tCompoundFk.setColumns("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 74e1b0824..85a4d1ecc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLQueryIT.java
@@ -24,7 +24,6 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.map.LifecycleEvent;
 import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.reflect.LifecycleCallbackRegistry;
-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;
@@ -53,7 +52,6 @@ public class DataContextEJBQLQueryIT {
 
     private ObjectContext context;
 
-    private DBHelper dbHelper;
 
     private UnitDbAdapter accessStackAdapter;
 
@@ -64,12 +62,11 @@ public class DataContextEJBQLQueryIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
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 727b8a951..fd1454c2a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLSubqueryIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.Persistent;
 import org.apache.cayenne.query.EJBQLQuery;
-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.unit.UnitDbAdapter;
@@ -49,7 +48,6 @@ public class DataContextEJBQLSubqueryIT {
 
     private UnitDbAdapter accessStackAdapter;
 
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPainting;
@@ -58,12 +56,11 @@ public class DataContextEJBQLSubqueryIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java
index ccecf47d9..4673e53fa 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateCompoundIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -46,7 +45,6 @@ public class DataContextEJBQLUpdateCompoundIT {
 
     private ObjectContext context;
 
-    private DBHelper dbHelper;
 
     private TableHelper tCompoundPk;
     private TableHelper tCompoundFk;
@@ -55,11 +53,10 @@ public class DataContextEJBQLUpdateCompoundIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tCompoundPk = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+        tCompoundPk = env.table("COMPOUND_PK_TEST");
         tCompoundPk.setColumns("KEY1", "KEY2");
 
-        tCompoundFk = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+        tCompoundFk = env.table("COMPOUND_FK_TEST");
         tCompoundFk.setColumns("PKEY", "F_KEY1", "F_KEY2");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java
index 7e9e4b3b1..8c99f356b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextEJBQLUpdateIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.query.EJBQLQuery;
-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.unit.di.runtime.CayenneProjects;
@@ -43,7 +42,6 @@ public class DataContextEJBQLUpdateIT {
 
     private ObjectContext context;
 
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPainting;
@@ -52,11 +50,10 @@ public class DataContextEJBQLUpdateIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
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 ba9ac4426..9c20b836b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java
@@ -33,7 +33,6 @@ import org.apache.cayenne.log.JdbcEventLogger;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
-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;
@@ -62,7 +61,6 @@ public class DataContextExtrasIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
     protected JdbcEventLogger logger;
     protected AdhocObjectFactory objectFactory;
 
@@ -72,13 +70,12 @@ public class DataContextExtrasIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         logger = env.getInstance(JdbcEventLogger.class);
         objectFactory = env.getInstance(AdhocObjectFactory.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
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 0139b672f..df0228f37 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextFlattenedAttributesIT.java
@@ -30,7 +30,6 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SelectById;
 import org.apache.cayenne.reflect.PersistentDescriptor;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.CompoundPainting;
@@ -60,7 +59,6 @@ public class DataContextFlattenedAttributesIT {
 
     private CayenneRuntime runtime;
     private DataContext context;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPainting;
@@ -71,11 +69,10 @@ public class DataContextFlattenedAttributesIT {
     public void createTestDataSetStructure() {
         context = env.dataContext();
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
@@ -88,10 +85,10 @@ public class DataContextFlattenedAttributesIT {
                 Types.DECIMAL,
                 Types.INTEGER);
 
-        tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
+        tPaintingInfo = env.table("PAINTING_INFO");
         tPaintingInfo.setColumns("PAINTING_ID", "TEXT_REVIEW");
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
     }
 
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 65411b1c1..3dddb1156 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIT.java
@@ -34,7 +34,6 @@ import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.QueryMetadata;
 import org.apache.cayenne.query.QueryRouter;
 import org.apache.cayenne.query.SQLTemplate;
-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.Exhibit;
@@ -68,7 +67,6 @@ public class DataContextIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
 	protected DataContext context;
-	protected DBHelper dbHelper;
 	protected UnitDbAdapter accessStackAdapter;
 	protected DataChannelInterceptor queryInterceptor;
 	protected RuntimeCaseDataSourceFactory dataSourceFactory;
@@ -81,20 +79,19 @@ public class DataContextIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.dataContext();
-		dbHelper = env.dbHelper();
 		accessStackAdapter = env.getInstance(UnitDbAdapter.class);
 		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
 		dataSourceFactory = env.getInstance(RuntimeCaseDataSourceFactory.class);
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-		tExhibit = new TableHelper(dbHelper, "EXHIBIT");
+		tExhibit = env.table("EXHIBIT");
 		tExhibit.setColumns("EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
 
-		tGallery = new TableHelper(dbHelper, "GALLERY");
+		tGallery = env.table("GALLERY");
 		tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
 
-		tPainting = new TableHelper(dbHelper, "PAINTING");
+		tPainting = env.table("PAINTING");
 		tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "ESTIMATED_PRICE");
 	}
 
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 045e88e2a..d9a239f66 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextIteratedQueryIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ResultBatchIterator;
 import org.apache.cayenne.ResultIterator;
 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;
@@ -44,7 +43,6 @@ public class DataContextIteratedQueryIT {
     @RegisterExtension
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
-    protected DBHelper dbHelper;
     private DataContext context;
     private TableHelper tArtist;
     private TableHelper tExhibit;
@@ -54,17 +52,16 @@ public class DataContextIteratedQueryIT {
     @BeforeEach
     public void before() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tExhibit = new TableHelper(dbHelper, "EXHIBIT");
+        tExhibit = env.table("EXHIBIT");
         tExhibit.setColumns("EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "ESTIMATED_PRICE");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
index 2e0ec734e..70618bac4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextJoinAliasesIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 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.Gallery;
@@ -43,7 +42,6 @@ public class DataContextJoinAliasesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     ObjectContext context;
-    DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tExhibit;
@@ -53,17 +51,16 @@ public class DataContextJoinAliasesIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
         
-        tExhibit = new TableHelper(dbHelper, "EXHIBIT");
+        tExhibit = env.table("EXHIBIT");
         tExhibit.setColumns("EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
         
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         
-        tArtistExhibit = new TableHelper(dbHelper, "ARTIST_EXHIBIT");
+        tArtistExhibit = env.table("ARTIST_EXHIBIT");
         tArtistExhibit.setColumns("EXHIBIT_ID", "ARTIST_ID");
     }
     
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 5d5863179..c315c3bc2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextLocalObjectIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.FaultFailureException;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 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.Artist;
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
@@ -49,7 +48,6 @@ public class DataContextLocalObjectIT  {
 
         private DataContext context2;
 
-        private DBHelper dbHelper;
 
         private DataChannelInterceptor interceptor;
 
@@ -62,10 +60,9 @@ public class DataContextLocalObjectIT  {
     public void setUp() throws Exception {
         context1 = env.dataContext();
         context2 = (DataContext) env.runtime().newContext();
-        dbHelper = env.dbHelper();
         interceptor = env.getInstance(DataChannelInterceptor.class);
         runtime = env.runtime();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java
index f2603b2ea..0b16851e8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextNoPkIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
 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.no_pk.NoPkTestEntity;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -46,14 +45,12 @@ public class DataContextNoPkIT  {
 
         protected ObjectContext context;
 
-        protected DBHelper dbHelper;
 
     
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        TableHelper noPkTestTable = new TableHelper(dbHelper, "NO_PK_TEST", "ATTRIBUTE1");
+        TableHelper noPkTestTable = env.table("NO_PK_TEST", "ATTRIBUTE1");
         noPkTestTable.deleteAll();
 
         noPkTestTable.insert(1);
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 17c81d5e9..cf629a0cf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextObjectTrackingIT.java
@@ -24,7 +24,6 @@ import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.Persistent;
 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.Artist;
 import org.apache.cayenne.unit.di.DataChannelInterceptor;
@@ -56,7 +55,6 @@ public class DataContextObjectTrackingIT  {
 
         protected DataContext context;
 
-        protected DBHelper dbHelper;
 
         protected CayenneRuntime runtime;
 
@@ -68,12 +66,11 @@ public class DataContextObjectTrackingIT  {
     public void setUp() throws Exception {
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         runtime = env.runtime();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "ARTIST_ID",
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 7027058ef..0fbe074fb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPaginatedQueryIT.java
@@ -22,7 +22,6 @@ import java.util.List;
 
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.QueryCacheStrategy;
-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.unit.di.runtime.CayenneProjects;
@@ -41,7 +40,6 @@ public class DataContextPaginatedQueryIT  {
 
         protected DataContext context;
 
-        protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
 
@@ -49,8 +47,7 @@ public class DataContextPaginatedQueryIT  {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("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 85b8c156f..71ed454c4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPerformQueryAPIIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.log.JdbcEventLogger;
 import org.apache.cayenne.query.SQLTemplate;
-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;
@@ -56,7 +55,6 @@ public class DataContextPerformQueryAPIIT  {
 
         private DataContext context2;
 
-        private DBHelper dbHelper;
 
         private UnitDbAdapter accessStackAdapter;
 
@@ -72,14 +70,13 @@ public class DataContextPerformQueryAPIIT  {
     public void setUp() throws Exception {
         context = env.dataContext();
         context2 = (DataContext) env.runtime().newContext();
-        dbHelper = env.dbHelper();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         jdbcEventLogger = env.getInstance(JdbcEventLogger.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE", "ESTIMATED_PRICE").setColumnTypes(
                 Types.INTEGER, Types.BIGINT, Types.VARCHAR, Types.DECIMAL);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
index 3e3d23cca..84443c0d3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtras1IT.java
@@ -23,7 +23,6 @@ import java.util.List;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 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.Painting;
 import org.apache.cayenne.testdo.testmap.PaintingInfo;
@@ -46,14 +45,13 @@ public class DataContextPrefetchExtras1IT  {
 
         protected ObjectContext context;
 
-        protected DBHelper dbHelper;
 
     protected void createDataSet() throws Exception {
 
-        TableHelper tPainting = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE");
 
-        TableHelper tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
+        TableHelper tPaintingInfo = env.table("PAINTING_INFO");
         tPaintingInfo.setColumns("PAINTING_ID", "TEXT_REVIEW");
 
         for (int i = 1; i <= 10; i++) {
@@ -65,7 +63,6 @@ public class DataContextPrefetchExtras1IT  {
     @BeforeEach
     public void setUp() {
         context = env.context();
-        dbHelper = env.dbHelper();
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
index d9c7c775d..8239bff33 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchExtrasIT.java
@@ -28,7 +28,6 @@ import org.apache.cayenne.PersistentObject;
 import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.PrefetchTreeNode;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CharFkTestEntity;
 import org.apache.cayenne.testdo.compound.CharPkTestEntity;
@@ -52,7 +51,6 @@ public class DataContextPrefetchExtrasIT  {
 
         protected ObjectContext context;
 
-        protected DBHelper dbHelper;
 
     protected TableHelper tCharPkTest;
     protected TableHelper tCharFkTest;
@@ -63,17 +61,16 @@ public class DataContextPrefetchExtrasIT  {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tCharPkTest = new TableHelper(dbHelper, "CHAR_PK_TEST");
+        tCharPkTest = env.table("CHAR_PK_TEST");
         tCharPkTest.setColumns("PK_COL", "OTHER_COL");
 
-        tCharFkTest = new TableHelper(dbHelper, "CHAR_FK_TEST");
+        tCharFkTest = env.table("CHAR_FK_TEST");
         tCharFkTest.setColumns("PK", "FK_COL", "NAME");
 
-        tCompoundPkTest = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+        tCompoundPkTest = env.table("COMPOUND_PK_TEST");
         tCompoundPkTest.setColumns("KEY1", "KEY2", "NAME");
 
-        tCompoundFkTest = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+        tCompoundFkTest = env.table("COMPOUND_FK_TEST");
         tCompoundFkTest.setColumns("PKEY", "F_KEY1", "F_KEY2", "NAME");
     }
 
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 b84c9dd56..7a2cab35b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchIT.java
@@ -39,7 +39,6 @@ import org.apache.cayenne.map.ObjRelationship;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.PrefetchTreeNode;
 import org.apache.cayenne.query.QueryCacheStrategy;
-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;
@@ -63,7 +62,6 @@ public class DataContextPrefetchIT  {
 
 		protected DataContext context;
 
-		protected DBHelper dbHelper;
 
 		protected DataChannelInterceptor queryInterceptor;
 
@@ -80,31 +78,30 @@ public class DataContextPrefetchIT  {
 	@BeforeEach
 	public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-		tPainting = new TableHelper(dbHelper, "PAINTING");
+		tPainting = env.table("PAINTING");
 		tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "ESTIMATED_PRICE", "GALLERY_ID").setColumnTypes(
 				Types.INTEGER, Types.VARCHAR, Types.BIGINT, Types.DECIMAL, Types.INTEGER);
 
-		tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
+		tPaintingInfo = env.table("PAINTING_INFO");
 		tPaintingInfo.setColumns("PAINTING_ID", "TEXT_REVIEW");
 
-		tExhibit = new TableHelper(dbHelper, "EXHIBIT");
+		tExhibit = env.table("EXHIBIT");
 		tExhibit.setColumns("EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
 
-		tArtistExhibit = new TableHelper(dbHelper, "ARTIST_EXHIBIT");
+		tArtistExhibit = env.table("ARTIST_EXHIBIT");
 		tArtistExhibit.setColumns("ARTIST_ID", "EXHIBIT_ID");
 
-		tGallery = new TableHelper(dbHelper, "GALLERY");
+		tGallery = env.table("GALLERY");
 		tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
 
-		tArtistGroup = new TableHelper(dbHelper, "ARTIST_GROUP");
+		tArtistGroup = env.table("ARTIST_GROUP");
 		tArtistGroup.setColumns("ARTIST_ID", "GROUP_ID");
 
-		tArtGroup = new TableHelper(dbHelper, "ARTGROUP");
+		tArtGroup = env.table("ARTGROUP");
 		tArtGroup.setColumns("GROUP_ID", "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 6fa12d37d..a5c6819d6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchMultistepIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.ValueHolder;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
@@ -56,7 +55,6 @@ public class DataContextPrefetchMultistepIT  {
 
         protected CayenneRuntime runtime;
 
-        protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tExhibit;
@@ -68,17 +66,16 @@ public class DataContextPrefetchMultistepIT  {
     public void setUp() throws Exception {
         context = env.dataContext();
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tExhibit = new TableHelper(dbHelper, "EXHIBIT");
+        tExhibit = env.table("EXHIBIT");
         tExhibit.setColumns("EXHIBIT_ID", "GALLERY_ID", "OPENING_DATE", "CLOSING_DATE");
 
-        tArtistExhibit = new TableHelper(dbHelper, "ARTIST_EXHIBIT");
+        tArtistExhibit = env.table("ARTIST_EXHIBIT");
         tArtistExhibit.setColumns("ARTIST_ID", "EXHIBIT_ID");
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_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 b92a8a914..a968d8cc0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextPrefetchQualifierOverlapIT.java
@@ -22,7 +22,6 @@ import java.util.List;
 
 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;
@@ -41,13 +40,12 @@ public class DataContextPrefetchQualifierOverlapIT  {
 
         private DataContext context;
 
-        private DBHelper dbHelper;
 
     private void createTwoArtistsThreePaintingsDataSet() throws Exception {
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        TableHelper tPainting = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID");
 
         tArtist.insert(1, "A1");
@@ -61,7 +59,6 @@ public class DataContextPrefetchQualifierOverlapIT  {
     @BeforeEach
     public void setUp() {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
     }
 
     @Test
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 e04a23534..c95666e97 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextQueryCachingIT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.cache.QueryCache;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.QueryMetadata;
-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.unit.di.runtime.CayenneProjects;
@@ -51,7 +50,6 @@ public class DataContextQueryCachingIT  {
 
         protected DataContext context;
 
-        protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -67,11 +65,10 @@ public class DataContextQueryCachingIT  {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
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 9f2046c81..5da550fd8 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshQueryIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.QueryCacheStrategy;
 import org.apache.cayenne.query.RefreshQuery;
 import org.apache.cayenne.query.SortOrder;
-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;
@@ -46,7 +45,6 @@ public class DataContextRefreshQueryIT  {
 
         protected DataContext context;
 
-        protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -55,11 +53,10 @@ public class DataContextRefreshQueryIT  {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
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 56a0a82fb..fd7a1122e 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRefreshingIT.java
@@ -25,7 +25,6 @@ import java.util.List;
 
 import org.apache.cayenne.PersistenceState;
 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;
@@ -53,7 +52,6 @@ public class DataContextRefreshingIT  {
 
         protected DataContext context;
 
-        protected DBHelper dbHelper;
 
         protected DataChannelInterceptor queryInterceptor;
 
@@ -64,12 +62,11 @@ public class DataContextRefreshingIT  {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
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 7a3189001..9330e1df2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextRelationshipQueryIT.java
@@ -20,7 +20,6 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.query.RelationshipQuery;
-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;
@@ -42,7 +41,6 @@ public class DataContextRelationshipQueryIT  {
 
         private DataContext context;
 
-        private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPainting;
@@ -51,10 +49,9 @@ public class DataContextRelationshipQueryIT  {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID");
     }
 
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 86367389f..122ac0d4c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateCompoundIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.access;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
@@ -45,7 +44,6 @@ public class DataContextSQLTemplateCompoundIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.COMPOUND_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tCompoundPkTest;
     protected TableHelper tCompoundFkTest;
@@ -54,11 +52,10 @@ public class DataContextSQLTemplateCompoundIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tCompoundPkTest = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+        tCompoundPkTest = env.table("COMPOUND_PK_TEST");
         tCompoundPkTest.setColumns("KEY1", "KEY2");
 
-        tCompoundFkTest = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+        tCompoundFkTest = env.table("COMPOUND_FK_TEST");
         tCompoundFkTest.setColumns("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 e78ef5fd4..f7a604c78 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSQLTemplateIT.java
@@ -29,7 +29,6 @@ import org.apache.cayenne.map.SQLResult;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.SQLTemplate;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
@@ -55,7 +54,6 @@ public class DataContextSQLTemplateIT {
 
 	private CayenneRuntime runtime;
 	protected DataContext context;
-	protected DBHelper dbHelper;
 	protected SQLTemplateCustomizer sqlTemplateCustomizer;
 
 	protected TableHelper tPainting;
@@ -66,12 +64,11 @@ public class DataContextSQLTemplateIT {
 	public void setUp() throws Exception {
 		runtime = env.runtime();
 		context = env.dataContext();
-		dbHelper = env.dbHelper();
 		sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-		tPainting = new TableHelper(dbHelper, "PAINTING");
+		tPainting = env.table("PAINTING");
 		tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "ESTIMATED_PRICE").setColumnTypes(
 				Types.INTEGER, Types.VARCHAR, Types.BIGINT, Types.DECIMAL);
 	}
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 1378450ff..6cbfe7568 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSerializationIT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.log.JdbcEventLogger;
-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.unit.di.runtime.CayenneProjects;
@@ -55,7 +54,6 @@ public class DataContextSerializationIT {
 
     protected DataContext context;
     protected CayenneRuntime runtime;
-    protected DBHelper dbHelper;
     protected JdbcEventLogger logger;
 
     protected TableHelper tArtist;
@@ -65,11 +63,10 @@ public class DataContextSerializationIT {
     public void setUp() throws Exception {
         context = env.dataContext();
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
         logger = env.getInstance(JdbcEventLogger.class);
         CayenneRuntime.bindThreadInjector(runtime.getInjector());
 
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
index cc4266435..ab7d4835d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextSharedCacheEmpiricIT.java
@@ -31,7 +31,6 @@ import org.apache.cayenne.di.Module;
 import org.apache.cayenne.event.DefaultEventManager;
 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.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
@@ -55,7 +54,6 @@ public class DataContextSharedCacheEmpiricIT {
 
     private static final String NEW_NAME = "versionX";
     private CayenneRuntime runtime;
-    private DBHelper dbHelper;
 
     private DataContext c1;
     private DataContext c2;
@@ -66,7 +64,6 @@ public class DataContextSharedCacheEmpiricIT {
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
 
         eventManager = new DefaultEventManager();
         DataRowStore cache = new DataRowStore(
@@ -80,7 +77,7 @@ public class DataContextSharedCacheEmpiricIT {
                 new ObjectStore(cache, new HashMap<>()));
 
         // prepare a single artist record
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
         tArtist.insert(1, "version1");
     }
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 001a8a793..a41304dee 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueriesIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.query.Query;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
@@ -47,7 +46,6 @@ public class DataNodeQueriesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected DataNode node;
-    protected DBHelper dbHelper;
     protected SQLTemplateCustomizer sqlTemplateCustomizer;
 
     protected TableHelper tArtist;
@@ -56,9 +54,8 @@ public class DataNodeQueriesIT {
     @BeforeEach
     public void setUp() throws Exception {
         node = env.getInstance(DataNode.class);
-        dbHelper = env.dbHelper();
         sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
     }
 
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 2f7908c93..73e93df8f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DataRowUtilsIT.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.reflect.ArcProperty;
 import org.apache.cayenne.reflect.ClassDescriptor;
-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.Gallery;
@@ -47,7 +46,6 @@ public class DataRowUtilsIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -56,11 +54,10 @@ public class DataRowUtilsIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
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 12da41ee0..a310ed3e3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/DeleteObjectIT.java
@@ -28,7 +28,6 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.map.DeleteRule;
 import org.apache.cayenne.map.ObjRelationship;
 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;
@@ -47,7 +46,6 @@ public class DeleteObjectIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -56,11 +54,10 @@ public class DeleteObjectIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
index 10a67df74..74780ed83 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ResultBatchIterator;
 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.embeddable.EmbedChild;
 import org.apache.cayenne.testdo.embeddable.EmbedEntity1;
@@ -48,7 +47,6 @@ public class EmbeddingIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.EMBEDDABLE_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
     
     protected TableHelper tEmbedEntity1;
     protected TableHelper tEmbedEntity2;
@@ -59,17 +57,16 @@ public class EmbeddingIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tEmbedEntity1 = new TableHelper(dbHelper, "EMBED_ENTITY1");
+        tEmbedEntity1 = env.table("EMBED_ENTITY1");
         tEmbedEntity1.setColumns("ID", "NAME", "EMBEDDED10", "EMBEDDED20", "EMBEDDED30", "EMBEDDED40");
 
-        tEmbedEntity2 = new TableHelper(dbHelper, "EMBED_ENTITY2");
+        tEmbedEntity2 = env.table("EMBED_ENTITY2");
         tEmbedEntity2.setColumns("ID", "NAME", "ENTITY1_ID", "EMBEDDED10", "EMBEDDED20");
 
-        tEmbedRoot = new TableHelper(dbHelper, "EMBED_ROOT");
+        tEmbedRoot = env.table("EMBED_ROOT");
         tEmbedRoot.setColumns("ID", "NAME", "EMBEDDED10", "EMBEDDED20", "TYPE");
 
-        tEmbedChild = new TableHelper(dbHelper, "EMBED_CHILD");
+        tEmbedChild = env.table("EMBED_CHILD");
         tEmbedChild.setColumns("ID", "CHILD_ATTR");
     }
     
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java
index 7da8896ea..1cbd3817f 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EmbeddingSerializeIT.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 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.embeddable.EmbedEntity1;
 import org.apache.cayenne.testdo.embeddable.Embeddable1;
@@ -45,7 +44,6 @@ public class EmbeddingSerializeIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.EMBEDDABLE_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tEmbedEntity1;
 
@@ -53,8 +51,7 @@ public class EmbeddingSerializeIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tEmbedEntity1 = new TableHelper(dbHelper, "EMBED_ENTITY1");
+        tEmbedEntity1 = env.table("EMBED_ENTITY1");
         tEmbedEntity1.setColumns("ID", "NAME", "EMBEDDED10", "EMBEDDED20", "EMBEDDED30", "EMBEDDED40");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java b/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java
index 69208f331..fa2735bbc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/EnumIT.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.enum_test.Enum1;
 import org.apache.cayenne.testdo.enum_test.EnumEntity;
@@ -47,10 +46,9 @@ public class EnumIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.ENUM_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
 
     private void createDataSet() throws Exception {
-        TableHelper tEnumEntity = new TableHelper(dbHelper, "ENUM_ENTITY");
+        TableHelper tEnumEntity = env.table("ENUM_ENTITY");
         tEnumEntity.setColumns("ID", "ENUM_ATTRIBUTE");
 
         tEnumEntity.insert(1, "two");
@@ -60,7 +58,6 @@ public class EnumIT {
     @BeforeEach
     public void setUp() {
         context = env.context();
-        dbHelper = env.dbHelper();
     }
 
     @Test
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 299bfb7b1..f0483645b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedPrefetchIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.ValueHolder;
 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.ArtGroup;
 import org.apache.cayenne.testdo.testmap.Artist;
@@ -51,7 +50,6 @@ public class FlattenedPrefetchIT {
 
     protected DataChannelInterceptor queryInterceptor;
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -63,22 +61,21 @@ public class FlattenedPrefetchIT {
     public void setUp() throws Exception {
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
         context = env.context();
-        dbHelper = env.dbHelper();
 
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
                 "ARTIST_ID",
                 "ESTIMATED_PRICE");
 
-        tArtgroup = new TableHelper(dbHelper, "ARTGROUP");
+        tArtgroup = env.table("ARTGROUP");
         tArtgroup.setColumns("GROUP_ID", "NAME");
 
-        tArtistGroup = new TableHelper(dbHelper, "ARTIST_GROUP");
+        tArtistGroup = env.table("ARTIST_GROUP");
         tArtistGroup.setColumns("ARTIST_ID", "GROUP_ID");
     }
 
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 00aa7a94e..b99a3f065 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/FlattenedRelationshipInContextIT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.reflect.ArcProperty;
 import org.apache.cayenne.reflect.ClassDescriptor;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships_flattened.FlattenedTest3;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -45,7 +44,6 @@ public class FlattenedRelationshipInContextIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RELATIONSHIPS_FLATTENED_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     private TableHelper tFlattenedTest1;
     private TableHelper tFlattenedTest2;
@@ -55,14 +53,13 @@ public class FlattenedRelationshipInContextIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tFlattenedTest1 = new TableHelper(dbHelper, "FLATTENED_TEST_1");
+        tFlattenedTest1 = env.table("FLATTENED_TEST_1");
         tFlattenedTest1.setColumns("FT1_ID", "NAME");
 
-        tFlattenedTest2 = new TableHelper(dbHelper, "FLATTENED_TEST_2");
+        tFlattenedTest2 = env.table("FLATTENED_TEST_2");
         tFlattenedTest2.setColumns("FT2_ID", "FT1_ID", "NAME");
 
-        tFlattenedTest3 = new TableHelper(dbHelper, "FLATTENED_TEST_3");
+        tFlattenedTest3 = env.table("FLATTENED_TEST_3");
         tFlattenedTest3.setColumns("FT3_ID", "FT2_ID", "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 48638ba8b..c1f1d501a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/IdentityColumnsIT.java
@@ -29,7 +29,6 @@ import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 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.generated.GeneratedColumnCompKey;
 import org.apache.cayenne.testdo.generated.GeneratedColumnCompMaster;
@@ -56,7 +55,6 @@ public class IdentityColumnsIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.GENERATED_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
     protected DbAdapter adapter;
     protected DataNode node;
 
@@ -66,10 +64,9 @@ public class IdentityColumnsIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         adapter = env.getInstance(DbAdapter.class);
         node = env.getInstance(DataNode.class);
-        joinTable = new TableHelper(dbHelper, "GENERATED_JOIN");
+        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 bcc17bace..23502a1e3 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/JointPrefetchIT.java
@@ -31,7 +31,6 @@ import org.apache.cayenne.query.SQLSelect;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SortOrder;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Gallery;
@@ -63,7 +62,6 @@ public class JointPrefetchIT {
     protected DataContext context;
     protected CayenneRuntime runtime;
     protected DataChannelInterceptor queryInterceptor;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tGallery;
@@ -75,14 +73,13 @@ public class JointPrefetchIT {
         context = env.dataContext();
         runtime = env.runtime();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
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 8d569216c..5e9772217 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextReadIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.Persistent;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
@@ -52,7 +51,6 @@ public class NestedDataContextReadIT {
     private CayenneRuntime runtime;
     private DataContext context;
     private DataChannelInterceptor queryInterceptor;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPainting;
@@ -62,11 +60,10 @@ public class NestedDataContextReadIT {
         runtime = env.runtime();
         context = env.dataContext();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
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 a98f16009..b787fdef6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NestedDataContextWriteIT.java
@@ -31,7 +31,6 @@ import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
 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;
@@ -55,7 +54,6 @@ public class NestedDataContextWriteIT {
     private CayenneRuntime runtime;
     private DataContext context;
     private DataChannelInterceptor queryInterceptor;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPainting;
@@ -65,11 +63,10 @@ public class NestedDataContextWriteIT {
         runtime = env.runtime();
         context = env.dataContext();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
@@ -80,7 +77,7 @@ public class NestedDataContextWriteIT {
                 Types.BIGINT,
                 Types.DECIMAL);
 
-        TableHelper tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO");
+        TableHelper tPaintingInfo = env.table("PAINTING_INFO");
         tPaintingInfo.setColumns("PAINTING_ID", "TEXT_REVIEW", "IMAGE_BLOB");
     }
 
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 70592ec72..faf147776 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
@@ -24,7 +24,6 @@ import java.util.Random;
 import org.apache.cayenne.ObjectContext;
 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.test.parallel.ParallelTestContainer;
 import org.apache.cayenne.testdo.testmap.Artist;
@@ -43,7 +42,6 @@ public class NestedDataContext_DeadlockIT {
 
 	private DataContext parent;
 	private CayenneRuntime runtime;
-	protected DBHelper dbHelper;
 
 	protected TableHelper tArtist;
 
@@ -51,8 +49,7 @@ public class NestedDataContext_DeadlockIT {
 	public void setUp() throws Exception {
 		parent = env.dataContext();
 		runtime = env.runtime();
-		dbHelper = env.dbHelper();
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("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 e9836da48..513d155fb 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/NumericTypesIT.java
@@ -29,7 +29,6 @@ import org.apache.cayenne.exp.property.NumericProperty;
 import org.apache.cayenne.exp.property.PropertyFactory;
 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.numeric_types.BigDecimalEntity;
 import org.apache.cayenne.testdo.numeric_types.BigIntegerEntity;
@@ -61,7 +60,6 @@ public class NumericTypesIT {
     protected DataContext context;
     protected DataContext context1;
     protected CayenneRuntime runtime;
-    protected DBHelper dbHelper;
 
     private final CommitStats commitStats = new CommitStats(() -> runtime.getDataDomain());
 
@@ -73,13 +71,12 @@ public class NumericTypesIT {
         context = env.dataContext();
         context1 = (DataContext) env.runtime().newContext();
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
         commitStats.before();
 
-        tSmallintTest = new TableHelper(dbHelper, "SMALLINT_TEST");
+        tSmallintTest = env.table("SMALLINT_TEST");
         tSmallintTest.setColumns("ID", "SMALLINT_COL");
 
-        tTinyintTest = new TableHelper(dbHelper, "TINYINT_TEST");
+        tTinyintTest = env.table("TINYINT_TEST");
         tTinyintTest.setColumns("ID", "TINYINT_COL");
     }
 
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 d2fe4268a..f6f5f6a11 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/ObjectStoreDiffRetainingIT.java
@@ -20,7 +20,6 @@
 package org.apache.cayenne.access;
 
 import org.apache.cayenne.Cayenne;
-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;
@@ -41,7 +40,6 @@ public class ObjectStoreDiffRetainingIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -49,12 +47,11 @@ public class ObjectStoreDiffRetainingIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH")
                 .setColumnTypes(Types.BIGINT, Types.CHAR, Types.DATE);
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "ARTIST_ID",
                 "ESTIMATED_PRICE",
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 d61086f8e..b637b791a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/OptimisticLockingIT.java
@@ -26,7 +26,6 @@ import java.util.Map;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.Ordering;
 import org.apache.cayenne.query.SortOrder;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.locking.RelLockingTestEntity;
 import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
@@ -47,7 +46,6 @@ public class OptimisticLockingIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.LOCKING_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tSimpleLockingTest;
     protected TableHelper tRelLockingTest;
@@ -56,18 +54,17 @@ public class OptimisticLockingIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tSimpleLockingTest = new TableHelper(dbHelper, "SIMPLE_LOCKING_TEST");
+        tSimpleLockingTest = env.table("SIMPLE_LOCKING_TEST");
         tSimpleLockingTest.setColumns("LOCKING_TEST_ID", "NAME", "DESCRIPTION", "INT_COLUMN_NOTNULL")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.INTEGER);
 
-        tRelLockingTest = new TableHelper(dbHelper, "REL_LOCKING_TEST");
+        tRelLockingTest = env.table("REL_LOCKING_TEST");
         tRelLockingTest.setColumns(
                 "REL_LOCKING_TEST_ID",
                 "SIMPLE_LOCKING_TEST_ID",
                 "NAME");
 
-        tLockingHelper = new TableHelper(dbHelper, "LOCKING_HELPER");
+        tLockingHelper = env.table("LOCKING_HELPER");
         tLockingHelper.setColumns("LOCKING_HELPER_ID", "REL_LOCKING_TEST_ID", "NAME");
     }
 
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 212dd6ed6..e3613a815 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/PrimitiveAttributesIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 import java.util.List;
 
 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.primitive.PrimitivesTestEntity;
 import org.apache.cayenne.unit.UnitDbAdapter;
@@ -41,13 +40,11 @@ public class PrimitiveAttributesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.PRIMITIVE_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter unitDbAdapter;
 
     @BeforeEach
     public void setUp() {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
     }
 
@@ -63,7 +60,7 @@ public class PrimitiveAttributesIT {
 
     @Test
     public void selectTest() throws Exception {
-        TableHelper tPrimitives = new TableHelper(dbHelper, "PRIMITIVES_TEST");
+        TableHelper tPrimitives = env.table("PRIMITIVES_TEST");
         tPrimitives.setColumns("ID", "BOOLEAN_COLUMN", "INT_COLUMN", "CHAR_COLUMN");
         tPrimitives.insert(1, true, -100, String.valueOf('a'))
                 .insert(2, false, 0, String.valueOf('~'))
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java b/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
index 1a167082a..5da9ce855 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/QuotedIdentifiersIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.query.ObjectIdQuery;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.RelationshipQuery;
 import org.apache.cayenne.query.UpdateBatchQuery;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.quotemap.QuoteAdress;
 import org.apache.cayenne.testdo.quotemap.Quote_Person;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -48,12 +47,10 @@ public class QuotedIdentifiersIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.QUOTED_IDENTIFIERS_PROJECT);
 
     private ObjectContext context;
-    protected DBHelper dbHelper;
 
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         QuoteAdress quoteAdress = context.newObject(QuoteAdress.class);
         quoteAdress.setCity("city");
         quoteAdress.setGroup("324");
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 76fe53436..e1cee7385 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListDataRowsIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
 
 import org.apache.cayenne.DataRow;
 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.unit.di.runtime.CayenneProjects;
@@ -47,7 +46,6 @@ public class SimpleIdIncrementalFaultListDataRowsIT {
 
     private DataContext context;
     private DataContext context1;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private SimpleIdIncrementalFaultList<?> list;
@@ -56,8 +54,7 @@ public class SimpleIdIncrementalFaultListDataRowsIT {
     public void setUp() throws Exception {
         context = env.dataContext();
         context1 = (DataContext) env.runtime().newContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("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 a207fc6f6..748443fdf 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListIT.java
@@ -25,7 +25,6 @@ import java.util.ListIterator;
 
 import org.apache.cayenne.Persistent;
 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.unit.di.runtime.CayenneProjects;
@@ -43,15 +42,13 @@ public class SimpleIdIncrementalFaultListIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
 
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
     }
 
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 61c4892f7..1c9ccb6cc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/SimpleIdIncrementalFaultListPrefetchIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.ValueHolder;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.PrefetchTreeNode;
-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;
@@ -49,7 +48,6 @@ public class SimpleIdIncrementalFaultListPrefetchIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
     protected DataChannelInterceptor queryInterceptor;
 
     protected TableHelper tArtist;
@@ -58,12 +56,11 @@ public class SimpleIdIncrementalFaultListPrefetchIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPaining = new TableHelper(dbHelper, "PAINTING");
+        tPaining = env.table("PAINTING");
         tPaining.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java b/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java
index da21bb2fb..8024bca12 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/UUIDIT.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.exp.property.PropertyFactory;
 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.uuid.UuidPkEntity;
 import org.apache.cayenne.testdo.uuid.UuidTestEntity;
@@ -44,15 +43,13 @@ public class UUIDIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.UUID_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
 
     private TableHelper uuidPkEntity;
 
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        uuidPkEntity = new TableHelper(dbHelper, "UUID_PK_ENTITY", "ID");
+        uuidPkEntity = env.table("UUID_PK_ENTITY", "ID");
     }
 
     @Test
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
index 985b39394..ced016055 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.query.EJBQLQuery;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SelectById;
 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.inheritance_vertical.*;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -55,7 +54,6 @@ public class VerticalInheritanceIT {
 	        .withExtraModules(GraphSorterModule.class);
 
 	protected ObjectContext context;
-	protected DBHelper dbHelper;
 	protected CayenneRuntime runtime;
 
 	TableHelper ivAbstractTable;
@@ -65,12 +63,11 @@ public class VerticalInheritanceIT {
 	@BeforeEach
 	public void setup() {
 		context = env.context();
-		dbHelper = env.dbHelper();
 		runtime = env.runtime();
-		ivAbstractTable = new TableHelper(dbHelper, "IV_ABSTRACT");
+		ivAbstractTable = env.table("IV_ABSTRACT");
 		ivAbstractTable.setColumns("ID", "PARENT_ID", "TYPE")
 				.setColumnTypes(Types.INTEGER, Types.INTEGER, Types.CHAR);
-		ivConcreteTable = new TableHelper(dbHelper, "IV_CONCRETE");
+		ivConcreteTable = env.table("IV_CONCRETE");
 		ivConcreteTable.setColumns("ID", "NAME", "RELATED_ABSTRACT_ID")
 				.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 	}
@@ -87,7 +84,7 @@ public class VerticalInheritanceIT {
     @Test
 	public void insertRoot() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
 		assertEquals(0, ivRootTable.getRowCount());
@@ -109,10 +106,10 @@ public class VerticalInheritanceIT {
     @Test
 	public void insertSub1() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME");
 
 		IvSub1 sub1 = context.newObject(IvSub1.class);
@@ -153,10 +150,10 @@ public class VerticalInheritanceIT {
     @Test
 	public void insertSub2() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
-		TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+		TableHelper ivSub2Table = env.table("IV_SUB2");
 		ivSub2Table.setColumns("ID", "SUB2_NAME", "SUB2_ATTR");
 
 		IvSub2 sub2 = context.newObject(IvSub2.class);
@@ -227,10 +224,10 @@ public class VerticalInheritanceIT {
 	@Test
 	public void validationOnInsertSub3Ok() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
-		TableHelper ivSub3Table = new TableHelper(dbHelper, "IV_SUB3");
+		TableHelper ivSub3Table = env.table("IV_SUB3");
 		ivSub3Table.setColumns("ID", "IV_ROOT_ID");
 
 		IvSub3 sub3 = context.newObject(IvSub3.class);
@@ -247,13 +244,13 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void updateRelationSub3() throws Exception {
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 		ivRootTable.insert(1, "root1", null);
 		ivRootTable.insert(2, "root2", null);
 		ivRootTable.insert(3, "name", "IvSub3");
 
-		TableHelper ivSub3Table = new TableHelper(dbHelper, "IV_SUB3");
+		TableHelper ivSub3Table = env.table("IV_SUB3");
 		ivSub3Table.setColumns("ID", "IV_ROOT_ID");
 		ivSub3Table.insert(3, 1);
 
@@ -281,13 +278,13 @@ public class VerticalInheritanceIT {
     @Test
 	public void insertSub1Sub1() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME", "SUB1_PRICE");
 
-		TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+		TableHelper ivSub1Sub1Table = env.table("IV_SUB1_SUB1");
 		ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME", "SUB1_SUB1_PRICE");
 
 		IvSub1Sub1 sub1Sub1 = context.newObject(IvSub1Sub1.class);
@@ -324,11 +321,11 @@ public class VerticalInheritanceIT {
     @Test
 	public void selectQuerySuperSub() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
 				Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME");
 
 		// insert
@@ -366,17 +363,17 @@ public class VerticalInheritanceIT {
     @Test
 	public void selectQueryDeepAndWide() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
 				Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME");
 
-		TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+		TableHelper ivSub2Table = env.table("IV_SUB2");
 		ivSub2Table.setColumns("ID", "SUB2_NAME");
 
-		TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+		TableHelper ivSub1Sub1Table = env.table("IV_SUB1_SUB1");
 		ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
 
 		// insert
@@ -436,17 +433,17 @@ public class VerticalInheritanceIT {
     @Test
 	public void selectQueryMiddleLeaf() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
 				Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME");
 
-		TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+		TableHelper ivSub2Table = env.table("IV_SUB2");
 		ivSub2Table.setColumns("ID", "SUB2_NAME");
 
-		TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+		TableHelper ivSub1Sub1Table = env.table("IV_SUB1_SUB1");
 		ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
 
 		// insert
@@ -495,17 +492,17 @@ public class VerticalInheritanceIT {
     @Test
 	public void deleteMix() throws Exception {
 
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
 				Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME");
 
-		TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+		TableHelper ivSub2Table = env.table("IV_SUB2");
 		ivSub2Table.setColumns("ID", "SUB2_NAME");
 
-		TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+		TableHelper ivSub1Sub1Table = env.table("IV_SUB1_SUB1");
 		ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME");
 
 		// insert
@@ -554,11 +551,11 @@ public class VerticalInheritanceIT {
     @Test
 	public void selectQueryAttributeOverrides() throws Exception {
 
-		TableHelper iv1RootTable = new TableHelper(dbHelper, "IV1_ROOT");
+		TableHelper iv1RootTable = env.table("IV1_ROOT");
 		iv1RootTable.setColumns("ID", "NAME", "DISCRIMINATOR").setColumnTypes(
 				Types.INTEGER, Types.VARCHAR, Types.VARCHAR);
 
-		TableHelper iv1Sub1Table = new TableHelper(dbHelper, "IV1_SUB1");
+		TableHelper iv1Sub1Table = env.table("IV1_SUB1");
 		iv1Sub1Table.setColumns("ID", "SUB1_NAME");
 
 		// insert
@@ -594,9 +591,9 @@ public class VerticalInheritanceIT {
 
     @Test
 	public void insertWithRelationship() throws SQLException {
-		TableHelper xTable = new TableHelper(dbHelper, "IV2_X");
-		TableHelper rootTable = new TableHelper(dbHelper, "IV2_ROOT");
-		TableHelper sub1Table = new TableHelper(dbHelper, "IV2_SUB1");
+		TableHelper xTable = env.table("IV2_X");
+		TableHelper rootTable = env.table("IV2_ROOT");
+		TableHelper sub1Table = env.table("IV2_SUB1");
 
 		assertEquals(0, xTable.getRowCount());
 		assertEquals(0, rootTable.getRowCount());
@@ -686,13 +683,13 @@ public class VerticalInheritanceIT {
 
 	@Test
 	public void updateFlattenedRelationshipWithInverse() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
-		TableHelper ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+		TableHelper ivBaseTable = env.table("IV_BASE");
 		ivBaseTable.setColumns("ID", "NAME", "TYPE").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+		TableHelper ivImplTable = env.table("IV_IMPL");
 		ivImplTable.setColumns("ID", "ATTR1", "OTHER3_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
 		ivOtherTable.insert(1, "other1");
@@ -862,13 +859,13 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void baseJointPrefetchBelongsTo() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME", "BASE_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
-		TableHelper ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+		TableHelper ivBaseTable = env.table("IV_BASE");
 		ivBaseTable.setColumns("ID", "NAME", "TYPE").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+		TableHelper ivImplTable = env.table("IV_IMPL");
 		ivImplTable.setColumns("ID", "ATTR1").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
 		ivBaseTable.insert(1, "Impl 1", "I");
@@ -892,13 +889,13 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void baseDisjointPrefetchBelongsTo() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME", "BASE_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
-		TableHelper ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+		TableHelper ivBaseTable = env.table("IV_BASE");
 		ivBaseTable.setColumns("ID", "NAME", "TYPE").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+		TableHelper ivImplTable = env.table("IV_IMPL");
 		ivImplTable.setColumns("ID", "ATTR1").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
 		ivBaseTable.insert(1, "Impl 1", "I");
@@ -922,13 +919,13 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void baseDisjointByIdPrefetchBelongsTo() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME", "BASE_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
-		TableHelper ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+		TableHelper ivBaseTable = env.table("IV_BASE");
 		ivBaseTable.setColumns("ID", "NAME", "TYPE").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+		TableHelper ivImplTable = env.table("IV_IMPL");
 		ivImplTable.setColumns("ID", "ATTR1").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
 		ivBaseTable.insert(1, "Impl 1", "I");
@@ -952,13 +949,13 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void implJointPrefetchBelongsTo() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME", "IMPL_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
-		TableHelper ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+		TableHelper ivBaseTable = env.table("IV_BASE");
 		ivBaseTable.setColumns("ID", "NAME", "TYPE").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+		TableHelper ivImplTable = env.table("IV_IMPL");
 		ivImplTable.setColumns("ID", "ATTR1").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
 		ivBaseTable.insert(1, "Impl 1", "I");
@@ -987,13 +984,13 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void implDisjointPrefetchBelongsTo() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME", "IMPL_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
-		TableHelper ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+		TableHelper ivBaseTable = env.table("IV_BASE");
 		ivBaseTable.setColumns("ID", "NAME", "TYPE").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+		TableHelper ivImplTable = env.table("IV_IMPL");
 		ivImplTable.setColumns("ID", "ATTR1").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
 		ivBaseTable.insert(1, "Impl 1", "I");
@@ -1024,13 +1021,13 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void implDisjointByIdPrefetchBelongsTo() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME", "IMPL_ID").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
-		TableHelper ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+		TableHelper ivBaseTable = env.table("IV_BASE");
 		ivBaseTable.setColumns("ID", "NAME", "TYPE").setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+		TableHelper ivImplTable = env.table("IV_IMPL");
 		ivImplTable.setColumns("ID", "ATTR1").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
 		ivBaseTable.insert(1, "Impl 1", "I");
@@ -1061,14 +1058,14 @@ public class VerticalInheritanceIT {
 	 */
 	@Test
 	public void updateWithOptimisticLocks() throws SQLException {
-		TableHelper ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+		TableHelper ivOtherTable = env.table("IV_OTHER");
 		ivOtherTable.setColumns("ID", "NAME").setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
-		TableHelper ivBaseWithLockTable = new TableHelper(dbHelper, "IV_BASE_WITH_LOCK");
+		TableHelper ivBaseWithLockTable = env.table("IV_BASE_WITH_LOCK");
 		ivBaseWithLockTable.setColumns("ID", "NAME", "TYPE")
 				.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-		TableHelper ivImplWithLockTable = new TableHelper(dbHelper, "IV_IMPL_WITH_LOCK");
+		TableHelper ivImplWithLockTable = env.table("IV_IMPL_WITH_LOCK");
 		ivImplWithLockTable.setColumns("ID", "ATTR1", "OTHER1_ID")
 				.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.INTEGER);
 
@@ -1091,13 +1088,13 @@ public class VerticalInheritanceIT {
 
 	@Test
 	public void countEjbqlQuery() throws Exception {
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME");
 
-		TableHelper ivSub2Table = new TableHelper(dbHelper, "IV_SUB2");
+		TableHelper ivSub2Table = env.table("IV_SUB2");
 		ivSub2Table.setColumns("ID", "SUB2_ATTR", "SUB2_NAME");
 
 		// Root, IvSub1, IvSub2
@@ -1133,13 +1130,13 @@ public class VerticalInheritanceIT {
 
 	@Test
 	public void columnSelectVerticalInheritanceSub1() throws SQLException {
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME", "SUB1_PRICE");
 
-		TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+		TableHelper ivSub1Sub1Table = env.table("IV_SUB1_SUB1");
 		ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME", "SUB1_SUB1_PRICE");
 
 		IvSub1Sub1 sub1Sub1 = context.newObject(IvSub1Sub1.class);
@@ -1181,13 +1178,13 @@ public class VerticalInheritanceIT {
 
 	@Test
 	public void columnSelectVerticalInheritanceSub1Sub1() throws SQLException {
-		TableHelper ivRootTable = new TableHelper(dbHelper, "IV_ROOT");
+		TableHelper ivRootTable = env.table("IV_ROOT");
 		ivRootTable.setColumns("ID", "NAME", "DISCRIMINATOR");
 
-		TableHelper ivSub1Table = new TableHelper(dbHelper, "IV_SUB1");
+		TableHelper ivSub1Table = env.table("IV_SUB1");
 		ivSub1Table.setColumns("ID", "SUB1_NAME", "SUB1_PRICE");
 
-		TableHelper ivSub1Sub1Table = new TableHelper(dbHelper, "IV_SUB1_SUB1");
+		TableHelper ivSub1Sub1Table = env.table("IV_SUB1_SUB1");
 		ivSub1Sub1Table.setColumns("ID", "SUB1_SUB1_NAME", "SUB1_SUB1_PRICE");
 
 		IvSub1Sub1 sub1Sub1 = context.newObject(IvSub1Sub1.class);
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java
index d6939dd2d..b44b899bc 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/VerticalInheritanceMultipleAttributesIT.java
@@ -26,7 +26,6 @@ import java.util.List;
 import org.apache.cayenne.ObjectContext;
 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.inheritance_vertical.IvImpl;
 import org.apache.cayenne.testdo.inheritance_vertical.IvOther;
@@ -49,7 +48,6 @@ public class VerticalInheritanceMultipleAttributesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.INHERITANCE_VERTICAL_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
     protected CayenneRuntime runtime;
 
     TableHelper ivOtherTable, ivBaseTable, ivImplTable;
@@ -57,17 +55,16 @@ public class VerticalInheritanceMultipleAttributesIT {
     @BeforeEach
     public void setupTableHelpers() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         runtime = env.runtime();
-        ivOtherTable = new TableHelper(dbHelper, "IV_OTHER");
+        ivOtherTable = env.table("IV_OTHER");
         ivOtherTable.setColumns("ID", "NAME")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR);
 
-        ivBaseTable = new TableHelper(dbHelper, "IV_BASE");
+        ivBaseTable = env.table("IV_BASE");
         ivBaseTable.setColumns("ID", "NAME", "TYPE")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.CHAR);
 
-        ivImplTable = new TableHelper(dbHelper, "IV_IMPL");
+        ivImplTable = env.table("IV_IMPL");
         ivImplTable.setColumns("ID", "ATTR1", "ATTR2", "OTHER1_ID", "OTHER2_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.VARCHAR, Types.INTEGER, Types.INTEGER);
 
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 e8036819a..af41f8794 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
@@ -41,7 +41,6 @@ import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLAction;
 import org.apache.cayenne.query.SQLTemplate;
 import org.apache.cayenne.query.SortOrder;
-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.unit.UnitDbAdapter;
@@ -64,7 +63,6 @@ public class SQLTemplateActionIT {
 	protected JdbcAdapter adapter;
 	protected UnitDbAdapter unitDbAdapter;
 	protected ObjectContext objectContext;
-	protected DBHelper dbHelper;
 	protected SQLTemplateCustomizer sqlTemplateCustomizer;
 
 	protected TableHelper tArtist;
@@ -76,9 +74,8 @@ public class SQLTemplateActionIT {
 		adapter = env.getInstance(JdbcAdapter.class);
 		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
 		objectContext = env.context();
-		dbHelper = env.dbHelper();
 		sqlTemplateCustomizer = env.getInstance(SQLTemplateCustomizer.class);
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 	}
 
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 56475f20d..d66cf89bf 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
@@ -21,7 +21,6 @@ package org.apache.cayenne.access.jdbc;
 
 import org.apache.cayenne.access.DataContext;
 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.unsupported_distinct_types.Customer;
 import org.apache.cayenne.testdo.unsupported_distinct_types.Product;
@@ -46,7 +45,6 @@ public class SelectActionWithUnsupportedDistinctTypesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.UNSUPPORTED_DISTINCT_TYPES_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     private TableHelper tProduct;
     private TableHelper tComposition;
@@ -56,17 +54,16 @@ public class SelectActionWithUnsupportedDistinctTypesIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tProduct = new TableHelper(dbHelper, "PRODUCT");
+        tProduct = env.table("PRODUCT");
         tProduct.setColumns("ID", "LONGVARCHAR_COL");
 
-        tCustomer = new TableHelper(dbHelper, "CUSTOMER");
+        tCustomer = env.table("CUSTOMER");
         tCustomer.setColumns("ID", "LONGVARCHAR_COL");
 
-        tComposition = new TableHelper(dbHelper, "COMPOSITION");
+        tComposition = env.table("COMPOSITION");
         tComposition.setColumns("BASE_ID", "CONTAINED_ID");
 
-        tOrders = new TableHelper(dbHelper, "ORDERS");
+        tOrders = env.table("ORDERS");
         tOrders.setColumns("CUSTOMER_ID", "PRODUCT_ID");
     }
 
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 73276ae54..4aa4f310d 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
@@ -29,7 +29,6 @@ import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.PrefetchTreeNode;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.testmap.ArtGroup;
 import org.apache.cayenne.testdo.testmap.Artist;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
@@ -60,7 +59,6 @@ public class DefaultSelectTranslatorIT {
 
 	private DataContext context;
 	private UnitDbAdapter unitAdapter;
-	private DBHelper dbHelper;
 	private JdbcEventLogger logger;
 	private DataNode dataNode;
 
@@ -69,7 +67,6 @@ public class DefaultSelectTranslatorIT {
 	public void setUp() {
 		context = env.dataContext();
 		unitAdapter = env.getInstance(UnitDbAdapter.class);
-		dbHelper = env.dbHelper();
 		logger = env.getInstance(JdbcEventLogger.class);
 		dataNode = env.getInstance(DataNode.class);
 	}
diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java
index 348e67677..02b3ec8a2 100644
--- a/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/select/QualifierTranslatorIT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.access.sqlbuilder.sqltree.Node;
 import org.apache.cayenne.exp.ExpressionFactory;
 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.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
@@ -48,14 +47,12 @@ public class QualifierTranslatorIT {
 
     private CayenneRuntime runtime;
     private ObjectContext context;
-    protected DBHelper dbHelper;
 
     @BeforeEach
     public void setUp() throws Exception {
         runtime = env.runtime();
         context = env.context();
-        dbHelper = env.dbHelper();
-        TableHelper tCompoundPKTest = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+        TableHelper tCompoundPKTest = env.table("COMPOUND_PK_TEST");
         tCompoundPKTest.setColumns("KEY1", "KEY2", "NAME");
         tCompoundPKTest.insert("PK1", "PK2", "BBB");
         tCompoundPKTest.insert("PK3", "PK4", "CCC");
diff --git a/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java b/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java
index 0adf1d1c5..711028cd0 100644
--- a/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/ashwood/AshwoodEntitySorter_RelationshipsIT.java
@@ -28,7 +28,6 @@ import java.util.List;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.map.ObjEntity;
 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.relationships.ReflexiveAndToOne;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -42,7 +41,6 @@ public class AshwoodEntitySorter_RelationshipsIT {
 	@RegisterExtension
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RELATIONSHIPS_PROJECT);
 
-	protected DBHelper dbHelper;
 	protected ObjectContext context;
 
 	private TableHelper tRelationshipHelper;
@@ -52,15 +50,14 @@ public class AshwoodEntitySorter_RelationshipsIT {
 
 	@BeforeEach
 	public void setUp() throws Exception {
-		dbHelper = env.dbHelper();
 		context = env.context();
 		this.sorter = new AshwoodEntitySorter();
 		sorter.setEntityResolver(context.getEntityResolver());
 
-		tRelationshipHelper = new TableHelper(dbHelper, "RELATIONSHIP_HELPER");
+		tRelationshipHelper = env.table("RELATIONSHIP_HELPER");
 		tRelationshipHelper.setColumns("RELATIONSHIP_HELPER_ID", "NAME");
 
-		tReflexiveAndToOne = new TableHelper(dbHelper, "REFLEXIVE_AND_TO_ONE");
+		tReflexiveAndToOne = env.table("REFLEXIVE_AND_TO_ONE");
 		tReflexiveAndToOne.setColumns("REFLEXIVE_AND_TO_ONE_ID", "PARENT_ID", "RELATIONSHIP_HELPER_ID", "NAME")
 				.setColumnTypes(Types.INTEGER, Types.INTEGER, Types.INTEGER, Types.VARCHAR);
 	}
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 903336b69..2e8d9f53d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/AggregateExpInMemoryEvaluationIT.java
@@ -29,7 +29,6 @@ import java.util.Locale;
 
 import org.apache.cayenne.access.DataContext;
 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;
@@ -51,14 +50,12 @@ public class AggregateExpInMemoryEvaluationIT {
     // Format: d/m/YY
     private static final DateFormat DATE_FORMAT = DateFormat.getDateInstance(DateFormat.SHORT, Locale.US);
 
-    private DBHelper dbHelper;
     private DataContext context;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
-        dbHelper = env.dbHelper();
         context = env.dataContext();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
 
@@ -70,11 +67,11 @@ public class AggregateExpInMemoryEvaluationIT {
             tArtist.insert(i, "artist" + i, dates[i % 5]);
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID", "ESTIMATED_PRICE");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1, i * 10);
@@ -85,7 +82,7 @@ public class AggregateExpInMemoryEvaluationIT {
     @AfterEach
     public void clearArtistsDataSet() throws Exception {
         for(String table : Arrays.asList("PAINTING", "ARTIST", "GALLERY")) {
-            TableHelper tHelper = new TableHelper(dbHelper, table);
+            TableHelper tHelper = env.table(table);
             tHelper.deleteAll();
         }
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java
index fc2936e24..50da7b8b6 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/CaseWhenIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.exp.property.PropertyFactory;
 import org.apache.cayenne.exp.property.StringProperty;
 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.Painting;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -45,13 +44,11 @@ public class CaseWhenIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private ObjectContext context;
-    protected DBHelper dbHelper;
 
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        new TableHelper(dbHelper, "PAINTING")
+        env.table("PAINTING")
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "PAINTING_DESCRIPTION", "ESTIMATED_PRICE")
                 .insert(1, "Black square", "Oil on linen, 79.5 x 79.5 cm", 15);
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java b/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
index 6d97c0cb7..39ba8d13c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/ParsedExpQualifierCompatIT.java
@@ -26,7 +26,6 @@ import java.util.Map;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.PrefetchTreeNode;
-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;
@@ -44,7 +43,6 @@ public class ParsedExpQualifierCompatIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
     protected TableHelper tPainting;
@@ -52,11 +50,10 @@ public class ParsedExpQualifierCompatIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns(
                 "PAINTING_ID",
                 "PAINTING_TITLE",
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 924a0ef94..fc281ef66 100644
--- a/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/exp/TranslateExpressionIT.java
@@ -24,7 +24,6 @@ import java.util.List;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.map.ObjEntity;
 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.Gallery;
@@ -43,13 +42,11 @@ public class TranslateExpressionIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
@@ -57,11 +54,11 @@ public class TranslateExpressionIT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1);
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 e938f5a7f..6248f8b20 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
@@ -24,7 +24,6 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionException;
 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.Gallery;
@@ -46,15 +45,13 @@ public class ASTExistsIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
     private DataChannelInterceptor queryInterceptor;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
@@ -62,11 +59,11 @@ public class ASTExistsIT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1);
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 e94672683..a13e3490e 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
@@ -27,7 +27,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.legacy_datetime.DateTestEntity;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -48,13 +47,11 @@ public class ASTExtractIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.LEGACY_DATE_TIME_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter unitDbAdapter;
 
     @BeforeEach
     public void createDataSet() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
         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 85b1a0207..46f4a8bf5 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
@@ -26,7 +26,6 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.testdo.legacy_datetime.DateTestEntity;
 import org.apache.cayenne.unit.UnitDbAdapter;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -48,13 +47,11 @@ public class ASTFunctionCallDateIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.LEGACY_DATE_TIME_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter unitDbAdapter;
 
     @BeforeEach
     public void createDataSet() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
         Calendar cal = Calendar.getInstance();
         cal.set(Calendar.MILLISECOND, 0);
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 1804adb94..c029e160a 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
@@ -24,7 +24,6 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionException;
 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.Gallery;
@@ -47,15 +46,13 @@ public class ASTNotExistsIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
     private DataChannelInterceptor queryInterceptor;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
@@ -63,11 +60,11 @@ public class ASTNotExistsIT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1);
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 2fb4d9741..3910de9c7 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
@@ -28,7 +28,6 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.exp.property.PropertyFactory;
 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.unit.di.runtime.CayenneProjects;
@@ -48,21 +47,19 @@ public class ExpressionCollectionEvaluationIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.insert(1, "artist1", new java.sql.Date(System.currentTimeMillis()));
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID", "ESTIMATED_PRICE");
         for (int i = 1; i <= 3; i++) {
             tPaintings.insert(i, i + "painting" + (Math.pow(10, i)), 1, 1, i * 100);
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 35b71d2e3..235075ae2 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
@@ -28,7 +28,6 @@ import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.Ordering;
-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;
@@ -56,14 +55,12 @@ public class ExpressionEvaluationIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
     private TableHelper tArtist, tGallery, tPaintings;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
@@ -71,11 +68,11 @@ public class ExpressionEvaluationIT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
         }
 
-        tGallery = new TableHelper(dbHelper, "GALLERY");
+        tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        tPaintings = new TableHelper(dbHelper, "PAINTING");
+        tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID", "ESTIMATED_PRICE");
         for (int i = 1; i <= 10; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1, i * 100);
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 2a5728a73..0b7ae1e4c 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
@@ -28,7 +28,6 @@ import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.ObjEntity;
 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;
@@ -49,13 +48,11 @@ public class IdPropertyIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
@@ -64,11 +61,11 @@ public class IdPropertyIT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
         for (int i = 1; i <= 16; i++) {
             tPaintings.insert(i, "painting" + i, i % artistCount + 1, 1);
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 956dd0d16..e579f0fb7 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
@@ -31,7 +31,6 @@ import org.apache.cayenne.exp.parser.ASTEqual;
 import org.apache.cayenne.exp.parser.ASTObjPath;
 import org.apache.cayenne.exp.parser.ASTPath;
 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.Gallery;
@@ -56,13 +55,11 @@ public class PathAliasesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
@@ -70,15 +67,15 @@ public class PathAliasesIT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tGallery1 = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery1 = env.table("GALLERY");
         tGallery1.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery1.insert(2, "test gallery");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i,
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 8558c7ad2..7a6217056 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/CAY2541IT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.exp.parser.ASTDbPath;
 import org.apache.cayenne.exp.parser.ASTEqual;
 import org.apache.cayenne.exp.parser.ASTScalar;
-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.unit.di.runtime.CayenneProjects;
@@ -43,13 +42,11 @@ public class CAY2541IT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
@@ -57,11 +54,11 @@ public class CAY2541IT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1);
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 9c5ef6e8f..48fa86d7d 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
@@ -38,7 +38,6 @@ import org.apache.cayenne.exp.property.NumericProperty;
 import org.apache.cayenne.exp.property.PropertyFactory;
 import org.apache.cayenne.exp.property.StringProperty;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.ArtistExhibit;
@@ -67,7 +66,6 @@ public class ColumnSelectIT {
 
     private DataContext context;
     private CayenneRuntime runtime;
-    private DBHelper dbHelper;
     private UnitDbAdapter unitDbAdapter;
 
     // Format: d/m/YY
@@ -79,9 +77,8 @@ public class ColumnSelectIT {
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
 
@@ -93,11 +90,11 @@ public class ColumnSelectIT {
             tArtist.insert(i, "artist" + i, dates[i % 5]);
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        tPaintings = new TableHelper(dbHelper, "PAINTING");
+        tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID", "ESTIMATED_PRICE");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1, 22 - i);
@@ -1053,7 +1050,7 @@ public class ColumnSelectIT {
 
     @Test
     public void byteArraySelect() throws SQLException {
-        new TableHelper(dbHelper, "PAINTING_INFO")
+        env.table("PAINTING_INFO")
                 .setColumns("IMAGE_BLOB", "PAINTING_ID")
                 .setColumnTypes(Types.LONGVARBINARY, Types.INTEGER)
                 .insert(new byte[]{(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}, 1)
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java
index 6c9e0fce5..d61b8f4d5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryCountIT.java
@@ -23,7 +23,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import java.util.Collections;
 
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
@@ -37,7 +36,6 @@ public class EJBQLQueryCountIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
 	private ObjectContext context;
-	protected DBHelper dbHelper;
 
 	protected TableHelper tArtist;
 	protected TableHelper tPainting;
@@ -46,11 +44,10 @@ public class EJBQLQueryCountIT {
 	@BeforeEach
 	public void before() throws Exception {
 		context = env.context();
-		dbHelper = env.dbHelper();
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-		tPainting = new TableHelper(dbHelper, "PAINTING");
+		tPainting = env.table("PAINTING");
 		tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE");
 	}
 
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 7aba52c65..2ddf74962 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java
@@ -30,7 +30,6 @@ import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.map.LifecycleEvent;
 import org.apache.cayenne.reflect.LifecycleCallbackRegistry;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
@@ -57,7 +56,6 @@ public class EJBQLQueryIT {
     private DataContext context;
     private CayenneRuntime runtime;
     protected DataChannelInterceptor queryInterceptor;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
     private TableHelper tPainting;
@@ -67,11 +65,10 @@ public class EJBQLQueryIT {
         context = env.dataContext();
         runtime = env.runtime();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
-        tPainting = new TableHelper(dbHelper, "PAINTING");
+        tPainting = env.table("PAINTING");
         tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE");
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java
index 13cea4a2a..d0124064c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/EJBQLQueryNumericIT.java
@@ -20,7 +20,6 @@
 package org.apache.cayenne.query;
 
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.numeric_types.BigIntegerEntity;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -38,16 +37,14 @@ public class EJBQLQueryNumericIT {
     @RegisterExtension
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.NUMERIC_TYPES_PROJECT);
 
-    protected DBHelper dbHelper;
     private ObjectContext context;
 
     private TableHelper tBigIntegerEntity;
 
     @BeforeEach
     public void setUp() throws Exception {
-        dbHelper = env.dbHelper();
         context = env.context();
-        tBigIntegerEntity = new TableHelper(dbHelper, "BIGINTEGER_ENTITY");
+        tBigIntegerEntity = env.table("BIGINTEGER_ENTITY");
         tBigIntegerEntity.setColumns("ID", "BIG_INTEGER_FIELD");
     }
 
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 1a50fba23..e5aed0711 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/MappedQueryIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.QueryResponse;
 import org.apache.cayenne.ResultBatchIterator;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.log.JdbcEventLogger;
-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;
@@ -47,20 +46,18 @@ public class MappedQueryIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter accessStackAdapter;
     private JdbcEventLogger jdbcEventLogger;
 
     @BeforeEach
     public void setUp() {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
         jdbcEventLogger = env.getInstance(JdbcEventLogger.class);
     }
 
     protected void createArtistsDataSet() throws Exception {
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis();
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 39909e08f..2ae4640fd 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelectIteratedQueryIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ResultBatchIterator;
 import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -46,7 +45,6 @@ public class ObjectSelectIteratedQueryIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     private TableHelper tPainting;
     private TableHelper tArtist;
@@ -55,12 +53,11 @@ public class ObjectSelectIteratedQueryIT {
     @BeforeEach
     public void before() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tPainting = new TableHelper(dbHelper, "PAINTING")
+        tPainting = env.table("PAINTING")
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE", "ARTIST_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL, Types.INTEGER);
 
-        tArtist = new TableHelper(dbHelper, "ARTIST")
+        tArtist = env.table("ARTIST")
                 .setColumns("ARTIST_ID", "ARTIST_NAME");
 
         createArtistDataSet();
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 ba3221665..0ef79ff53 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
@@ -30,7 +30,6 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.exp.property.BaseProperty;
 import org.apache.cayenne.exp.property.NumericProperty;
 import org.apache.cayenne.exp.property.PropertyFactory;
-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;
@@ -55,7 +54,6 @@ public class ObjectSelect_AggregateIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter dbAdapter;
 
     // Format: d/m/YY
@@ -64,9 +62,8 @@ public class ObjectSelect_AggregateIT {
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         dbAdapter = env.getInstance(UnitDbAdapter.class);
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
         tArtist.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DATE);
 
@@ -78,11 +75,11 @@ public class ObjectSelect_AggregateIT {
             tArtist.insert(i, "artist" + i, dates[i % 5]);
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID", "ESTIMATED_PRICE");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1, i * 10);
@@ -93,7 +90,7 @@ public class ObjectSelect_AggregateIT {
     @AfterEach
     public void clearArtistsDataSet() throws Exception {
         for(String table : Arrays.asList("PAINTING", "ARTIST", "GALLERY")) {
-            TableHelper tHelper = new TableHelper(dbHelper, table);
+            TableHelper tHelper = env.table(table);
             tHelper.deleteAll();
         }
     }
diff --git a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java
index 0625b8159..92e6ee817 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/ObjectSelect_FetchLimitOrderingIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.query;
 import java.util.List;
 
 import org.apache.cayenne.ObjectContext;
-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.unit.di.runtime.CayenneProjects;
@@ -39,15 +38,13 @@ public class ObjectSelect_FetchLimitOrderingIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tArtist;
 
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
     }
 
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 ab70f75bb..5a342ee52 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
@@ -26,7 +26,6 @@ import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.exp.property.BaseProperty;
 import org.apache.cayenne.exp.property.NumericProperty;
 import org.apache.cayenne.exp.property.PropertyFactory;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.primitive.PrimitivesTestEntity;
 import org.apache.cayenne.unit.UnitDbAdapter;
@@ -49,7 +48,6 @@ public class ObjectSelect_PrimitiveColumnsIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.PRIMITIVE_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter unitDbAdapter;
 
     private TableHelper tPrimitives;
@@ -57,9 +55,8 @@ public class ObjectSelect_PrimitiveColumnsIT {
     @BeforeEach
     public void createTestRecords() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
         unitDbAdapter = env.getInstance(UnitDbAdapter.class);
-        tPrimitives = new TableHelper(dbHelper, "PRIMITIVES_TEST");
+        tPrimitives = env.table("PRIMITIVES_TEST");
         tPrimitives.setColumns("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 e1c4d498c..9324683a8 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
@@ -25,7 +25,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ResultBatchIterator;
 import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
-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;
@@ -47,14 +46,12 @@ public class ObjectSelect_RunIT {
 
 	private UnitDbAdapter unitDbAdapter;
 	private DataContext context;
-	private DBHelper dbHelper;
 
 	@BeforeEach
 	public void createArtistsDataSet() throws Exception {
 		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
 		context = env.dataContext();
-		dbHelper = env.dbHelper();
-		TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+		TableHelper tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
 		long dateBase = System.currentTimeMillis();
@@ -62,11 +59,11 @@ public class ObjectSelect_RunIT {
 			tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 10000 * i));
 		}
 
-		TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+		TableHelper tGallery = env.table("GALLERY");
 		tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
 		tGallery.insert(1, "tate modern");
 
-		TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+		TableHelper tPaintings = env.table("PAINTING");
 		tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
 		for (int i = 1; i <= 20; i++) {
 			tPaintings.insert(i, "painting" + i, i % 5 + 1, 1);
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 727823b1e..fb411ac4c 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
@@ -24,7 +24,6 @@ import java.util.Date;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
-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.Gallery;
@@ -46,13 +45,11 @@ public class ObjectSelect_SubqueryIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     DataContext context;
-    private DBHelper dbHelper;
 
     @BeforeEach
     public void createArtistsDataSet() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+        TableHelper tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
         long dateBase = System.currentTimeMillis() - 2 * 24 * 3600 * 1000;
@@ -60,11 +57,11 @@ public class ObjectSelect_SubqueryIT {
             tArtist.insert(i, "artist" + i, new java.sql.Date(dateBase + 24 * 3600 * 1000 * i));
         }
 
-        TableHelper tGallery = new TableHelper(dbHelper, "GALLERY");
+        TableHelper tGallery = env.table("GALLERY");
         tGallery.setColumns("GALLERY_ID", "GALLERY_NAME");
         tGallery.insert(1, "tate modern");
 
-        TableHelper tPaintings = new TableHelper(dbHelper, "PAINTING");
+        TableHelper tPaintings = env.table("PAINTING");
         tPaintings.setColumns("PAINTING_ID", "PAINTING_TITLE", "ARTIST_ID", "GALLERY_ID");
         for (int i = 1; i <= 20; i++) {
             tPaintings.insert(i, "painting" + i, i % 5 + 1, 1);
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 619c0661e..faa66052b 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithCompoundJoinIT.java
@@ -23,7 +23,6 @@ import java.util.List;
 
 import org.apache.cayenne.access.DataContext;
 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.compound.CompoundFkTestEntity;
 import org.apache.cayenne.testdo.compound.CompoundPkTestEntity;
@@ -48,7 +47,6 @@ public class QueryWithCompoundJoinIT {
 
     private DataContext context;
     private CayenneRuntime runtime;
-    private DBHelper dbHelper;
 
     private TableHelper tCompoundPk;
     private TableHelper tCompoundFk;
@@ -57,11 +55,10 @@ public class QueryWithCompoundJoinIT {
     public void setUp() throws Exception {
         context = env.dataContext();
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
-        tCompoundPk = new TableHelper(dbHelper, "COMPOUND_PK_TEST");
+        tCompoundPk = env.table("COMPOUND_PK_TEST");
         tCompoundPk.setColumns("KEY1", "KEY2", "NAME");
 
-        tCompoundFk = new TableHelper(dbHelper, "COMPOUND_FK_TEST");
+        tCompoundFk = env.table("COMPOUND_FK_TEST");
         tCompoundFk.setColumns("F_KEY1", "F_KEY2", "NAME", "PKEY");
 
         createDataSet();
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 324cfa5b9..e6aba79c4 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/QueryWithInheritancePrefetchIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.query;
 import java.util.List;
 
 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.inheritance_with_enum.Dependent;
 import org.apache.cayenne.testdo.inheritance_with_enum.Root;
@@ -52,22 +51,20 @@ public class QueryWithInheritancePrefetchIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.INHERITANCE_WITH_ENUM_PROJECT);
 
     private CayenneRuntime runtime;
-    private DBHelper dbHelper;
     private DataChannelInterceptor queryInterceptor;
 
     @BeforeEach
     public void createTestData() throws Exception {
         runtime = env.runtime();
-        dbHelper = env.dbHelper();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        TableHelper tRoot = new TableHelper(dbHelper, "iwe_root");
+        TableHelper tRoot = env.table("iwe_root");
         tRoot.setColumns("id", "type", "name", "enum");
 
         tRoot.insert(1, 0, "root1", null);
         tRoot.insert(2, 1, "enum1", Type.type1.ordinal());
         tRoot.insert(3, 1, "enum2", Type.type2.ordinal());
 
-        TableHelper tDependent = new TableHelper(dbHelper, "iwe_dependent");
+        TableHelper tDependent = env.table("iwe_dependent");
         tDependent.setColumns("id", "root_id", "name");
 
         tDependent.insert(1, 1, "test1");
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 e826c9e05..78676bc0c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIT.java
@@ -31,7 +31,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ResultBatchIterator;
 import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -49,7 +48,6 @@ public class SQLSelectIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
 	private DataContext context;
-	private DBHelper dbHelper;
 
 	private TableHelper tPainting;
 	private TableHelper tArtistCt;
@@ -58,15 +56,14 @@ public class SQLSelectIT {
 	@BeforeEach
 	public void before() {
 		context = env.dataContext();
-		dbHelper = env.dbHelper();
-		tPainting = new TableHelper(dbHelper, "PAINTING")
+		tPainting = env.table("PAINTING")
 				.setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE")
 				.setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL);
 
-		tArtistCt = new TableHelper(dbHelper, "ARTIST_CT")
+		tArtistCt = env.table("ARTIST_CT")
 				.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
-		tPaintingInfo = new TableHelper(dbHelper, "PAINTING_INFO")
+		tPaintingInfo = env.table("PAINTING_INFO")
 				.setColumns("PAINTING_ID", "IMAGE_BLOB")
 				.setColumnTypes(Types.INTEGER, Types.LONGVARBINARY);
 	}
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 9bb99fab2..e99532827 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLSelectIteratedQueryIT.java
@@ -22,7 +22,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ResultBatchIterator;
 import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -45,7 +44,6 @@ public class SQLSelectIteratedQueryIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     private TableHelper tPainting;
     private TableHelper tArtist;
@@ -54,12 +52,11 @@ public class SQLSelectIteratedQueryIT {
     @BeforeEach
     public void before() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tPainting = new TableHelper(dbHelper, "PAINTING")
+        tPainting = env.table("PAINTING")
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE", "ARTIST_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL, Types.INTEGER);
 
-        tArtist = new TableHelper(dbHelper, "ARTIST")
+        tArtist = env.table("ARTIST")
                 .setColumns("ARTIST_ID", "ARTIST_NAME");
 
         createArtistDataSet();
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 df940a22d..fe6312c90 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SQLTemplateIT.java
@@ -25,7 +25,6 @@ import org.apache.cayenne.PersistenceState;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.SQLResult;
-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.Gallery;
@@ -53,7 +52,6 @@ public class SQLTemplateIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
 	private DataContext context;
-	private DBHelper dbHelper;
 	protected DataChannelInterceptor queryInterceptor;
 	protected UnitDbAdapter unitDbAdapter;
 
@@ -64,16 +62,15 @@ public class SQLTemplateIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		context = env.dataContext();
-		dbHelper = env.dbHelper();
 		queryInterceptor = env.getInstance(DataChannelInterceptor.class);
 		unitDbAdapter = env.getInstance(UnitDbAdapter.class);
-		tArtist = new TableHelper(dbHelper, "ARTIST");
+		tArtist = env.table("ARTIST");
 		tArtist.setColumns("ARTIST_ID", "ARTIST_NAME", "DATE_OF_BIRTH");
 
-		tPainting = new TableHelper(dbHelper, "PAINTING");
+		tPainting = env.table("PAINTING");
 		tPainting.setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE", "ESTIMATED_PRICE");
 
-		tArtistCt = new TableHelper(dbHelper, "ARTIST_CT");
+		tArtistCt = env.table("ARTIST_CT");
 		tArtistCt.setColumns("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 cec84adc2..f63fb110a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectByIdIteratedQueryIT.java
@@ -23,7 +23,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ResultBatchIterator;
 import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Painting;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -46,7 +45,6 @@ public class SelectByIdIteratedQueryIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
     private DataContext context;
-    private DBHelper dbHelper;
 
     private TableHelper tPainting;
     private TableHelper tArtist;
@@ -55,12 +53,11 @@ public class SelectByIdIteratedQueryIT {
     @BeforeEach
     public void before() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tPainting = new TableHelper(dbHelper, "PAINTING")
+        tPainting = env.table("PAINTING")
                 .setColumns("PAINTING_ID", "PAINTING_TITLE", "ESTIMATED_PRICE", "ARTIST_ID")
                 .setColumnTypes(Types.INTEGER, Types.VARCHAR, Types.DECIMAL, Types.INTEGER);
 
-        tArtist = new TableHelper(dbHelper, "ARTIST")
+        tArtist = env.table("ARTIST")
                 .setColumns("ARTIST_ID", "ARTIST_NAME");
 
         createArtistDataSet();
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 a599547da..6d69afbd5 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
@@ -28,7 +28,6 @@ import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.map.EntityResolver;
-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;
@@ -48,7 +47,6 @@ public class SelectById_RunIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
 	private DataChannelInterceptor interceptor;
-	private DBHelper dbHelper;
 	private ObjectContext context;
 
 	private TableHelper tArtist;
@@ -59,11 +57,10 @@ public class SelectById_RunIT {
 	@BeforeEach
 	public void setUp() throws Exception {
 		interceptor = env.getInstance(DataChannelInterceptor.class);
-		dbHelper = env.dbHelper();
 		context = env.context();
 		resolver = env.getInstance(EntityResolver.class);
-		tArtist = new TableHelper(dbHelper, "ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME");
-		tPainting = new TableHelper(dbHelper, "PAINTING").setColumns("PAINTING_ID", "ARTIST_ID", "PAINTING_TITLE")
+		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 18508689b..a0d9b711c 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryClobIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.query;
 
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.lob.ClobTestEntity;
 import org.apache.cayenne.unit.UnitDbAdapter;
@@ -41,18 +40,16 @@ public class SelectQueryClobIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.LOB_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter accessStackAdapter;
 
     @BeforeEach
     public void setUp() {
         context = env.context();
-        dbHelper = env.dbHelper();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
     }
 
     private void createClobDataSet() throws Exception {
-        TableHelper tClobTest = new TableHelper(dbHelper, "CLOB_TEST");
+        TableHelper tClobTest = env.table("CLOB_TEST");
         tClobTest.setColumns("CLOB_TEST_ID", "CLOB_COL");
 
         tClobTest.deleteAll();
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 3111963fe..a661e0409 100644
--- a/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/query/SelectQueryReturnTypesIT.java
@@ -29,7 +29,6 @@ import org.apache.cayenne.exp.parser.ASTEqual;
 import org.apache.cayenne.exp.parser.ASTGreater;
 import org.apache.cayenne.exp.parser.ASTObjPath;
 import org.apache.cayenne.exp.parser.ASTScalar;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.return_types.ReturnTypesMap1;
 import org.apache.cayenne.unit.UnitDbAdapter;
@@ -49,18 +48,16 @@ public class SelectQueryReturnTypesIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RETURN_TYPES_PROJECT);
 
     private ObjectContext context;
-    private DBHelper dbHelper;
     private UnitDbAdapter accessStackAdapter;
 
     @BeforeEach
     public void setUp() {
         context = env.context();
-        dbHelper = env.dbHelper();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
     }
 
     protected void createNumericsDataSet() throws Exception {
-        TableHelper tNumerics = new TableHelper(dbHelper, "TYPES_MAPPING_TEST1");
+        TableHelper tNumerics = env.table("TYPES_MAPPING_TEST1");
         tNumerics.setColumns("AAAID", "INTEGER_COLUMN");
 
         tNumerics.insert(1, 0);
diff --git a/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java b/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
index f8a503384..8fce5d842 100644
--- a/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/reflect/MixedPersistenceStrategyIT.java
@@ -22,7 +22,6 @@ package org.apache.cayenne.reflect;
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.ValueHolder;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.mixed_persistence_strategy.MixedPersistenceStrategy;
 import org.apache.cayenne.testdo.mixed_persistence_strategy.MixedPersistenceStrategy2;
@@ -44,7 +43,6 @@ public class MixedPersistenceStrategyIT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.MIXED_PERSISTENCE_STRATEGY_PROJECT);
 
     protected ObjectContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tMixedPersistenceStrategy;
     protected TableHelper tMixedPersistenceStrategy2;
@@ -52,15 +50,10 @@ public class MixedPersistenceStrategyIT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.context();
-        dbHelper = env.dbHelper();
-        tMixedPersistenceStrategy = new TableHelper(
-                dbHelper,
-                "MIXED_PERSISTENCE_STRATEGY");
+        tMixedPersistenceStrategy = env.table("MIXED_PERSISTENCE_STRATEGY");
         tMixedPersistenceStrategy.setColumns("ID", "DESCRIPTION", "NAME");
 
-        tMixedPersistenceStrategy2 = new TableHelper(
-                dbHelper,
-                "MIXED_PERSISTENCE_STRATEGY2");
+        tMixedPersistenceStrategy2 = env.table("MIXED_PERSISTENCE_STRATEGY2");
         tMixedPersistenceStrategy2.setColumns("ID", "MASTER_ID", "NAME");
     }
 
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 2a26e2787..8bd853613 100644
--- a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java
@@ -32,7 +32,6 @@ import org.apache.cayenne.access.DataNode;
 import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.query.SQLSelect;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
 import org.apache.cayenne.unit.di.runtime.CayenneTestsEnv;
@@ -47,7 +46,6 @@ public class CayenneRuntimeBuilderIT {
 	@RegisterExtension
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
-	private DBHelper dbHelper;
 	private CayenneRuntime runtime;
 	private DataSourceDescriptor dsi;
 
@@ -67,10 +65,9 @@ public class CayenneRuntimeBuilderIT {
 
 	@BeforeEach
 	public void setUp() throws Exception {
-		dbHelper = env.dbHelper();
 		runtime = env.runtime();
 		dsi = env.getInstance(DataSourceDescriptor.class);
-		TableHelper tArtist = new TableHelper(dbHelper, "ARTIST");
+		TableHelper tArtist = env.table("ARTIST");
 		tArtist.setColumns("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 72d992358..dbcda6312 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
@@ -41,7 +41,6 @@ import org.apache.cayenne.log.JdbcEventLogger;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SQLTemplate;
-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.unit.di.runtime.CayenneProjects;
@@ -67,7 +66,6 @@ public class BindDirectiveIT {
 	private ObjectContext context;
 	private JdbcEventLogger logger;
 	private DataNode node;
-	private DBHelper dbHelper;
 
 	@BeforeEach
 	public void setUp() {
@@ -75,7 +73,6 @@ public class BindDirectiveIT {
 		context = env.context();
 		logger = env.getInstance(JdbcEventLogger.class);
 		node = env.getInstance(DataNode.class);
-		dbHelper = env.dbHelper();
 	}
 
 	@Test
@@ -135,7 +132,7 @@ public class BindDirectiveIT {
 	@Test
 	public void bind_Collection() throws Exception {
 
-		TableHelper tArtist = new TableHelper(dbHelper, "ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME");
+		TableHelper tArtist = env.table("ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME");
 
 		// insert 3 artists
 		for (int i = 1; i < 4; i++) {
diff --git a/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java b/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java
index 88a97b16d..18760ba47 100644
--- a/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/template/directive/ResultDirectiveIT.java
@@ -27,7 +27,6 @@ import org.apache.cayenne.access.MockOperationObserver;
 import org.apache.cayenne.query.CapsStrategy;
 import org.apache.cayenne.query.SQLTemplate;
 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.Artist;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -48,13 +47,11 @@ public class ResultDirectiveIT {
 	static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.TESTMAP_PROJECT);
 
 	private CayenneRuntime runtime;
-	protected DBHelper dbHelper;
 
 	@BeforeEach
 	public void before() throws SQLException {
 		runtime = env.runtime();
-		dbHelper = env.dbHelper();
-		new TableHelper(dbHelper, "ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME").insert(1L, "ArtistToTestResult");
+		env.table("ARTIST").setColumns("ARTIST_ID", "ARTIST_NAME").insert(1L, "ArtistToTestResult");
 	}
 
 	@Test
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 24383f440..bd6e2297c 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
@@ -25,6 +25,7 @@ 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.apache.cayenne.test.jdbc.TableHelper;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
@@ -130,6 +131,14 @@ 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);
+    }
+
     public CayenneRuntime runtime() {
         return runtime;
     }
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 873c63ee1..85bc7c056 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
@@ -23,7 +23,6 @@ import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.exp.Expression;
 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.relationships_clob.ClobMaster;
 import org.apache.cayenne.unit.UnitDbAdapter;
@@ -46,7 +45,6 @@ public class CAY_115IT {
 
     protected DataContext context;
     protected UnitDbAdapter accessStackAdapter;
-    protected DBHelper dbHelper;
 
     protected TableHelper tClobMaster;
     protected TableHelper tClobDetail;
@@ -55,11 +53,10 @@ public class CAY_115IT {
     public void setUp() throws Exception {
         context = env.dataContext();
         accessStackAdapter = env.getInstance(UnitDbAdapter.class);
-        dbHelper = env.dbHelper();
-        tClobMaster = new TableHelper(dbHelper, "CLOB_MASTER");
+        tClobMaster = env.table("CLOB_MASTER");
         tClobMaster.setColumns("CLOB_MASTER_ID", "CLOB_COLUMN", "NAME");
         
-        tClobDetail = new TableHelper(dbHelper, "CLOB_DETAIL");
+        tClobDetail = env.table("CLOB_DETAIL");
         tClobDetail.setColumns("CLOB_DETAIL_ID", "CLOB_MASTER_ID", "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 ee0900292..6a551173e 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
@@ -21,7 +21,6 @@ package org.apache.cayenne.unit.jira;
 
 import org.apache.cayenne.Cayenne;
 import org.apache.cayenne.access.DataContext;
-import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.relationships.FkOfDifferentType;
 import org.apache.cayenne.unit.di.runtime.CayenneProjects;
@@ -39,7 +38,6 @@ public class CAY_191IT {
     static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.RELATIONSHIPS_PROJECT);
 
     protected DataContext context;
-    protected DBHelper dbHelper;
 
     protected TableHelper tRelationshipHelper;
     protected TableHelper tFkOfDifferentType;
@@ -47,11 +45,10 @@ public class CAY_191IT {
     @BeforeEach
     public void setUp() throws Exception {
         context = env.dataContext();
-        dbHelper = env.dbHelper();
-        tRelationshipHelper = new TableHelper(dbHelper, "RELATIONSHIP_HELPER");
+        tRelationshipHelper = env.table("RELATIONSHIP_HELPER");
         tRelationshipHelper.setColumns("NAME", "RELATIONSHIP_HELPER_ID");
         
-        tFkOfDifferentType = new TableHelper(dbHelper, "FK_OF_DIFFERENT_TYPE");
+        tFkOfDifferentType = env.table("FK_OF_DIFFERENT_TYPE");
         tFkOfDifferentType.setColumns("ID", "RELATIONSHIP_HELPER_FK");
     }
     
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 98d90247b..dbb1668c5 100644
--- a/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/util/ShallowMergeOperationIT.java
@@ -26,7 +26,6 @@ import org.apache.cayenne.Persistent;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.query.ObjectIdQuery;
 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.Artist;
 import org.apache.cayenne.testdo.testmap.Painting;
@@ -50,7 +49,6 @@ public class ShallowMergeOperationIT {
     private CayenneRuntime runtime;
     private DataContext context;
     private DataChannelInterceptor queryInterceptor;
-    private DBHelper dbHelper;
 
     private TableHelper tArtist;
 
@@ -59,8 +57,7 @@ public class ShallowMergeOperationIT {
         runtime = env.runtime();
         context = env.dataContext();
         queryInterceptor = env.getInstance(DataChannelInterceptor.class);
-        dbHelper = env.dbHelper();
-        tArtist = new TableHelper(dbHelper, "ARTIST");
+        tArtist = env.table("ARTIST");
         tArtist.setColumns("ARTIST_ID", "ARTIST_NAME");
 
     }