diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 2bddb37..97d192c 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -393,6 +393,52 @@ public function referencedEntities() {
   }
 
   /**
+   * Loads an entity.
+   *
+   * @param mixed $id
+   *   The id of the entity to load.
+   *
+   * @return static
+   *   The entity object or NULL if there is no entity with the given ID.
+   */
+  public static function load($id) {
+    $entities = static::loadMultiple(array($id));
+    return isset($entities[$id]) ? $entities[$id] : NULL;
+  }
+
+  /**
+   * Loads one or more entities.
+   *
+   * @param array $ids
+   *   An array of entity IDs, or NULL to load all entities.
+   *
+   * @return static[]
+   *   An array of entity objects indexed by their IDs.
+   */
+  public static function loadMultiple(array $ids = NULL) {
+    return \Drupal::entityManager()->getStorageController(static::getEntityTypeFromStaticClass())->loadMultiple($ids);
+  }
+
+  /**
+   * Tries to guess an entity type ID based on the class that is called.
+   *
+   * @return string
+   *   The entity type ID.
+   *
+   * @throws \RuntimeException
+   */
+  protected static function getEntityTypeFromStaticClass() {
+    $called_class = get_called_class();
+    foreach (\Drupal::entityManager()->getDefinitions() as $entity_type => $entity_info) {
+      if ($entity_info->getClass() == $called_class || $entity_info->isSubclassOf($called_class)) {
+        return $entity_type;
+      }
+    }
+
+    throw new \RuntimeException(sprintf('The %s class does not correspond to an entity type.', $called_class));
+  }
+
+  /**
    * Acts on an entity after it was saved or deleted.
    */
   protected function onSaveOrDelete() {
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php
index be09ad8..8f59da4 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityUnitTest.php
@@ -230,6 +230,68 @@ public function testLanguage() {
   }
 
   /**
+   * @covers ::load
+   */
+  public function testLoad() {
+    // Entity::load() is a wrapper for EntityStorageController::loadMultiple().
+    // Test that the same mock entity object that is returned by loadMultiple()
+    // on the storage controller will be returned by Entity::load().
+    $test_id = rand(1, 100000);
+    $test_entity = new \stdClass();
+    $test_entity->id = $test_id;
+    $test_entity->type = $this->randomName();
+
+    $storage = $this->getMock('\Drupal\Core\Entity\EntityStorageControllerInterface');
+    $storage->expects($this->once())
+      ->method('loadMultiple')
+      ->with(array($test_id))
+      ->will($this->returnValue(array($test_id => $test_entity)));
+    $this->entityManager->expects($this->once())
+      ->method('getStorageController')
+      ->with($test_entity->type)
+      ->will($this->returnValue($storage));
+    $this->entityManager->expects($this->once())
+      ->method('getDefinitions')
+      ->will($this->returnValue(array($test_entity->type => $this->entityType)));
+    $this->entityType->expects($this->once())
+      ->method('getClass')
+      ->will($this->returnValue(get_class($this->entity)));
+
+    $this->assertSame($test_entity, $this->entity->load($test_id));
+  }
+
+  /**
+   * @covers ::loadMultiple
+   */
+  public function testLoadMultiple() {
+    // Entity::loadMultiple() wraps EntityStorageController::loadMultiple().
+    // Test that the same mock entity object that is returned by loadMultiple()
+    // on the storage controller will be returned by Entity::loadMultiple().
+    $test_id = rand(1, 100000);
+    $test_entity = new \stdClass();
+    $test_entity->id = $test_id;
+    $test_entity->type = $this->randomName();
+
+    $storage = $this->getMock('\Drupal\Core\Entity\EntityStorageControllerInterface');
+    $storage->expects($this->once())
+      ->method('loadMultiple')
+      ->with(array($test_id))
+      ->will($this->returnValue(array($test_id => $test_entity)));
+    $this->entityManager->expects($this->once())
+      ->method('getStorageController')
+      ->with($test_entity->type)
+      ->will($this->returnValue($storage));
+    $this->entityManager->expects($this->once())
+      ->method('getDefinitions')
+      ->will($this->returnValue(array($test_entity->type => $this->entityType)));
+    $this->entityType->expects($this->once())
+      ->method('getClass')
+      ->will($this->returnValue(get_class($this->entity)));
+
+    $this->assertSame(array($test_id => $test_entity), $this->entity->loadMultiple(array($test_id)));
+  }
+
+  /**
    * @covers ::save
    */
   public function testSave() {
