Stop waiting on engineering. Build production-ready internal tools with AI—on your company data, in your cloud.
Retool lets you generate dashboards, admin panels, and workflows directly on your data. Type something like “Build me a revenue dashboard on my Stripe data” and get a working app with security, permissions, and compliance built in from day one. Whether on our cloud or self-hosted, create the internal software your team needs without compromising enterprise standards or control.
Try Retool free
Full-stack observability with actually useful AI | Grafana Cloud
Our generous forever free tier includes the full platform, including the AI Assistant, for 3 users with 10k metrics, 50GB logs, and 50GB traces.
Built on open standards like Prometheus and OpenTelemetry, Grafana Cloud includes Kubernetes Monitoring, Application Observability, Incident Response, plus the AI-powered Grafana Assistant. Get started with our generous free tier today.
Now stored at https://github.com/gregorydgraham/DBvolution
Available from Maven Central: nz.co.gregs.dbvolution
Makes relational data easy and fast to use with semantic annotations and encapsulated datatypes.
Simple declaration of a DB table:
@DBTableName("mytable")
public class MyTable extends DBRow {
@DBColumn("numeric_code")
@DBForeignKey(Code.class)
private DBNumber numericCode = new DBNumber();
@DBColumn("uid_mytable")
@DBPrimaryKey
@DBAutoIncrement
private DBNumber uidMyTable = new DBNumber();
}
Easy Gets:
List<MyTable> myRows = myDB.get(new MyTable());
MyTable row = myDB.getDBTable(new MyTable()).getByPrimaryKey(61176904);
Natural and Outer Joins and Criteria:
CarCo carCo = new CarCo();
carCo.name.isLiterally("GM");
List<DBQueryRow> results = myDB.get(carCo, new Marque());
dbQuery.addOptional(new CarModel());
Easy debugging:
query.getSQLForQuery();
Simple processing:
db.print(query.getAllRows());
List<Marque> marques = query.getAll