airomem core

Prevayler based persistence engine

Лицензия

Лицензия

Группа

Группа

pl.setblack
Идентификатор

Идентификатор

airomem-core
Последняя версия

Последняя версия

1.1.2
Дата

Дата

Тип

Тип

jar
Описание

Описание

airomem core
Prevayler based persistence engine
Ссылка на сайт

Ссылка на сайт

https://github.com/airomem/airomem
Система контроля версий

Система контроля версий

https://github.com/airomem/airomem

Скачать airomem-core

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/pl.setblack/airomem-core/ -->
<dependency>
    <groupId>pl.setblack</groupId>
    <artifactId>airomem-core</artifactId>
    <version>1.1.2</version>
</dependency>
// https://jarcasting.com/artifacts/pl.setblack/airomem-core/
implementation 'pl.setblack:airomem-core:1.1.2'
// https://jarcasting.com/artifacts/pl.setblack/airomem-core/
implementation ("pl.setblack:airomem-core:1.1.2")
'pl.setblack:airomem-core:jar:1.1.2'
<dependency org="pl.setblack" name="airomem-core" rev="1.1.2">
  <artifact name="airomem-core" type="jar" />
</dependency>
@Grapes(
@Grab(group='pl.setblack', module='airomem-core', version='1.1.2')
)
libraryDependencies += "pl.setblack" % "airomem-core" % "1.1.2"
[pl.setblack/airomem-core "1.1.2"]

Зависимости

compile (7)

Идентификатор библиотеки Тип Версия
org.prevayler : prevayler-core jar 2.6
org.prevayler : prevayler-factory jar 2.6
org.prevayler.extras : prevayler-xstream jar 2.6
com.google.guava : guava jar 29.0-jre
commons-io : commons-io jar 2.4
pl.setblack : badass jar 1.0
com.esotericsoftware : kryo jar 3.0.3

test (2)

Идентификатор библиотеки Тип Версия
junit : junit jar 4.10
org.mockito : mockito-all jar 1.9.5

Модули Проекта

Данный проект не имеет модулей.

airomem

Build Status Codacy Badge

Airomem is Java persistence framework based on Prevayler. The most important features are:

  • speed,
  • simplicity.

This is achieved because there is no Database. There is only persistence.

Motivation

I have a lot of positive experience with Prevayler - quite an old project published by Klaus Wuestefeld. Pure Prevayler lacks however some features and is not perfectly safe for inexperienced teams.

Goal of this project is to provide Prevayler based persistence with extra features such as Java 8 Lambda expressions, Kryo based serialization, rich collections (CQEngine) and sanity checks that make Prevayler easier to implement. (Quite honestly Prevayler is perfectly easy to implement, it just does not always work as people expect).

So airomem = Prevayler | safety | tools | lambdas | kryo | build...

Take a look at Features.

Basic

Lets assume that system is build without need of persistence. All operations are mode on objects in memory. Instead of SQL queries, objects are traversed and filtered using stream API.

Instead of making INSERTS, UPDATES, transactions, there are only changes on objects in java. There is no Session, no EntityManager, no cache ( oh,wait a moment - everything is cache...), no problems with ORMs, no performance penalties, no DB deadlocks.

Such world exist and is fun to work with. And what is more funny persistence in this world also exists.

There are only two things to do:

  • all objects from domain must be serializable (this is typically easy to achieve),
  • all operations that change domain must be enclosed in commands.

How simple is that? (Sample Project)

New! Galakpizza Sample Chat Sample

Performance - this thing is insane

This thing must come. How fast is that? Can be more than 1000 times faster than traditional SQL / ORM approach...

I've tried to measure speed in operations per second using jpab project. Results are here.

In reality one can expect to achive performance of 10 up to 1000 faster compared to DB/ORM approach.

More

Please read more on: Wiki

Release notes

Version 1.1.1

Changed to use file sync always. It is slower but safer on some environments.

Version 1.1.0

  • Simplified - no longer use Storable interface with getImmutable
  • Use Path in API instead of String name of folder
  • Transient version for tests
  • xml snapshot (import and export)

Migration from 1.0.5

  • No more SimpleController (what a stupid name it was :-) ?) - class is called Persistent
  • Path instead of Strings as folder names

Version 1.0.5

.

pl.setblack

Airomem

Версии библиотеки

Версия
1.1.2
1.1.1
1.1.0
1.0.5
1.0.4
1.0.3
1.0.2
1.0