Code Monkey home page Code Monkey logo

datanucleus-rdbms's Introduction

datanucleus-rdbms

DataNucleus support for persistence to RDBMS Datastores. This plugin makes use of JDBC drivers for the datastores supported.

This project is built using Maven, by executing mvn clean install which installs the built jar in your local Maven repository.

KeyFacts

License : Apache 2 licensed
Issue Tracker : http://github.com/datanucleus/datanucleus-rdbms/issues
Javadocs : 6.0, 5.2, 5.1, 5.0, 4.1, 4.0
Download : Maven Central
Dependencies : See file pom.xml
Support : DataNucleus Support Page

Datastore Adapters

Each supported datastore will have an associated "adapter" stored under org.datanucleus.store.rdbms.adapter, so if planning on supporting or improving support for an RDBMS database this is the place to look (as well as in plugin.xml).

Mappings

DataNucleus RDBMS maps fields to columns using a mapping. Each Java type has a JavaTypeMapping variant, under org.datanucleus.store.rdbms.mapping.java and each of these has 1+ ColumnMapping (which map approximately onto JDBC types), under org.datanucleus.store.rdbms.mapping.column.

Later DataNucleus releases are making less use of these mappings and more use of the internal TypeConverter mechanism, so that we now only have mappings for some of the more basic types or where complicated handling is required, with remaining types using TypeConverterMapping.

SQL Generation

All SQL generated by datanucleus-rdbms uses an SQL API, located under org.datanucleus.store.rdbms.sql. There you have classes representing SELECT, UPDATE, DELETE and INSERT statements, providing an API for building the SQL.

Table Groups

A table group is a group of tables in the SQL statement. The SQL statement will be composed of 1 or more table groups. A table group equates to an object in an object-based query language. For example the candidate object will be in the first table group. When a relation is navigated the related object will be in its table group. And so on. All of the way down an inheritance tree will use the same table group; by that we mean that if you have a class Person and class Employee which extends Person and they have their own tables in the datastore, then when referring to the candidate object of type Employee, the tables PERSON and EMPLOYEE will be in the same table group.

Table Naming

With the SQLStatement API a developer can define the aliases of tables in the SQL statement. If they don't define an alias then the aliases will be generated for them using a DataNucleus extension. The plugin-point org.datanucleus.store.rdbms.sql_tablenamer defines an interface to be implemented by plugins for naming of tables. The default option is alpha-scheme.

alpha-scheme will name tables based on the table group they are in and the number of the table within that group. So you will get table aliases like A0, A1, A2, B0, B1, C0, D0. In this case we have a candidate object in the query with 3 tables (A0, A1, A2) and relations to an object with 2 tables (B0, B1) and these have relations to other objects with a single table (C0), (D0).

t-scheme will name tables based on the table number in the statement as a whole and doesn't use the table group for anything. So you get table aliases like T0, T1, T2, T3, T4, T5, etc.

table-name will use the table name instead of an alias. Clearly this will not work if you have joins to the same table name, but is useful in situations where, for example, the RDBMS doesn't support aliases in an UPDATE/DELETE statement.

To define which namer plugin you want to use, set the extension table-naming-strategy on the SQLStatement and by the persistence property datanucleus.rdbms.sqlTableNamingStrategy at construction of the PMF/EMF.

datanucleus-rdbms's People

Contributors

andi-huber avatar andyjefferson avatar beikov avatar benze avatar chrisco484 avatar cxzl25 avatar ergunbaris avatar jlleitschuh avatar kraendavid avatar leyart avatar nbartels avatar nicholas-os avatar nscuro avatar philipru avatar renataogarcia avatar renhao-liu avatar rguhan-vzm avatar rm3l avatar siepkes avatar sosotughushi avatar stevespringett avatar stijns avatar suilven avatar tgiddings avatar tikhomirovsergey avatar yunus avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.