diff --git a/core/modules/content_moderation/content_moderation.services.yml b/core/modules/content_moderation/content_moderation.services.yml
index 5035b67..269a683 100644
--- a/core/modules/content_moderation/content_moderation.services.yml
+++ b/core/modules/content_moderation/content_moderation.services.yml
@@ -9,7 +9,7 @@ services:
     arguments: ['@content_moderation.moderation_information']
   content_moderation.moderation_information:
     class: Drupal\content_moderation\ModerationInformation
-    arguments: ['@entity_type.manager', '@entity_type.bundle.info']
+    arguments: ['@entity_type.manager', '@entity_type.bundle.info', '@entity.repository']
   access_check.latest_revision:
     class: Drupal\content_moderation\Access\LatestRevisionCheck
     arguments: ['@content_moderation.moderation_information']
diff --git a/core/modules/content_moderation/src/ModerationInformation.php b/core/modules/content_moderation/src/ModerationInformation.php
index 58eaa9f..559a67e 100644
--- a/core/modules/content_moderation/src/ModerationInformation.php
+++ b/core/modules/content_moderation/src/ModerationInformation.php
@@ -4,6 +4,7 @@
 
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Entity\EntityRepositoryInterface;
 use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
@@ -29,6 +30,13 @@ class ModerationInformation implements ModerationInformationInterface {
   protected $bundleInfo;
 
   /**
+   * The entity repository.
+   *
+   * @var \Drupal\Core\Entity\EntityRepositoryInterface
+   */
+  protected $entityRepository;
+
+  /**
    * Creates a new ModerationInformation instance.
    *
    * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
@@ -36,8 +44,9 @@ class ModerationInformation implements ModerationInformationInterface {
    * @param \Drupal\Core\Entity\EntityTypeBundleInfoInterface $bundle_info
    *   The bundle information service.
    */
-  public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityTypeBundleInfoInterface $bundle_info) {
+  public function __construct(EntityTypeManagerInterface $entity_type_manager, EntityTypeBundleInfoInterface $bundle_info, EntityRepositoryInterface $entity_repository) {
     $this->entityTypeManager = $entity_type_manager;
+    $this->entityRepository = $entity_repository;
     $this->bundleInfo = $bundle_info;
   }
 
@@ -74,9 +83,7 @@ public function shouldModerateEntitiesOfBundle(EntityTypeInterface $entity_type,
    * {@inheritdoc}
    */
   public function getLatestRevision($entity_type_id, $entity_id) {
-    if ($latest_revision_id = $this->getLatestRevisionId($entity_type_id, $entity_id)) {
-      return $this->entityTypeManager->getStorage($entity_type_id)->loadRevision($latest_revision_id);
-    }
+    return $this->entityRepository->loadLatestEntityRevision($entity_type_id, $entity_id);
   }
 
   /**
@@ -84,14 +91,12 @@ public function getLatestRevision($entity_type_id, $entity_id) {
    */
   public function getLatestRevisionId($entity_type_id, $entity_id) {
     if ($storage = $this->entityTypeManager->getStorage($entity_type_id)) {
-      $revision_ids = $storage->getQuery()
-        ->allRevisions()
+      $result = $storage->getQuery()
+        ->latestRevision()
         ->condition($this->entityTypeManager->getDefinition($entity_type_id)->getKey('id'), $entity_id)
-        ->sort($this->entityTypeManager->getDefinition($entity_type_id)->getKey('revision'), 'DESC')
-        ->range(0, 1)
         ->execute();
-      if ($revision_ids) {
-        return array_keys($revision_ids)[0];
+      if ($result) {
+        return key($result);
       }
     }
   }
@@ -101,13 +106,12 @@ public function getLatestRevisionId($entity_type_id, $entity_id) {
    */
   public function getDefaultRevisionId($entity_type_id, $entity_id) {
     if ($storage = $this->entityTypeManager->getStorage($entity_type_id)) {
-      $revision_ids = $storage->getQuery()
+      $result = $storage->getQuery()
+        ->currentRevision()
         ->condition($this->entityTypeManager->getDefinition($entity_type_id)->getKey('id'), $entity_id)
-        ->sort($this->entityTypeManager->getDefinition($entity_type_id)->getKey('revision'), 'DESC')
-        ->range(0, 1)
         ->execute();
-      if ($revision_ids) {
-        return array_keys($revision_ids)[0];
+      if ($result) {
+        return key($result);
       }
     }
   }
@@ -135,7 +139,7 @@ public function isPendingRevisionAllowed(ContentEntityInterface $entity) {
    * {@inheritdoc}
    */
   public function isLatestRevision(ContentEntityInterface $entity) {
-    return $entity->getRevisionId() == $this->getLatestRevisionId($entity->getEntityTypeId(), $entity->id());
+    return $entity->isLatestRevision();
   }
 
   /**
diff --git a/core/modules/content_moderation/src/ModerationInformationInterface.php b/core/modules/content_moderation/src/ModerationInformationInterface.php
index 1dafb3f..2b2fcaf 100644
--- a/core/modules/content_moderation/src/ModerationInformationInterface.php
+++ b/core/modules/content_moderation/src/ModerationInformationInterface.php
@@ -58,6 +58,9 @@ public function shouldModerateEntitiesOfBundle(EntityTypeInterface $entity_type,
    * @return \Drupal\Core\Entity\ContentEntityInterface|null
    *   The latest entity revision or NULL, if the entity type / entity doesn't
    *   exist.
+   *
+   * @deprecated as of Drupal 8.5.x, will be removed in Drupal 9.0.0. Instead,
+   *   use \Drupal\Core\Entity\EntityRepository::loadLatestEntityRevision.
    */
   public function getLatestRevision($entity_type_id, $entity_id);
 
@@ -122,6 +125,9 @@ public function isPendingRevisionAllowed(ContentEntityInterface $entity);
    * @return bool
    *   TRUE if the specified object is the latest revision of its entity,
    *   FALSE otherwise.
+   *
+   * @deprecated as of Drupal 8.5.x, will be removed in Drupal 9.0.0. Instead,
+   *   use \Drupal\Core\Entity\RevisionableInterface::isLatestRevision.
    */
   public function isLatestRevision(ContentEntityInterface $entity);
 
diff --git a/core/modules/content_moderation/tests/src/Unit/ModerationInformationTest.php b/core/modules/content_moderation/tests/src/Unit/ModerationInformationTest.php
index 57fe761..8ac0a12 100644
--- a/core/modules/content_moderation/tests/src/Unit/ModerationInformationTest.php
+++ b/core/modules/content_moderation/tests/src/Unit/ModerationInformationTest.php
@@ -5,6 +5,7 @@
 use Drupal\content_moderation\Entity\Handler\ModerationHandler;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Entity\ContentEntityType;
+use Drupal\Core\Entity\EntityRepositoryInterface;
 use Drupal\Core\Entity\EntityStorageInterface;
 use Drupal\Core\Entity\EntityTypeBundleInfoInterface;
 use Drupal\Core\Entity\EntityTypeManagerInterface;
@@ -41,6 +42,17 @@ protected function getEntityTypeManager() {
   }
 
   /**
+   * Get the Entity Repository.
+   *
+   * @return \Drupal\Core\Entity\EntityRepositoryInterface
+   *   A mock entity repository.
+   */
+  protected function getEntityRepository() {
+    $entity_repository = $this->prophesize(EntityRepositoryInterface::class);
+    return $entity_repository->reveal();
+  }
+
+  /**
    * Sets up content moderation and entity manager mocking.
    *
    * @param string $bundle
@@ -67,7 +79,7 @@ public function setupModerationBundleInfo($bundle, $workflow = NULL) {
    * @covers ::isModeratedEntity
    */
   public function testIsModeratedEntity($workflow, $expected) {
-    $moderation_information = new ModerationInformation($this->getEntityTypeManager(), $this->setupModerationBundleInfo('test_bundle', $workflow));
+    $moderation_information = new ModerationInformation($this->getEntityTypeManager(), $this->setupModerationBundleInfo('test_bundle', $workflow), $this->getEntityRepository());
 
     $entity_type = new ContentEntityType([
       'id' => 'test_entity_type',
@@ -96,7 +108,7 @@ public function testGetWorkflowForEntity($workflow) {
     else {
       $workflow_entity = NULL;
     }
-    $moderation_information = new ModerationInformation($entity_type_manager->reveal(), $this->setupModerationBundleInfo('test_bundle', $workflow));
+    $moderation_information = new ModerationInformation($entity_type_manager->reveal(), $this->setupModerationBundleInfo('test_bundle', $workflow), $this->getEntityRepository());
     $entity = $this->prophesize(ContentEntityInterface::class);
     $entity->getEntityTypeId()->willReturn('test_entity_type');
     $entity->bundle()->willReturn('test_bundle');
@@ -115,7 +127,7 @@ public function testShouldModerateEntities($workflow, $expected) {
       'handlers' => ['moderation' => ModerationHandler::class],
     ]);
 
-    $moderation_information = new ModerationInformation($this->getEntityTypeManager(), $this->setupModerationBundleInfo('test_bundle', $workflow));
+    $moderation_information = new ModerationInformation($this->getEntityTypeManager(), $this->setupModerationBundleInfo('test_bundle', $workflow), $this->getEntityRepository());
 
     $this->assertEquals($expected, $moderation_information->shouldModerateEntitiesOfBundle($entity_type, 'test_bundle'));
   }
