---
title:  Data Entries
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

The data entry is the key/value pair where you store your data. You can manage your entries individually and in batches. To use domain objects for your entry values and keys, you need to follow <%=vars.product_name_long%> requirements for data storage and distribution.

-   **[Managing Data Entries](managing_data_entries.html)**

    Program your applications to create, modify, and manage your cached data entries.

-   **[Requirements for Using Custom Classes in Data Caching](using_custom_classes.html)**

    Follow these guidelines to use custom domain classes for your cached entry keys and values.


