# Creating Entities

{% hint style="warning" %}
**This is the manual for older MicroStream versions (Version < 5.0).**

**The new documentation (Version >= 5.0) is located at:**

[https://docs.microstream.one/](https://docs.microstream.one/manual)
{% endhint %}

Given is the following entity:

```java
public interface Person extends Entity
{
	public String firstName();
	 
	public String lastName();
}
```

So how is it done? Since the code generator provides a creator, we can use it to create a new `Person`.

```java
Person john = PersonCreator.New()
    .firstName("John")
    .lastName("Doe")
    .create();
```

Let's see what the debugger displays if we run this code:

<div align="left"><img src="https://1833477471-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LlDABTSyLJZUmpSp2tl%2F-LvGR4RwZxMy0m8HGIW_%2F-LvGS0al_515vtM5D89F%2Fimage.png?alt=media&#x26;token=ab90fb05-850a-4897-b531-4cd61694f230" alt=""></div>

There's always an entity chain, with&#x20;

* The identity (`PersonEntity`) as outer layer
* Then the logic layers, none here in our example
* And the inner most layer is always the data (`PersonData`), which holds the properties.

The properties can be accessed like defined in the entity's interface:

```java
String firstName = john.firstName(); // -> John
String lastName  = john.lastName();  // -> Doe 
```

The creator can also be used to create copies. Just hand over the existing one as template:

```java
Person mike = PersonCreator.New(john) // use John as template
			.firstName("Mike")
			.create();
```

This will create a "Mike Doe".
