DBvolution: Always Java, Never SQL.

DBvolution automatically protects you from common SQL mistakes like Cartesian Joins or Blank Queries, makes outer joins trivial, helps you collect semantic knowledge, and makes your application completely portable across databases.

DBvolution removes Object/Relational Impedance by using classes to represent and store the information on each table, and using special datatypes to make setting query conditions trivial and intuitive.

To use DBV, first create a connection to your database using the DBDatabase subclasses in nz.co.gregs.dbvolution.databases.

With the the DBDatabase you can create the DBRow classes required from the database schema using DBTableClassGenerator or you can write your own. DBDatabase provides methods to create and "drop" tables from the database so you can start from scratch or migrate easily. There are examples to start from in nz.co.gregs.dbvolution.example.

Using your DBRow subclasses you can create simple queries using DBTable or complex ones using DBQuery.

You can create transactions easily using DBScript testing the transaction with test or committing the changes with implement. I've been writing SQL for 20 years and DBV is better, I hope you like it.

Gregory Graham

Packages 
Package Description
nz.co.gregs.dbvolution  
nz.co.gregs.dbvolution.actions
Classes To Implement And Store Database Changes and Actions.
nz.co.gregs.dbvolution.annotations
Annotations To Store Database Semantics In Java.
nz.co.gregs.dbvolution.columns
Classes For Creating Portable References To Database Columns In Java Classes.
nz.co.gregs.dbvolution.databases
DBDatabase Subclasses That Connect to Specific Supported Databases.
nz.co.gregs.dbvolution.databases.connections  
nz.co.gregs.dbvolution.databases.definitions
DBDefinition Subclasses For Supported Databases.
nz.co.gregs.dbvolution.databases.metadata  
nz.co.gregs.dbvolution.databases.settingsbuilders  
nz.co.gregs.dbvolution.databases.supports  
nz.co.gregs.dbvolution.datatypes
DBvolution Equivalents For The Standard Java and Database Types.
nz.co.gregs.dbvolution.datatypes.spatial2D  
nz.co.gregs.dbvolution.exceptions
Specific Exceptions For Specific Errors.
nz.co.gregs.dbvolution.expressions
Make Complex Conditions For Your Queries Using Expressions .
nz.co.gregs.dbvolution.expressions.search  
nz.co.gregs.dbvolution.expressions.spatial2D  
nz.co.gregs.dbvolution.expressions.windows  
nz.co.gregs.dbvolution.generation  
nz.co.gregs.dbvolution.generation.deprecated
Automatically Create DBRow Classes Based An Existing Schema.
nz.co.gregs.dbvolution.internal
Internal API.
nz.co.gregs.dbvolution.internal.database  
nz.co.gregs.dbvolution.internal.datatypes  
nz.co.gregs.dbvolution.internal.h2  
nz.co.gregs.dbvolution.internal.mysql  
nz.co.gregs.dbvolution.internal.oracle  
nz.co.gregs.dbvolution.internal.oracle.aws  
nz.co.gregs.dbvolution.internal.oracle.xe  
nz.co.gregs.dbvolution.internal.postgres  
nz.co.gregs.dbvolution.internal.properties
Internal API.
nz.co.gregs.dbvolution.internal.query  
nz.co.gregs.dbvolution.internal.querygraph  
nz.co.gregs.dbvolution.internal.sqlite  
nz.co.gregs.dbvolution.internal.sqlserver  
nz.co.gregs.dbvolution.operators
The Operators Used By QueryableDatatypes To Provide The Most Common Conditions.
nz.co.gregs.dbvolution.query
Internal API plus QueryGraph.
nz.co.gregs.dbvolution.reflection  
nz.co.gregs.dbvolution.results  
nz.co.gregs.dbvolution.transactions
Low-Level Transaction Support.
nz.co.gregs.dbvolution.utility  
nz.co.gregs.dbvolution.utility.comparators  
nz.co.gregs.dbvolution.utility.encryption