OK. Why?

SQL as a Code
Closely integrates SQL with Java or Kotlin.
IDE 'code completion' guides safely even throughout the most sophisticated queries, and instantly checks your query.

Operate on proper data structures only

Fully Orient Objected
Work with abstracts. interfaces, inheritances, extentions...

Literally everything is a true object. 

Anything, even your query, may be an abstract as well.

Tests shows that Daobab in most cases is faster than Hibernate and JPA.

It's because of two key functionalities:
- 'FrozenQueries', which cause the efficiency close to pure JDBC.
- Fast Json conversion - internal json conversion is faster than the most popular libraries, bacause Daobab keeps some key information about the object type.

Entity as a Map along with column interfaces
Each unique column has its own interface. By default, Entity has no fields, but interfaces. Each column interface reads and writes from a map.
Relations between entities (tables) are built by implementing the same column interfaces.
This unique approach brings a lot of opportunities and recreates the database relations into a Java.

Rich SQL Support
Use not only basic SQL features but also very useful joins, groupby, having, functions... and others.

Short expressions
With Daobab, query mostly ends in a single line.

SQL within Java/Kotlin code
You don't need to create a separate method for each specific query.
You may use SQL in your for loops, if conditions or generally inside of any Java method body.

SQL with values
You may log your query completely, with values.
Also you can copy and paste SQL from your log to debug it into your DB tool.
And it's safe.

There is totally no castings. All types are being handled automatically.

Immutable entities
Modify the entities for free - each modification is a new copy.
Daobab doesn't need to merge them.

Easy to use
Basically, after reverse engineering, you are ready to work with the database.

Automatic assignments
Just work with queries. Don't worry about SQL assignments.

Easy testing
Daobab and Unit Tests? This is a perfect marriage. Just play with the queries.

Unlimited targets
Technically, you may call an unlimited amount of databases/schemas within your own microservice without any problems.
Migration? Not a big deal anymore.

In-Memory targets
Create buffers with part of the database copied into memory.
Execution of the SQL query on such a target, is very quick.

Remote targets
No need to have a direct database access. No need to expose a number of endpoinds.
Just execute the query remotely and safely.

DataBase independent
No matter what kind of database you have. Daobab is able to correct your SQL and use the native database dialog.

Framework independent
Works fine with Spring, Spring Boot, JavaEE, standalone.... and others.

Daobab introduced a completely new approach to the Reverse Engineering.

Column is not literally a field anymore, but a generated, dedicated interface.

Entity, which is a table representation, inherits as many column interfaces, as many columns have such a table. Because of that, Entity is also each column instance in Java.

That brings a lot of simplification during the query building.

Another thing is complexity. Daobab is almost fully compatible with SQL standard. That's extraordinary. Even some unpopular SQL Functions, are available. Even very rare SQL constructions, are possible.

That brings the full scope of possibilities.

You may be surprised, but Daobab doesn't work only with Database.

There are a lot of targets, where your query may be executed.

Java collections? ByteBuffers? Remote endpoint? You may query those targets in the same manner as database!

You may use Daobab without any database connections, just to simplify your internal work with data structures.

© Copyright 2018-2023 Elephant Software Klaudiusz Wojtkowiak