diff --git a/jOOQ-website/contribute.php b/jOOQ-website/contribute.php index 409c2d86e4..477548b9b7 100644 --- a/jOOQ-website/contribute.php +++ b/jOOQ-website/contribute.php @@ -3,7 +3,7 @@ require 'frame.php'; function printH1() { print 'Be part of jOOQ!'; } -function printSlogan() {} +function getSlogan() {} function printContent() { ?>

Be a jOOQ contributor!

diff --git a/jOOQ-website/css/jooq.css b/jOOQ-website/css/jooq.css index 8a9476db4f..5238837efa 100644 --- a/jOOQ-website/css/jooq.css +++ b/jOOQ-website/css/jooq.css @@ -2,7 +2,7 @@ body { font-family: Verdana,Geneva,Arial,Helvetica,sans-serif; font-weight: normal; text-shadow: 0 1px 0 #FFFFFF; - font-size: 16px; + font-size: 15px; font-style: normal; font-weight: 400; color: #000000; @@ -16,10 +16,19 @@ body { padding: 0; } +hr { + border: 0; + height: 5px; + color: #000; + background-color: #000; +} + h1, h2, h3, h4, h5, h6 { font-family: 'Georgia',Serif; font-weight: normal; color: #000000; + margin-top: 0.5em; + margin-bottom: 0.5em; } h1 { @@ -66,6 +75,7 @@ p.slogan { color: #888888; font-family: 'Georgia',Serif; font-style: italic; + height: 2.5em; } td.left { @@ -90,10 +100,6 @@ td h3 { } ul { - padding-top: 1em; - padding-bottom: 1em; - padding-left: 0; - padding-right: 0; margin: 0; list-style-image:url(../img/favicon-16.png); } @@ -106,11 +112,11 @@ ol { a, a:link, a:visited, a:hover, a:active { color: #882222; text-decoration: none; - text-shadow: 0 1px 1px #666666; + text-shadow: 0 1px 2px #666666; } a:hover { - text-decoration: none; + text-decoration: underline; } #wrapper { @@ -123,7 +129,7 @@ a:hover { background-color: #FFFFFF; margin: 0 auto; position: relative; - width: 940px; + width: 980px; padding-top: 1em; padding-left: 3em; diff --git a/jOOQ-website/frame.php b/jOOQ-website/frame.php index 50041c2302..45c8fbfad7 100644 --- a/jOOQ-website/frame.php +++ b/jOOQ-website/frame.php @@ -70,8 +70,15 @@ - - + ' . $slogan . '

'; + } + + printContent(); + ?>

diff --git a/jOOQ-website/index.php b/jOOQ-website/index.php index 96d18ba0fb..2e720f0d91 100644 --- a/jOOQ-website/index.php +++ b/jOOQ-website/index.php @@ -3,13 +3,11 @@ require 'frame.php'; function printH1() { print 'jOOQ : A peace treaty between SQL and Java'; } -function printSlogan() { -?> -

SQL was never meant to be abstracted. To be confined in the narrow boundaries -of heavy mappers, hiding the beauty and simplicity of relational data. -SQL was never meant to be object-oriented. SQL was never meant to be -anything other than... SQL!

- @@ -178,7 +176,7 @@ create.select(FIRST_NAME, LAST_NAME, create.count())
  • Teradata
  • -

    Other requirements

    +

    Other requirements

    jOOQ runs with Java 1.6+

    License

    diff --git a/jOOQ-website/links.php b/jOOQ-website/links.php index 0cc1c26476..2e8e5ca96d 100644 --- a/jOOQ-website/links.php +++ b/jOOQ-website/links.php @@ -3,7 +3,7 @@ require 'frame.php'; function printH1() { print 'Useful links for jOOQ'; } -function printSlogan() {} +function getSlogan() {} function printContent() { ?>

    NEWS

    diff --git a/jOOQ-website/manual/ADVANCED/CONNECTBY/index.php b/jOOQ-website/manual/ADVANCED/CONNECTBY/index.php new file mode 100644 index 0000000000..68af36d092 --- /dev/null +++ b/jOOQ-website/manual/ADVANCED/CONNECTBY/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : Advanced topics : The Oracle CONNECT BY clause for hierarchical queriesprevious : next
    + + diff --git a/jOOQ-website/manual/ADVANCED/Export/index.php b/jOOQ-website/manual/ADVANCED/Export/index.php new file mode 100644 index 0000000000..d4402f4d04 --- /dev/null +++ b/jOOQ-website/manual/ADVANCED/Export/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : Advanced topics : Exporting data to XML, CSV, JSON, HTML, Textprevious : next
    + + diff --git a/jOOQ-website/manual/ADVANCED/Import/index.php b/jOOQ-website/manual/ADVANCED/Import/index.php new file mode 100644 index 0000000000..fa2d9e7e2b --- /dev/null +++ b/jOOQ-website/manual/ADVANCED/Import/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : Advanced topics : Importing data from XML, CSVprevious
    + + diff --git a/jOOQ-website/manual/ADVANCED/MasterData/index.php b/jOOQ-website/manual/ADVANCED/MasterData/index.php new file mode 100644 index 0000000000..233614aed6 --- /dev/null +++ b/jOOQ-website/manual/ADVANCED/MasterData/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : Advanced topics : Master data generationprevious : next
    + + diff --git a/jOOQ-website/manual/ADVANCED/OracleHints/index.php b/jOOQ-website/manual/ADVANCED/OracleHints/index.php new file mode 100644 index 0000000000..fe7e593ba7 --- /dev/null +++ b/jOOQ-website/manual/ADVANCED/OracleHints/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : Advanced topics : Adding Oracle hints to queriesprevious : next
    + + diff --git a/jOOQ-website/manual/ADVANCED/SchemaMapping/index.php b/jOOQ-website/manual/ADVANCED/SchemaMapping/index.php new file mode 100644 index 0000000000..54d10d3d83 --- /dev/null +++ b/jOOQ-website/manual/ADVANCED/SchemaMapping/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : Advanced topics : Mapping generated schemata and tables to productive environmentsprevious : next
    + + diff --git a/jOOQ-website/manual/ADVANCED/index.php b/jOOQ-website/manual/ADVANCED/index.php new file mode 100644 index 0000000000..2d654e9abc --- /dev/null +++ b/jOOQ-website/manual/ADVANCED/index.php @@ -0,0 +1,42 @@ + + + + + + +
    The jOOQ User Manual : Advanced topicsprevious : next

    Table of contents

      +
    1. +Master data generation +
    2. +
    3. +Mapping generated schemata and tables to productive environments +
    4. +
    5. +Adding Oracle hints to queries +
    6. +
    7. +The Oracle CONNECT BY clause for hierarchical queries +
    8. +
    9. +Exporting data to XML, CSV, JSON, HTML, Text +
    10. +
    11. +Importing data from XML, CSV +
    12. +
    + + diff --git a/jOOQ-website/manual/DSL/ALIAS/index.php b/jOOQ-website/manual/DSL/ALIAS/index.php new file mode 100644 index 0000000000..7bf89d1e7d --- /dev/null +++ b/jOOQ-website/manual/DSL/ALIAS/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Aliased tables and fieldsprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/ARITHMETIC/index.php b/jOOQ-website/manual/DSL/ARITHMETIC/index.php new file mode 100644 index 0000000000..5749aaaae0 --- /dev/null +++ b/jOOQ-website/manual/DSL/ARITHMETIC/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Arithmetic operationsprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/CASE/index.php b/jOOQ-website/manual/DSL/CASE/index.php new file mode 100644 index 0000000000..ae90f4b700 --- /dev/null +++ b/jOOQ-website/manual/DSL/CASE/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : The CASE clauseprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/CAST/index.php b/jOOQ-website/manual/DSL/CAST/index.php new file mode 100644 index 0000000000..b5bb5c76cd --- /dev/null +++ b/jOOQ-website/manual/DSL/CAST/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Type castingprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/CONDITION/index.php b/jOOQ-website/manual/DSL/CONDITION/index.php new file mode 100644 index 0000000000..8b7f83383d --- /dev/null +++ b/jOOQ-website/manual/DSL/CONDITION/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Conditionsprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/EXISTS/index.php b/jOOQ-website/manual/DSL/EXISTS/index.php new file mode 100644 index 0000000000..57ad8feb79 --- /dev/null +++ b/jOOQ-website/manual/DSL/EXISTS/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Nested select statements using the EXISTS operatorprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/FUNCTIONS/index.php b/jOOQ-website/manual/DSL/FUNCTIONS/index.php new file mode 100644 index 0000000000..edc5f307a4 --- /dev/null +++ b/jOOQ-website/manual/DSL/FUNCTIONS/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Functions, aggregate operators, and window functionsprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/IN/index.php b/jOOQ-website/manual/DSL/IN/index.php new file mode 100644 index 0000000000..ce29dbf078 --- /dev/null +++ b/jOOQ-website/manual/DSL/IN/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Nested select statements using the IN operatorprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/NESTED/index.php b/jOOQ-website/manual/DSL/NESTED/index.php new file mode 100644 index 0000000000..1928919e0b --- /dev/null +++ b/jOOQ-website/manual/DSL/NESTED/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Other types of nested selectsprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/PROCEDURES/index.php b/jOOQ-website/manual/DSL/PROCEDURES/index.php new file mode 100644 index 0000000000..35c6cee7ed --- /dev/null +++ b/jOOQ-website/manual/DSL/PROCEDURES/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Stored procedures and functionsprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/SELECT/index.php b/jOOQ-website/manual/DSL/SELECT/index.php new file mode 100644 index 0000000000..3b05a590bc --- /dev/null +++ b/jOOQ-website/manual/DSL/SELECT/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : Complete SELECT syntaxprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/SQL/index.php b/jOOQ-website/manual/DSL/SQL/index.php new file mode 100644 index 0000000000..62d026d073 --- /dev/null +++ b/jOOQ-website/manual/DSL/SQL/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : When it's just much easier: Plain SQLprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/UNION/index.php b/jOOQ-website/manual/DSL/UNION/index.php new file mode 100644 index 0000000000..6df0903484 --- /dev/null +++ b/jOOQ-website/manual/DSL/UNION/index.php @@ -0,0 +1,23 @@ + + + + + + +
    The jOOQ User Manual : DSL or fluent API : UNION and other set operationsprevious : next
    + + diff --git a/jOOQ-website/manual/DSL/index.php b/jOOQ-website/manual/DSL/index.php index d4869cacb7..f0535151e5 100644 --- a/jOOQ-website/manual/DSL/index.php +++ b/jOOQ-website/manual/DSL/index.php @@ -4,17 +4,59 @@ // Please do not edit this content manually require '../../frame.php'; function printH1() { - print 'DSL support'; + print "DSL or fluent API"; +} +function getSlogan() { + return ""; } -function printSlogan() {} function printContent() { global $root; ?> - + -
    The jOOQ User Manual : DSL supportprevious : nextThe jOOQ User Manual : DSL or fluent APIprevious : next
    +

    Table of contents

      +
    1. +Complete SELECT syntax +
    2. +
    3. +Conditions +
    4. +
    5. +Aliased tables and fields +
    6. +
    7. +Nested select statements using the IN operator +
    8. +
    9. +Nested select statements using the EXISTS operator +
    10. +
    11. +Other types of nested selects +
    12. +
    13. +UNION and other set operations +
    14. +
    15. +Functions, aggregate operators, and window functions +
    16. +
    17. +Stored procedures and functions +
    18. +
    19. +Arithmetic operations +
    20. +
    21. +The CASE clause +
    22. +
    23. +Type casting +
    24. +
    25. +When it's just much easier: Plain SQL +
    26. +
    diff --git a/jOOQ-website/manual/JOOQ/ExampleDatabase/index.php b/jOOQ-website/manual/JOOQ/ExampleDatabase/index.php index 9427df1962..e237975a69 100644 --- a/jOOQ-website/manual/JOOQ/ExampleDatabase/index.php +++ b/jOOQ-website/manual/JOOQ/ExampleDatabase/index.php @@ -4,22 +4,24 @@ // Please do not edit this content manually require '../../../frame.php'; function printH1() { - print 'The example database'; + print "The example database"; +} +function getSlogan() { + return " + For the examples in this manual, the same database will always be + referred to. It essentially consists of these entities created using + the Oracle dialect + "; } -function printSlogan() {} function printContent() { global $root; ?> - +
    The jOOQ User Manual : jOOQ classes and their use : The example databaseprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : The example databaseprevious : next
    -

    - For the examples in this manual, the same database will always be - referred to. It essentially contains of these entities (for - example in the Oracle dialect): -

    +

    Example CREATE TABLE statements

     CREATE TABLE t_language (
       id NUMBER(7) NOT NULL PRIMARY KEY,
    @@ -64,7 +66,8 @@ CREATE TABLE t_book_to_book_store (
         ON DELETE CASCADE
     )							
     							
    -

    More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), +

    + More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples

    diff --git a/jOOQ-website/manual/JOOQ/Extend/index.php b/jOOQ-website/manual/JOOQ/Extend/index.php index 35beafe56d..320a6d350e 100644 --- a/jOOQ-website/manual/JOOQ/Extend/index.php +++ b/jOOQ-website/manual/JOOQ/Extend/index.php @@ -4,15 +4,17 @@ // Please do not edit this content manually require '../../../frame.php'; function printH1() { - print 'Extend jOOQ types with custom implementations'; + print "Extend jOOQ types with custom implementations"; +} +function getSlogan() { + return ""; } -function printSlogan() {} function printContent() { global $root; ?> - +
    The jOOQ User Manual : jOOQ classes and their use : Extend jOOQ types with custom implementationsprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : Extend jOOQ types with custom implementationsprevious : next
    - + -
    The jOOQ User Manual : jOOQ classes and their use : The factory classprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : The Factory classprevious : next
    + +

    The Factory and the jOOQ API

    +

    + jOOQ exposes a lot of interfaces and hides most implementation facts + from client code. The reasons for this are: +

    + +

    + The org.jooq.impl.Factory + class is the main class from where you will create all jOOQ objects. + The Factory implements org.jooq.Configuration + and needs to be instanciated with the Configuration's properties: +

    + +

    If you are planning on using several RDBMS (= SQLDialects) or + several distinct JDBC Connections in your software, this will mean + that you have to create a new Factory every time.

    + +

    Factory subclasses

    +

    + There are a couple of subclasses for the general Factory. Each SQL + dialect has its own dialect-specific factory. For instance, if you're + only using the MySQL dialect, you can choose to create a new Factory + using any of the following types: +

    +
    +// A general, dialect-unspecific factory
    +Factory create = new Factory(connection, SQLDialect.MYSQL);
    +
    +// A MySQL-specific factory
    +MySQLFactory create = new MySQLFactory(connection);
    +							
    +

    + The advantage of using a dialect-specific Factory lies in the fact, + that you have access to more proprietary RDMBS functionality. This may + include: +

    + +

    + Another type of Factory subclasses are each generated schema's + factories. If you generate your schema TEST, then you will have access + to a TestFactory. This will be useful in the future, when access to + schema artefacts will be unified. Currently, this has no use. +

    + +

    Potential problems

    +

    + The jOOQ Factory expects its underlying + java.sql.Connection + to be open and ready + for + java.sql.PreparedStatement + creation. You are responsible yourself for the + lifecycle dependency between Factory and Connection. This means: +

    + +

    + So if you want your queries to run in separate transactions, if you + want to roll back a transactions, if you want to close a Connection and + return it to your container, you will have to take care of that + yourself. jOOQ's Factory will always expect its Connection to be in a + ready state for creating new PreparedStatements. If it is not, you have + to create a new Factory. +

    +

    + Please keep in mind that many jOOQ objects will reference your Factory + for their whole lifecycle. This is especially interesting, when dealing + with Updatable Records, + that can perform CRUD operations on the + Factory's underlying Connection. +

    + - diff --git a/jOOQ-website/manual/JOOQ/Query/index.php b/jOOQ-website/manual/JOOQ/Query/index.php index 131f5036a1..06f6cf66f2 100644 --- a/jOOQ-website/manual/JOOQ/Query/index.php +++ b/jOOQ-website/manual/JOOQ/Query/index.php @@ -4,15 +4,17 @@ // Please do not edit this content manually require '../../../frame.php'; function printH1() { - print 'Query and its subtypes'; + print "Query and its subtypes"; +} +function getSlogan() { + return ""; } -function printSlogan() {} function printContent() { global $root; ?> - +
    The jOOQ User Manual : jOOQ classes and their use : Query and its subtypesprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : Query and its subtypesprevious : next
    - +
    The jOOQ User Manual : jOOQ classes and their use : QueryParts and the global architectureprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : QueryParts and the global architectureprevious : next
    - +
    The jOOQ User Manual : jOOQ classes and their use : Results and Recordsprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : Results and Recordsprevious : next
    - +
    The jOOQ User Manual : jOOQ classes and their use : ResultQuery and various ways of fetching dataprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : ResultQuery and various ways of fetching dataprevious : next
    - +
    The jOOQ User Manual : jOOQ classes and their use : Serializability of QueryParts and Resultsprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : Serializability of QueryParts and Resultsprevious : next
    - +
    The jOOQ User Manual : jOOQ classes and their use : Tables and Fieldsprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : Tables and Fieldsprevious : next
    - +
    The jOOQ User Manual : jOOQ classes and their use : Updatable Recordsprevious : nextThe jOOQ User Manual : jOOQ classes and their usage : Updatable Recordsprevious : next
    - +
    The jOOQ User Manual : jOOQ classes and their useprevious : nextThe jOOQ User Manual : jOOQ classes and their usageprevious : next
    -

    - In this section, you will learn about how to use jOOQ object - factories and the jOOQ object oriented query model, to express - your - SQL in jOOQ -

    Overview

    jOOQ essentially has two packages:

    This section is about the main jOOQ classes and the global - architecture. Most of the time, however, you will be using the DSL - API (DSL for Domain Specific Language) in order to create queries + architecture. Most of the time, however, you will be using the + DSL or fluent API + in order to create queries the way you're used to in SQL

    Table of contents

      @@ -46,7 +48,7 @@ function printContent() { The example database
    1. -The factory class +The Factory class
    2. Tables and Fields diff --git a/jOOQ-website/manual/META/Configuration/index.php b/jOOQ-website/manual/META/Configuration/index.php new file mode 100644 index 0000000000..c93a92fdd8 --- /dev/null +++ b/jOOQ-website/manual/META/Configuration/index.php @@ -0,0 +1,23 @@ + + + + + + +
      The jOOQ User Manual : Meta model code generation : Configuration and setupprevious : next
      + + diff --git a/jOOQ-website/manual/META/PROCEDURE/index.php b/jOOQ-website/manual/META/PROCEDURE/index.php new file mode 100644 index 0000000000..3fb779a3be --- /dev/null +++ b/jOOQ-website/manual/META/PROCEDURE/index.php @@ -0,0 +1,23 @@ + + + + + + +
      The jOOQ User Manual : Meta model code generation : Procedures and packagesprevious : next
      + + diff --git a/jOOQ-website/manual/META/SCHEMA/index.php b/jOOQ-website/manual/META/SCHEMA/index.php new file mode 100644 index 0000000000..b3adebdc5b --- /dev/null +++ b/jOOQ-website/manual/META/SCHEMA/index.php @@ -0,0 +1,23 @@ + + + + + + +
      The jOOQ User Manual : Meta model code generation : Schemataprevious : next
      + + diff --git a/jOOQ-website/manual/META/SEQUENCE/index.php b/jOOQ-website/manual/META/SEQUENCE/index.php new file mode 100644 index 0000000000..f3e5a06109 --- /dev/null +++ b/jOOQ-website/manual/META/SEQUENCE/index.php @@ -0,0 +1,23 @@ + + + + + + +
      The jOOQ User Manual : Meta model code generation : Sequencesprevious : next
      + + diff --git a/jOOQ-website/manual/META/TABLE/index.php b/jOOQ-website/manual/META/TABLE/index.php new file mode 100644 index 0000000000..654f03ca1b --- /dev/null +++ b/jOOQ-website/manual/META/TABLE/index.php @@ -0,0 +1,23 @@ + + + + + + +
      The jOOQ User Manual : Meta model code generation : Tables and views and their corresponding recordsprevious : next
      + + diff --git a/jOOQ-website/manual/META/UDT/index.php b/jOOQ-website/manual/META/UDT/index.php new file mode 100644 index 0000000000..8b678b9eda --- /dev/null +++ b/jOOQ-website/manual/META/UDT/index.php @@ -0,0 +1,23 @@ + + + + + + +
      The jOOQ User Manual : Meta model code generation : UDT's including ARRAY and ENUM typesprevious : next
      + + diff --git a/jOOQ-website/manual/META/index.php b/jOOQ-website/manual/META/index.php index 0c9cb9e52f..d3ee57f2f2 100644 --- a/jOOQ-website/manual/META/index.php +++ b/jOOQ-website/manual/META/index.php @@ -4,17 +4,38 @@ // Please do not edit this content manually require '../../frame.php'; function printH1() { - print 'Meta model source code generation'; + print "Meta model code generation"; +} +function getSlogan() { + return ""; } -function printSlogan() {} function printContent() { global $root; ?> - + -
      The jOOQ User Manual : Meta model source code generationprevious : nextThe jOOQ User Manual : Meta model code generationprevious : next
      +

      Table of contents

        +
      1. +Configuration and setup +
      2. +
      3. +Schemata +
      4. +
      5. +Tables and views and their corresponding records +
      6. +
      7. +Procedures and packages +
      8. +
      9. +UDT's including ARRAY and ENUM types +
      10. +
      11. +Sequences +
      12. +
      diff --git a/jOOQ-website/manual/index.php b/jOOQ-website/manual/index.php index 71e9c2ace2..01d641a421 100644 --- a/jOOQ-website/manual/index.php +++ b/jOOQ-website/manual/index.php @@ -4,79 +4,90 @@ // Please do not edit this content manually require '../frame.php'; function printH1() { - print 'The jOOQ User Manual'; + print "The jOOQ User Manual"; +} +function getSlogan() { + return " + Learn about jOOQ using its single or multi-paged manuals + "; } -function printSlogan() {} function printContent() { global $root; ?> - +
      The jOOQ User ManualnextThe jOOQ User Manualnext
      -

      - The manual is divided in these sections -

      Table of contents

      1. -jOOQ classes and their use +jOOQ classes and their usage
        1. The example database
        2. -The factory class +The Factory class
        3. Tables and Fields @@ -105,13 +116,94 @@ function printContent() {
      2. -Meta model source code generation +Meta model code generation +
          +
        1. +Configuration and setup
        2. -DSL support +Schemata
        3. -Advanced topics +Tables and views and their corresponding records +
        4. +
        5. +Procedures and packages +
        6. +
        7. +UDT's including ARRAY and ENUM types +
        8. +
        9. +Sequences +
        10. +
        +
      3. +
      4. +DSL or fluent API +
          +
        1. +Complete SELECT syntax +
        2. +
        3. +Conditions +
        4. +
        5. +Aliased tables and fields +
        6. +
        7. +Nested select statements using the IN operator +
        8. +
        9. +Nested select statements using the EXISTS operator +
        10. +
        11. +Other types of nested selects +
        12. +
        13. +UNION and other set operations +
        14. +
        15. +Functions, aggregate operators, and window functions +
        16. +
        17. +Stored procedures and functions +
        18. +
        19. +Arithmetic operations +
        20. +
        21. +The CASE clause +
        22. +
        23. +Type casting +
        24. +
        25. +When it's just much easier: Plain SQL +
        26. +
        +
      5. +
      6. +Advanced topics +
          +
        1. +Master data generation +
        2. +
        3. +Mapping generated schemata and tables to productive environments +
        4. +
        5. +Adding Oracle hints to queries +
        6. +
        7. +The Oracle CONNECT BY clause for hierarchical queries +
        8. +
        9. +Exporting data to XML, CSV, JSON, HTML, Text +
        10. +
        11. +Importing data from XML, CSV +
        12. +
      + ' + @@ -18,11 +20,15 @@ require ' frame.php'; function printH1() { - print ' - -'; + print " + +"; +} +function getSlogan() { + return " + +"; } -function printSlogan() {} function printContent() { global $root; ?> @@ -37,17 +43,13 @@ function printContent() { - - - - - - @@ -103,7 +105,7 @@ function printContent() { - previous + previous @@ -111,7 +113,7 @@ function printContent() { - next + next @@ -182,9 +184,49 @@ function printContent() { - + + + + + + + Reference not found: + + + + + + + https://github.com/lukaseder/jOOQ/blob/master/jOOQ/src/main/java/ + + .java + + + + http://download.oracle.com/javase/6/docs/api/ + + .html + + + + + Reference not supported + + + - + + + + + + + + + + + + diff --git a/jOOQ-website/src/main/resources/manual.xml b/jOOQ-website/src/main/resources/manual.xml index 68842220c5..935ded7c6f 100644 --- a/jOOQ-website/src/main/resources/manual.xml +++ b/jOOQ-website/src/main/resources/manual.xml @@ -2,53 +2,60 @@
      The jOOQ User Manual + + Learn about jOOQ using its single or multi-paged manuals + -

      - The manual is divided in these sections -

        -
      • - -

        - See these chapters for an overview of the jOOQ internal architecture - and all types that are involved with jOOQ's query creation and - execution. This is the important part for you, also, if you wish to - extend jOOQ -

        -
      • -
      • - -

        - See these chapters to understand how you can use jOOQ as a source code - generator, and what type of artefacts are generated by jOOQ -

        -
      • -
      • - -

        - See these chapters to learn about how to use jOOQ in every day's work. The - jOOQ DSL is the main way to create and execute jOOQ queries almost as - if SQL was embedded in Java directly -

        -
      • -
      • - -

        - Some advanced topics including not-everyday functionality -

        -
      • -
      -

      +

      Single-paged manuals

      +

      Coming soon in the manuals section of the jOOQ website:

      +
        +
      • A single-paged HTML manual
      • +
      • A downloadable PDF manual
      • +
      +

      The multi-paged manual

      +

      This manual is divided into four main sections:

      +
        +
      • + +

        + See these chapters for an overview of the jOOQ internal architecture + and all types that are involved with jOOQ's query creation and + execution. This is the important part for you, also, if you wish to + extend jOOQ +

        +
      • +
      • + +

        + See these chapters to understand how you can use jOOQ as a source code + generator, and what type of artefacts are generated by jOOQ +

        +
      • +
      • + +

        + See these chapters to learn about how to use jOOQ in every day's work. The + jOOQ DSL is the main way to create and execute jOOQ queries almost as + if SQL was embedded in Java directly +

        +
      • +
      • + +

        + Some advanced topics including not-everyday functionality +

        +
      • +
      jOOQ classes and their usage + + In these sections, you will learn about how to use jOOQ object + factories and the jOOQ object oriented query model, to express + your SQL in jOOQ + -

      - In this section, you will learn about how to use jOOQ object - factories and the jOOQ object oriented query model, to express - your - SQL in jOOQ -

      Overview

      jOOQ essentially has two packages:

        @@ -57,25 +64,27 @@
      • org.jooq.impl: the jOOQ implementation and factories. Most implementation classes are package private, you can only access - them using the org.jooq.impl.Factory + them using the

      This section is about the main jOOQ classes and the global - architecture. Most of the time, however, you will be using the DSL - API (DSL for Domain Specific Language) in order to create queries + architecture. Most of the time, however, you will be using the + + in order to create queries the way you're used to in SQL

      The example database + + For the examples in this manual, the same database will always be + referred to. It essentially consists of these entities created using + the Oracle dialect + -

      - For the examples in this manual, the same database will always be - referred to. It essentially contains of these entities (for - example in the Oracle dialect): -

      +

      Example CREATE TABLE statements

       CREATE TABLE t_language (
         id NUMBER(7) NOT NULL PRIMARY KEY,
      @@ -120,13 +129,125 @@ CREATE TABLE t_book_to_book_store (
           ON DELETE CASCADE
       )							
       							
      -

      More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), +

      + More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc), stored procedures and packages are introduced for specific examples

      - The factory class + The Factory class + + jOOQ hides most implementation facts from you by letting you + use the jOOQ Factory as a single entry point to all of the jOOQ API. + This way, you can discover all of the API using syntax auto-completion, for + instance. + + +

      The Factory and the jOOQ API

      +

      + jOOQ exposes a lot of interfaces and hides most implementation facts + from client code. The reasons for this are: +

      +
        +
      • Interface-driven design. This allows for modelling queries in a fluent API most efficiently
      • +
      • Reduction of complexity for client code.
      • +
      • API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.
      • +
      +

      + The + class is the main class from where you will create all jOOQ objects. + The Factory implements + and needs to be instanciated with the Configuration's properties: +

      +
        +
      • : + The dialect of your database. This may be any of the currently + supported database types
      • +
      • : + A JDBC Connection that will be re-used for the whole + lifecycle of your Factory
      • +
      • : + An optional mapping of schemata. Check out the + + page for details
      • +
      +

      If you are planning on using several RDBMS (= SQLDialects) or + several distinct JDBC Connections in your software, this will mean + that you have to create a new Factory every time.

      + +

      Factory subclasses

      +

      + There are a couple of subclasses for the general Factory. Each SQL + dialect has its own dialect-specific factory. For instance, if you're + only using the MySQL dialect, you can choose to create a new Factory + using any of the following types: +

      +
      +// A general, dialect-unspecific factory
      +Factory create = new Factory(connection, SQLDialect.MYSQL);
      +
      +// A MySQL-specific factory
      +MySQLFactory create = new MySQLFactory(connection);
      +							
      +

      + The advantage of using a dialect-specific Factory lies in the fact, + that you have access to more proprietary RDMBS functionality. This may + include: +

      +
        +
      • Oracle's + pseudo columns and functions
      • +
      • MySQL's encryption functions
      • +
      • PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)
      • +
      +

      + Another type of Factory subclasses are each generated schema's + factories. If you generate your schema TEST, then you will have access + to a TestFactory. This will be useful in the future, when access to + schema artefacts will be unified. Currently, this has no use. +

      + +

      Potential problems

      +

      + The jOOQ Factory expects its underlying + + to be open and ready + for + + creation. You are responsible yourself for the + lifecycle dependency between Factory and Connection. This means: +

      +
        +
      • jOOQ will never close the Connection.
      • +
      • jOOQ will never commit or rollback on the Connection + (Except for CSV-imports, if explicitly configured in the )
      • +
      • jOOQ will never start any transactions.
      • +
      • + jOOQ does not know the concept of a session as for instance + Hibernate +
      • +
      • jOOQ does not know the concept of a second-level cache. SQL is + executed directly on the underlying RDBMS.
      • +
      • jOOQ does not make assumptions about the origin of the Connection. + If it is container managed, that is fine.
      • +
      +

      + So if you want your queries to run in separate transactions, if you + want to roll back a transactions, if you want to close a Connection and + return it to your container, you will have to take care of that + yourself. jOOQ's Factory will always expect its Connection to be in a + ready state for creating new PreparedStatements. If it is not, you have + to create a new Factory. +

      +

      + Please keep in mind that many jOOQ objects will reference your Factory + for their whole lifecycle. This is especially interesting, when dealing + with , + that can perform CRUD operations on the + Factory's underlying Connection. +

      +
      Tables and Fields @@ -155,7 +276,7 @@ CREATE TABLE t_book_to_book_store (
      - Meta model source code generation + Meta model code generation
      Configuration and setup @@ -178,7 +299,7 @@ CREATE TABLE t_book_to_book_store (
      - DSL support + DSL or fluent API
      Complete SELECT syntax
      + +