Persistent and transient fields

Do not create fields that you don't need for persistence

Advantage

Storing only needed information will help to keep your database footprint as small as possible.

Effect

If your persistent class contains fields that do not need to be stored you should mark them as transient to prevent them from being stored:

.NET:
public class NotStorable {
  [Transient] private int length;
. . .
}

You can use Callbacks or Translators to set transient fields on retrieval.

Also avoid storing classes having only transient information - their indexes' maintenance will produce unnecessary performance overhead.

Alternate strategies

In some cases you may want to persist class meta-information without the actual object data. The example can be database singleton for remote code execution