Added some sections to the manual

This commit is contained in:
Lukas Eder 2011-09-17 13:17:42 +00:00
parent ed2a0cceb4
commit b55d99bb0c
48 changed files with 1304 additions and 204 deletions

View File

@ -3,7 +3,7 @@ require 'frame.php';
function printH1() {
print 'Be part of jOOQ!';
}
function printSlogan() {}
function getSlogan() {}
function printContent() {
?>
<h2>Be a jOOQ contributor!</h2>

View File

@ -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;

View File

@ -70,8 +70,15 @@
</tr>
</table>
<?php printSlogan(); ?>
<?php printContent(); ?>
<?php
$slogan = getSlogan();
if ($slogan != '') {
print '<p class="slogan">' . $slogan . '</p>';
}
printContent();
?>
<br/>
<br/>

View File

@ -3,13 +3,11 @@ require 'frame.php';
function printH1() {
print 'jOOQ : A peace treaty between SQL and Java';
}
function printSlogan() {
?>
<p class="slogan">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!</p>
<?php
function getSlogan() {
return "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!";
}
function printContent() {
?>
@ -178,7 +176,7 @@ create.select(FIRST_NAME, LAST_NAME, create.count())
<li>Teradata</li>
</ul>
<h3>Other requirements</h3>
<h2>Other requirements</h2>
<p>jOOQ runs with Java 1.6+</p>
<h3>License</h3>

View File

@ -3,7 +3,7 @@ require 'frame.php';
function printH1() {
print 'Useful links for jOOQ';
}
function printSlogan() {}
function getSlogan() {}
function printContent() {
?>
<h2>NEWS</h2>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "The Oracle CONNECT BY clause for hierarchical queries";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a> : <a href="<?=$root?>/manual/ADVANCED/CONNECTBY/">The Oracle CONNECT BY clause for hierarchical queries</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/ADVANCED/OracleHints/" title="Adding Oracle hints to queries">previous</a> : <a href="<?=$root?>/manual/ADVANCED/Export/" title="Exporting data to XML, CSV, JSON, HTML, Text">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Exporting data to XML, CSV, JSON, HTML, Text";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a> : <a href="<?=$root?>/manual/ADVANCED/Export/">Exporting data to XML, CSV, JSON, HTML, Text</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/ADVANCED/CONNECTBY/" title="The Oracle CONNECT BY clause for hierarchical queries">previous</a> : <a href="<?=$root?>/manual/ADVANCED/Import/" title="Importing data from XML, CSV">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Importing data from XML, CSV";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a> : <a href="<?=$root?>/manual/ADVANCED/Import/">Importing data from XML, CSV</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/ADVANCED/Export/" title="Exporting data to XML, CSV, JSON, HTML, Text">previous</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Master data generation";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a> : <a href="<?=$root?>/manual/ADVANCED/MasterData/">Master data generation</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/ADVANCED/" title="Advanced topics">previous</a> : <a href="<?=$root?>/manual/ADVANCED/SchemaMapping/" title="Mapping generated schemata and tables to productive environments">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Adding Oracle hints to queries";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a> : <a href="<?=$root?>/manual/ADVANCED/OracleHints/">Adding Oracle hints to queries</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/ADVANCED/SchemaMapping/" title="Mapping generated schemata and tables to productive environments">previous</a> : <a href="<?=$root?>/manual/ADVANCED/CONNECTBY/" title="The Oracle CONNECT BY clause for hierarchical queries">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Mapping generated schemata and tables to productive environments";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a> : <a href="<?=$root?>/manual/ADVANCED/SchemaMapping/">Mapping generated schemata and tables to productive environments</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/ADVANCED/MasterData/" title="Master data generation">previous</a> : <a href="<?=$root?>/manual/ADVANCED/OracleHints/" title="Adding Oracle hints to queries">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,42 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../frame.php';
function printH1() {
print "Advanced topics";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/SQL/" title="When it's just much easier: Plain SQL">previous</a> : <a href="<?=$root?>/manual/ADVANCED/MasterData/" title="Master data generation">next</a></td>
</tr>
</table><h3>Table of contents</h3><ol>
<li>
<a href="<?=$root?>/manual/ADVANCED/MasterData/" title="Master data generation">Master data generation</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/SchemaMapping/" title="Mapping generated schemata and tables to productive environments">Mapping generated schemata and tables to productive environments</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/OracleHints/" title="Adding Oracle hints to queries">Adding Oracle hints to queries</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/CONNECTBY/" title="The Oracle CONNECT BY clause for hierarchical queries">The Oracle CONNECT BY clause for hierarchical queries</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/Export/" title="Exporting data to XML, CSV, JSON, HTML, Text">Exporting data to XML, CSV, JSON, HTML, Text</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/Import/" title="Importing data from XML, CSV">Importing data from XML, CSV</a>
</li>
</ol>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Aliased tables and fields";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/ALIAS/">Aliased tables and fields</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/CONDITION/" title="Conditions">previous</a> : <a href="<?=$root?>/manual/DSL/IN/" title="Nested select statements using the IN operator">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Arithmetic operations";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/ARITHMETIC/">Arithmetic operations</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/PROCEDURES/" title="Stored procedures and functions">previous</a> : <a href="<?=$root?>/manual/DSL/CASE/" title="The CASE clause">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "The CASE clause";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/CASE/">The CASE clause</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/ARITHMETIC/" title="Arithmetic operations">previous</a> : <a href="<?=$root?>/manual/DSL/CAST/" title="Type casting">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Type casting";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/CAST/">Type casting</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/CASE/" title="The CASE clause">previous</a> : <a href="<?=$root?>/manual/DSL/SQL/" title="When it's just much easier: Plain SQL">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Conditions";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/CONDITION/">Conditions</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/SELECT/" title="Complete SELECT syntax">previous</a> : <a href="<?=$root?>/manual/DSL/ALIAS/" title="Aliased tables and fields">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Nested select statements using the EXISTS operator";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/EXISTS/">Nested select statements using the EXISTS operator</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/IN/" title="Nested select statements using the IN operator">previous</a> : <a href="<?=$root?>/manual/DSL/NESTED/" title="Other types of nested selects">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Functions, aggregate operators, and window functions";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/FUNCTIONS/">Functions, aggregate operators, and window functions</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/UNION/" title="UNION and other set operations">previous</a> : <a href="<?=$root?>/manual/DSL/PROCEDURES/" title="Stored procedures and functions">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Nested select statements using the IN operator";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/IN/">Nested select statements using the IN operator</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/ALIAS/" title="Aliased tables and fields">previous</a> : <a href="<?=$root?>/manual/DSL/EXISTS/" title="Nested select statements using the EXISTS operator">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Other types of nested selects";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/NESTED/">Other types of nested selects</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/EXISTS/" title="Nested select statements using the EXISTS operator">previous</a> : <a href="<?=$root?>/manual/DSL/UNION/" title="UNION and other set operations">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Stored procedures and functions";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/PROCEDURES/">Stored procedures and functions</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/FUNCTIONS/" title="Functions, aggregate operators, and window functions">previous</a> : <a href="<?=$root?>/manual/DSL/ARITHMETIC/" title="Arithmetic operations">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Complete SELECT syntax";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/SELECT/">Complete SELECT syntax</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/" title="DSL or fluent API">previous</a> : <a href="<?=$root?>/manual/DSL/CONDITION/" title="Conditions">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "When it's just much easier: Plain SQL";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/SQL/">When it's just much easier: Plain SQL</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/CAST/" title="Type casting">previous</a> : <a href="<?=$root?>/manual/ADVANCED/" title="Advanced topics">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "UNION and other set operations";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a> : <a href="<?=$root?>/manual/DSL/UNION/">UNION and other set operations</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/DSL/NESTED/" title="Other types of nested selects">previous</a> : <a href="<?=$root?>/manual/DSL/FUNCTIONS/" title="Functions, aggregate operators, and window functions">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -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;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL support</a></td><td align="right"><a href="<?=$root?>/manual/META/">previous</a> : <a href="<?=$root?>/manual/Advanced/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/DSL/">DSL or fluent API</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/META/SEQUENCE/" title="Sequences">previous</a> : <a href="<?=$root?>/manual/DSL/SELECT/" title="Complete SELECT syntax">next</a></td>
</tr>
</table>
</table><h3>Table of contents</h3><ol>
<li>
<a href="<?=$root?>/manual/DSL/SELECT/" title="Complete SELECT syntax">Complete SELECT syntax</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/CONDITION/" title="Conditions">Conditions</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/ALIAS/" title="Aliased tables and fields">Aliased tables and fields</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/IN/" title="Nested select statements using the IN operator">Nested select statements using the IN operator</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/EXISTS/" title="Nested select statements using the EXISTS operator">Nested select statements using the EXISTS operator</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/NESTED/" title="Other types of nested selects">Other types of nested selects</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/UNION/" title="UNION and other set operations">UNION and other set operations</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/FUNCTIONS/" title="Functions, aggregate operators, and window functions">Functions, aggregate operators, and window functions</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/PROCEDURES/" title="Stored procedures and functions">Stored procedures and functions</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/ARITHMETIC/" title="Arithmetic operations">Arithmetic operations</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/CASE/" title="The CASE clause">The CASE clause</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/CAST/" title="Type casting">Type casting</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/SQL/" title="When it's just much easier: Plain SQL">When it's just much easier: Plain SQL</a>
</li>
</ol>
<?php
}
?>

View File

@ -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;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/ExampleDatabase/">The example database</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/">previous</a> : <a href="<?=$root?>/manual/JOOQ/Factory/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/ExampleDatabase/">The example database</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/" title="jOOQ classes and their usage">previous</a> : <a href="<?=$root?>/manual/JOOQ/Factory/" title="The Factory class">next</a></td>
</tr>
</table>
<p>
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):
</p>
<h2>Example CREATE TABLE statements</h2>
<pre class="prettyprint lang-sql">
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
)
</pre>
<p>More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc),
<p>
More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc),
stored procedures and packages are introduced for specific examples
</p>

View File

@ -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;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/Extend/">Extend jOOQ types with custom implementations</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/Serializability/">previous</a> : <a href="<?=$root?>/manual/META/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/Extend/">Extend jOOQ types with custom implementations</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/Serializability/" title="Serializability of QueryParts and Results">previous</a> : <a href="<?=$root?>/manual/META/" title="Meta model code generation">next</a></td>
</tr>
</table>
<?php

View File

@ -4,18 +4,151 @@
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print 'The factory class';
print "The Factory class";
}
function getSlogan() {
return "
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.
";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/Factory/">The factory class</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/ExampleDatabase/">previous</a> : <a href="<?=$root?>/manual/JOOQ/Table/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/Factory/">The Factory class</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/ExampleDatabase/" title="The example database">previous</a> : <a href="<?=$root?>/manual/JOOQ/Table/" title="Tables and Fields">next</a></td>
</tr>
</table>
</table>
<h2>The Factory and the jOOQ API</h2>
<p>
jOOQ exposes a lot of interfaces and hides most implementation facts
from client code. The reasons for this are:
</p>
<ul>
<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
<li>Reduction of complexity for client code.</li>
<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
</ul>
<p>
The <a href="https://github.com/lukaseder/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/impl/Factory.java">org.jooq.impl.Factory</a>
class is the main class from where you will create all jOOQ objects.
The Factory implements <a href="https://github.com/lukaseder/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/Configuration.java">org.jooq.Configuration</a>
and needs to be instanciated with the Configuration's properties:
</p>
<ul>
<li>
<a href="https://github.com/lukaseder/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/SQLDialect.java">org.jooq.SQLDialect</a> :
The dialect of your database. This may be any of the currently
supported database types</li>
<li>
<a href="http://download.oracle.com/javase/6/docs/api/java/sql/Connection.html">java.sql.Connection</a> :
A JDBC Connection that will be re-used for the whole
lifecycle of your Factory</li>
<li>
<a href="https://github.com/lukaseder/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/SchemaMapping.java">org.jooq.SchemaMapping</a> :
An optional mapping of schemata. Check out the
<a href="<?=$root?>/manual/ADVANCED/SchemaMapping/">SchemaMapping</a>
page for details</li>
</ul>
<p>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. </p>
<h3>Factory subclasses</h3>
<p>
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:
</p>
<pre class="prettyprint lang-java">
// A general, dialect-unspecific factory
Factory create = new Factory(connection, SQLDialect.MYSQL);
// A MySQL-specific factory
MySQLFactory create = new MySQLFactory(connection);
</pre>
<p>
The advantage of using a dialect-specific Factory lies in the fact,
that you have access to more proprietary RDMBS functionality. This may
include:
</p>
<ul>
<li>Oracle's <a href="<?=$root?>/manual/ADVANCED/CONNECTBY/">CONNECT BY</a>
pseudo columns and functions</li>
<li>MySQL's encryption functions</li>
<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
</ul>
<p>
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.
</p>
<h3>Potential problems</h3>
<p>
The jOOQ Factory expects its underlying
<a href="http://download.oracle.com/javase/6/docs/api/java/sql/Connection.html">java.sql.Connection</a>
to be <strong>open and ready</strong>
for
<a href="http://download.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html">java.sql.PreparedStatement</a>
creation. You are responsible yourself for the
lifecycle dependency between Factory and Connection. This means:
</p>
<ul>
<li>jOOQ will never close the Connection.</li>
<li>jOOQ will never commit or rollback on the Connection
(Except for CSV-imports, if explicitly configured in the <a href="<?=$root?>/manual/ADVANCED/Import/">Import API</a>)</li>
<li>jOOQ will never start any transactions.</li>
<li>
jOOQ does not know the concept of a session as for instance
<a href="http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/architecture.html#architecture-current-session">Hibernate</a>
</li>
<li>jOOQ does not know the concept of a second-level cache. SQL is
executed directly on the underlying RDBMS.</li>
<li>jOOQ does not make assumptions about the origin of the Connection.
If it is container managed, that is fine.</li>
</ul>
<p>
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.
</p>
<p>
Please keep in mind that many jOOQ objects will reference your Factory
for their whole lifecycle. This is especially interesting, when dealing
with <a href="<?=$root?>/manual/JOOQ/UpdatableRecord/">Updatable Records</a>,
that can perform CRUD operations on the
Factory's underlying Connection.
</p>
<?php
}
?>

View File

@ -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;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/Query/">Query and its subtypes</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/UpdatableRecord/">previous</a> : <a href="<?=$root?>/manual/JOOQ/ResultQuery/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/Query/">Query and its subtypes</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/UpdatableRecord/" title="Updatable Records">previous</a> : <a href="<?=$root?>/manual/JOOQ/ResultQuery/" title="ResultQuery and various ways of fetching data">next</a></td>
</tr>
</table>
<?php

View File

@ -4,15 +4,17 @@
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print 'QueryParts and the global architecture';
print "QueryParts and the global architecture";
}
function getSlogan() {
return "";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/QueryPart/">QueryParts and the global architecture</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/ResultQuery/">previous</a> : <a href="<?=$root?>/manual/JOOQ/Serializability/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/QueryPart/">QueryParts and the global architecture</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/ResultQuery/" title="ResultQuery and various ways of fetching data">previous</a> : <a href="<?=$root?>/manual/JOOQ/Serializability/" title="Serializability of QueryParts and Results">next</a></td>
</tr>
</table>
<?php

View File

@ -4,15 +4,17 @@
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print 'Results and Records';
print "Results and Records";
}
function getSlogan() {
return "";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/Result/">Results and Records</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/Table/">previous</a> : <a href="<?=$root?>/manual/JOOQ/UpdatableRecord/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/Result/">Results and Records</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/Table/" title="Tables and Fields">previous</a> : <a href="<?=$root?>/manual/JOOQ/UpdatableRecord/" title="Updatable Records">next</a></td>
</tr>
</table>
<?php

View File

@ -4,15 +4,17 @@
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print 'ResultQuery and various ways of fetching data';
print "ResultQuery and various ways of fetching data";
}
function getSlogan() {
return "";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/ResultQuery/">ResultQuery and various ways of fetching data</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/Query/">previous</a> : <a href="<?=$root?>/manual/JOOQ/QueryPart/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/ResultQuery/">ResultQuery and various ways of fetching data</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/Query/" title="Query and its subtypes">previous</a> : <a href="<?=$root?>/manual/JOOQ/QueryPart/" title="QueryParts and the global architecture">next</a></td>
</tr>
</table>
<?php

View File

@ -4,15 +4,17 @@
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print 'Serializability of QueryParts and Results';
print "Serializability of QueryParts and Results";
}
function getSlogan() {
return "";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/Serializability/">Serializability of QueryParts and Results</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/QueryPart/">previous</a> : <a href="<?=$root?>/manual/JOOQ/Extend/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/Serializability/">Serializability of QueryParts and Results</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/QueryPart/" title="QueryParts and the global architecture">previous</a> : <a href="<?=$root?>/manual/JOOQ/Extend/" title="Extend jOOQ types with custom implementations">next</a></td>
</tr>
</table>
<?php

View File

@ -4,15 +4,17 @@
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print 'Tables and Fields';
print "Tables and Fields";
}
function getSlogan() {
return "";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/Table/">Tables and Fields</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/Factory/">previous</a> : <a href="<?=$root?>/manual/JOOQ/Result/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/Table/">Tables and Fields</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/Factory/" title="The Factory class">previous</a> : <a href="<?=$root?>/manual/JOOQ/Result/" title="Results and Records">next</a></td>
</tr>
</table>
<?php

View File

@ -4,15 +4,17 @@
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print 'Updatable Records';
print "Updatable Records";
}
function getSlogan() {
return "";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a> : <a href="<?=$root?>/manual/JOOQ/UpdatableRecord/">Updatable Records</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/Result/">previous</a> : <a href="<?=$root?>/manual/JOOQ/Query/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a> : <a href="<?=$root?>/manual/JOOQ/UpdatableRecord/">Updatable Records</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/Result/" title="Results and Records">previous</a> : <a href="<?=$root?>/manual/JOOQ/Query/" title="Query and its subtypes">next</a></td>
</tr>
</table>
<?php

View File

@ -4,23 +4,23 @@
// Please do not edit this content manually
require '../../frame.php';
function printH1() {
print 'jOOQ classes and their use';
print "jOOQ classes and their usage";
}
function getSlogan() {
return "
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
";
}
function printSlogan() {}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a></td><td align="right"><a href="<?=$root?>/manual/">previous</a> : <a href="<?=$root?>/manual/JOOQ/ExampleDatabase/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/" title="The jOOQ User Manual">previous</a> : <a href="<?=$root?>/manual/JOOQ/ExampleDatabase/" title="The example database">next</a></td>
</tr>
</table>
<p>
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
</p>
<h2>Overview</h2>
<p>jOOQ essentially has two packages:</p>
<ul>
@ -31,14 +31,16 @@ function printContent() {
<li>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
</li>
them using the <a href="<?=$root?>/manual/JOOQ/Factory/">org.jooq.impl.Factory</a>
</li>
</ul>
<p>
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
<a href="<?=$root?>/manual/DSL/">DSL or fluent API</a>
in order to create queries
the way you're used to in SQL
</p>
<h3>Table of contents</h3><ol>
@ -46,7 +48,7 @@ function printContent() {
<a href="<?=$root?>/manual/JOOQ/ExampleDatabase/" title="The example database">The example database</a>
</li>
<li>
<a href="<?=$root?>/manual/JOOQ/Factory/" title="The factory class">The factory class</a>
<a href="<?=$root?>/manual/JOOQ/Factory/" title="The Factory class">The Factory class</a>
</li>
<li>
<a href="<?=$root?>/manual/JOOQ/Table/" title="Tables and Fields">Tables and Fields</a>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Configuration and setup";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model code generation</a> : <a href="<?=$root?>/manual/META/Configuration/">Configuration and setup</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/META/" title="Meta model code generation">previous</a> : <a href="<?=$root?>/manual/META/SCHEMA/" title="Schemata">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Procedures and packages";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model code generation</a> : <a href="<?=$root?>/manual/META/PROCEDURE/">Procedures and packages</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/META/TABLE/" title="Tables and views and their corresponding records">previous</a> : <a href="<?=$root?>/manual/META/UDT/" title="UDT's including ARRAY and ENUM types">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Schemata";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model code generation</a> : <a href="<?=$root?>/manual/META/SCHEMA/">Schemata</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/META/Configuration/" title="Configuration and setup">previous</a> : <a href="<?=$root?>/manual/META/TABLE/" title="Tables and views and their corresponding records">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Sequences";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model code generation</a> : <a href="<?=$root?>/manual/META/SEQUENCE/">Sequences</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/META/UDT/" title="UDT's including ARRAY and ENUM types">previous</a> : <a href="<?=$root?>/manual/DSL/" title="DSL or fluent API">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "Tables and views and their corresponding records";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model code generation</a> : <a href="<?=$root?>/manual/META/TABLE/">Tables and views and their corresponding records</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/META/SCHEMA/" title="Schemata">previous</a> : <a href="<?=$root?>/manual/META/PROCEDURE/" title="Procedures and packages">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -0,0 +1,23 @@
<?php
// The following content has been XSL transformed from manual.xml using html-pages.xsl
// Please do not edit this content manually
require '../../../frame.php';
function printH1() {
print "UDT's including ARRAY and ENUM types";
}
function getSlogan() {
return "";
}
function printContent() {
global $root;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model code generation</a> : <a href="<?=$root?>/manual/META/UDT/">UDT's including ARRAY and ENUM types</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/META/PROCEDURE/" title="Procedures and packages">previous</a> : <a href="<?=$root?>/manual/META/SEQUENCE/" title="Sequences">next</a></td>
</tr>
</table>
<?php
}
?>

View File

@ -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;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model source code generation</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/Extend/">previous</a> : <a href="<?=$root?>/manual/DSL/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a> : <a href="<?=$root?>/manual/META/">Meta model code generation</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/Extend/" title="Extend jOOQ types with custom implementations">previous</a> : <a href="<?=$root?>/manual/META/Configuration/" title="Configuration and setup">next</a></td>
</tr>
</table>
</table><h3>Table of contents</h3><ol>
<li>
<a href="<?=$root?>/manual/META/Configuration/" title="Configuration and setup">Configuration and setup</a>
</li>
<li>
<a href="<?=$root?>/manual/META/SCHEMA/" title="Schemata">Schemata</a>
</li>
<li>
<a href="<?=$root?>/manual/META/TABLE/" title="Tables and views and their corresponding records">Tables and views and their corresponding records</a>
</li>
<li>
<a href="<?=$root?>/manual/META/PROCEDURE/" title="Procedures and packages">Procedures and packages</a>
</li>
<li>
<a href="<?=$root?>/manual/META/UDT/" title="UDT's including ARRAY and ENUM types">UDT's including ARRAY and ENUM types</a>
</li>
<li>
<a href="<?=$root?>/manual/META/SEQUENCE/" title="Sequences">Sequences</a>
</li>
</ol>
<?php
}
?>

View File

@ -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;
?>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left"><a href="<?=$root?>/manual/">The jOOQ User Manual</a></td><td align="right"><a href="<?=$root?>/manual/JOOQ/">next</a></td>
<td align="left" valign="top"><a href="<?=$root?>/manual/">The jOOQ User Manual</a></td><td align="right" valign="top" style="white-space: nowrap"><a href="<?=$root?>/manual/JOOQ/" title="jOOQ classes and their usage">next</a></td>
</tr>
</table>
<p>
The manual is divided in these sections
<ul>
<h3>Single-paged manuals</h3>
<p>Coming soon in the manuals section of the jOOQ website:</p>
<ul>
<li>A single-paged HTML manual</li>
<li>A downloadable PDF manual</li>
</ul>
<h3>The multi-paged manual</h3>
<p>This manual is divided into four main sections:</p>
<ul>
<li>
<a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their use</a>
<a href="<?=$root?>/manual/JOOQ/">jOOQ classes and their usage</a>
<p>
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
</p>
</li>
<li>
<a href="<?=$root?>/manual/META/">Meta model source code generation</a>
<p>
See these chapters to understand how you can use jOOQ as a source code
generator, and what type of artefacts are generated by jOOQ
</p>
</li>
<li>
<a href="<?=$root?>/manual/DSL/">DSL support</a>
<p>
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
</p>
</li>
<li>
<a href="<?=$root?>/manual/Advanced/">Advanced topics</a>
<p>
Some advanced topics including not-everyday functionality
</p>
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
</p>
</li>
</ul>
<li>
<a href="<?=$root?>/manual/META/">Meta model code generation</a>
<p>
See these chapters to understand how you can use jOOQ as a source code
generator, and what type of artefacts are generated by jOOQ
</p>
</li>
<li>
<a href="<?=$root?>/manual/DSL/">DSL or fluent API</a>
<p>
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
</p>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/">Advanced topics</a>
<p>
Some advanced topics including not-everyday functionality
</p>
</li>
</p>
</ul>
<h3>Table of contents</h3><ol>
<li>
<a href="<?=$root?>/manual/JOOQ/" title="jOOQ classes and their use">jOOQ classes and their use</a>
<a href="<?=$root?>/manual/JOOQ/" title="jOOQ classes and their usage">jOOQ classes and their usage</a>
<ol>
<li>
<a href="<?=$root?>/manual/JOOQ/ExampleDatabase/" title="The example database">The example database</a>
</li>
<li>
<a href="<?=$root?>/manual/JOOQ/Factory/" title="The factory class">The factory class</a>
<a href="<?=$root?>/manual/JOOQ/Factory/" title="The Factory class">The Factory class</a>
</li>
<li>
<a href="<?=$root?>/manual/JOOQ/Table/" title="Tables and Fields">Tables and Fields</a>
@ -105,13 +116,94 @@ function printContent() {
</ol>
</li>
<li>
<a href="<?=$root?>/manual/META/" title="Meta model source code generation">Meta model source code generation</a>
<a href="<?=$root?>/manual/META/" title="Meta model code generation">Meta model code generation</a>
<ol>
<li>
<a href="<?=$root?>/manual/META/Configuration/" title="Configuration and setup">Configuration and setup</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/" title="DSL support">DSL support</a>
<a href="<?=$root?>/manual/META/SCHEMA/" title="Schemata">Schemata</a>
</li>
<li>
<a href="<?=$root?>/manual/Advanced/" title="Advanced topics">Advanced topics</a>
<a href="<?=$root?>/manual/META/TABLE/" title="Tables and views and their corresponding records">Tables and views and their corresponding records</a>
</li>
<li>
<a href="<?=$root?>/manual/META/PROCEDURE/" title="Procedures and packages">Procedures and packages</a>
</li>
<li>
<a href="<?=$root?>/manual/META/UDT/" title="UDT's including ARRAY and ENUM types">UDT's including ARRAY and ENUM types</a>
</li>
<li>
<a href="<?=$root?>/manual/META/SEQUENCE/" title="Sequences">Sequences</a>
</li>
</ol>
</li>
<li>
<a href="<?=$root?>/manual/DSL/" title="DSL or fluent API">DSL or fluent API</a>
<ol>
<li>
<a href="<?=$root?>/manual/DSL/SELECT/" title="Complete SELECT syntax">Complete SELECT syntax</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/CONDITION/" title="Conditions">Conditions</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/ALIAS/" title="Aliased tables and fields">Aliased tables and fields</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/IN/" title="Nested select statements using the IN operator">Nested select statements using the IN operator</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/EXISTS/" title="Nested select statements using the EXISTS operator">Nested select statements using the EXISTS operator</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/NESTED/" title="Other types of nested selects">Other types of nested selects</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/UNION/" title="UNION and other set operations">UNION and other set operations</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/FUNCTIONS/" title="Functions, aggregate operators, and window functions">Functions, aggregate operators, and window functions</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/PROCEDURES/" title="Stored procedures and functions">Stored procedures and functions</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/ARITHMETIC/" title="Arithmetic operations">Arithmetic operations</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/CASE/" title="The CASE clause">The CASE clause</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/CAST/" title="Type casting">Type casting</a>
</li>
<li>
<a href="<?=$root?>/manual/DSL/SQL/" title="When it's just much easier: Plain SQL">When it's just much easier: Plain SQL</a>
</li>
</ol>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/" title="Advanced topics">Advanced topics</a>
<ol>
<li>
<a href="<?=$root?>/manual/ADVANCED/MasterData/" title="Master data generation">Master data generation</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/SchemaMapping/" title="Mapping generated schemata and tables to productive environments">Mapping generated schemata and tables to productive environments</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/OracleHints/" title="Adding Oracle hints to queries">Adding Oracle hints to queries</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/CONNECTBY/" title="The Oracle CONNECT BY clause for hierarchical queries">The Oracle CONNECT BY clause for hierarchical queries</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/Export/" title="Exporting data to XML, CSV, JSON, HTML, Text">Exporting data to XML, CSV, JSON, HTML, Text</a>
</li>
<li>
<a href="<?=$root?>/manual/ADVANCED/Import/" title="Importing data from XML, CSV">Importing data from XML, CSV</a>
</li>
</ol>
</li>
</ol>
<?php

View File

@ -3,7 +3,7 @@ require 'frame.php';
function printH1() {
print 'The history of jOOQ';
}
function printSlogan() {}
function getSlogan() {}
function printContent() {
$contents = file('inc/RELEASENOTES.txt');

View File

@ -7,6 +7,8 @@
<xsl:param name="sectionID"/>
<xsl:param name="relativePath"/>
<xsl:variable name="apos">&apos;</xsl:variable>
<!-- Main match -->
<xsl:template match="/">
@ -18,11 +20,15 @@ require '</xsl:text>
<xsl:value-of select="$relativePath"/>
<xsl:text disable-output-escaping="yes">frame.php';
function printH1() {
print '</xsl:text>
<xsl:apply-templates select="//section[@id = $sectionID]" mode="title"/>
<xsl:text disable-output-escaping="yes">';
print "</xsl:text>
<xsl:value-of select="//section[@id = $sectionID]/title"/>
<xsl:text disable-output-escaping="yes">";
}
function getSlogan() {
return "</xsl:text>
<xsl:value-of select="//section[@id = $sectionID]/slogan"/>
<xsl:text disable-output-escaping="yes">";
}
function printSlogan() {}
function printContent() {
global $root;
?&gt;
@ -37,17 +43,13 @@ function printContent() {
<!-- matching templates -->
<xsl:template match="//section[@id = $sectionID]" mode="title">
<xsl:value-of select="title"/>
</xsl:template>
<xsl:template match="//section[@id = $sectionID]" mode="content">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td align="left">
<td align="left" valign="top">
<xsl:apply-templates select="." mode="breadcrumb"/>
</td>
<td align="right">
<td align="right" valign="top" style="white-space: nowrap">
<xsl:apply-templates select="." mode="prev-next"/>
</td>
</tr>
@ -103,7 +105,7 @@ function printContent() {
</xsl:variable>
<xsl:if test="$prev">
<a href="{$prevhref}">previous</a>
<a href="{$prevhref}" title="{$prev/title}">previous</a>
</xsl:if>
<xsl:if test="$prev and $next">
@ -111,7 +113,7 @@ function printContent() {
</xsl:if>
<xsl:if test="$next">
<a href="{$nexthref}">next</a>
<a href="{$nexthref}" title="{$next/title}">next</a>
</xsl:if>
</xsl:template>
@ -182,9 +184,49 @@ function printContent() {
<a>
<xsl:attribute name="href">
<xsl:apply-templates select="//section[@id = $id]" mode="href"/>
<xsl:choose>
<xsl:when test="@id">
<xsl:apply-templates select="//section[@id = $id]" mode="href"/>
<xsl:if test="not(//section[@id = $id])">
<xsl:message>
<xsl:text>Reference not found: </xsl:text>
<xsl:value-of select="$id"/>
</xsl:message>
</xsl:if>
</xsl:when>
<xsl:when test="@class and starts-with(@class, 'org.jooq')">
<xsl:text>https://github.com/lukaseder/jOOQ/blob/master/jOOQ/src/main/java/</xsl:text>
<xsl:value-of select="translate(@class, '.', '/')"/>
<xsl:text>.java</xsl:text>
</xsl:when>
<xsl:when test="@class and starts-with(@class, 'java')">
<xsl:text>http://download.oracle.com/javase/6/docs/api/</xsl:text>
<xsl:value-of select="translate(@class, '.', '/')"/>
<xsl:text>.html</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:message>
<xsl:text>Reference not supported</xsl:text>
</xsl:message>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:value-of select="//section[@id = $id]/title"/>
<xsl:choose>
<xsl:when test="@title">
<xsl:value-of select="@title"/>
</xsl:when>
<xsl:when test="@id">
<xsl:value-of select="//section[@id = $id]/title"/>
</xsl:when>
<xsl:when test="@class">
<xsl:value-of select="@class"/>
</xsl:when>
</xsl:choose>
</a>
</xsl:when>
<xsl:otherwise>

View File

@ -2,53 +2,60 @@
<manual>
<section id="manual">
<title>The jOOQ User Manual</title>
<slogan>
Learn about jOOQ using its single or multi-paged manuals
</slogan>
<content>
<p>
The manual is divided in these sections
<ul>
<li>
<reference id="JOOQ"/>
<p>
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
</p>
</li>
<li>
<reference id="META"/>
<p>
See these chapters to understand how you can use jOOQ as a source code
generator, and what type of artefacts are generated by jOOQ
</p>
</li>
<li>
<reference id="DSL"/>
<p>
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
</p>
</li>
<li>
<reference id="Advanced"/>
<p>
Some advanced topics including not-everyday functionality
</p>
</li>
</ul>
</p>
<h3>Single-paged manuals</h3>
<p>Coming soon in the manuals section of the jOOQ website:</p>
<ul>
<li>A single-paged HTML manual</li>
<li>A downloadable PDF manual</li>
</ul>
<h3>The multi-paged manual</h3>
<p>This manual is divided into four main sections:</p>
<ul>
<li>
<reference id="JOOQ"/>
<p>
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
</p>
</li>
<li>
<reference id="META"/>
<p>
See these chapters to understand how you can use jOOQ as a source code
generator, and what type of artefacts are generated by jOOQ
</p>
</li>
<li>
<reference id="DSL"/>
<p>
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
</p>
</li>
<li>
<reference id="ADVANCED"/>
<p>
Some advanced topics including not-everyday functionality
</p>
</li>
</ul>
</content>
<sections>
<section id="JOOQ">
<title>jOOQ classes and their usage</title>
<slogan>
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
</slogan>
<content>
<p>
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
</p>
<h2>Overview</h2>
<p>jOOQ essentially has two packages:</p>
<ul>
@ -57,25 +64,27 @@
</li>
<li>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 <reference id="Factory" title="org.jooq.impl.Factory"/>
</li>
</ul>
<p>
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
<reference id="DSL" />
in order to create queries
the way you're used to in SQL
</p>
</content>
<sections>
<section id="ExampleDatabase">
<title>The example database</title>
<slogan>
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
</slogan>
<content>
<p>
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):
</p>
<h2>Example CREATE TABLE statements</h2>
<pre class="prettyprint lang-sql">
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
)
</pre>
<p>More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc),
<p>
More entities, types (e.g. UDT's, ARRAY types, ENUM types, etc),
stored procedures and packages are introduced for specific examples
</p>
</content>
</section>
<section id="Factory">
<title>The factory class</title>
<title>The Factory class</title>
<slogan>
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.
</slogan>
<content>
<h2>The Factory and the jOOQ API</h2>
<p>
jOOQ exposes a lot of interfaces and hides most implementation facts
from client code. The reasons for this are:
</p>
<ul>
<li>Interface-driven design. This allows for modelling queries in a fluent API most efficiently</li>
<li>Reduction of complexity for client code.</li>
<li>API guarantee. You only depend on the exposed interfaces, not concrete (potentially dialect-specific) implementations.</li>
</ul>
<p>
The <reference class="org.jooq.impl.Factory"/>
class is the main class from where you will create all jOOQ objects.
The Factory implements <reference class="org.jooq.Configuration"/>
and needs to be instanciated with the Configuration's properties:
</p>
<ul>
<li><reference class="org.jooq.SQLDialect"/> :
The dialect of your database. This may be any of the currently
supported database types</li>
<li><reference class="java.sql.Connection"/> :
A JDBC Connection that will be re-used for the whole
lifecycle of your Factory</li>
<li><reference class="org.jooq.SchemaMapping"/> :
An optional mapping of schemata. Check out the
<reference id="SchemaMapping" title="SchemaMapping"/>
page for details</li>
</ul>
<p>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. </p>
<h3>Factory subclasses</h3>
<p>
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:
</p>
<pre class="prettyprint lang-java">
// A general, dialect-unspecific factory
Factory create = new Factory(connection, SQLDialect.MYSQL);
// A MySQL-specific factory
MySQLFactory create = new MySQLFactory(connection);
</pre>
<p>
The advantage of using a dialect-specific Factory lies in the fact,
that you have access to more proprietary RDMBS functionality. This may
include:
</p>
<ul>
<li>Oracle's <reference id="CONNECTBY" title="CONNECT BY"/>
pseudo columns and functions</li>
<li>MySQL's encryption functions</li>
<li>PL/SQL constructs, pgplsql, or any other dialect's ROUTINE-language (maybe in the future)</li>
</ul>
<p>
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.
</p>
<h3>Potential problems</h3>
<p>
The jOOQ Factory expects its underlying
<reference class="java.sql.Connection" />
to be <strong>open and ready</strong>
for
<reference class="java.sql.PreparedStatement" />
creation. You are responsible yourself for the
lifecycle dependency between Factory and Connection. This means:
</p>
<ul>
<li>jOOQ will never close the Connection.</li>
<li>jOOQ will never commit or rollback on the Connection
(Except for CSV-imports, if explicitly configured in the <reference id="Import" title="Import API"/>)</li>
<li>jOOQ will never start any transactions.</li>
<li>
jOOQ does not know the concept of a session as for instance
<a href="http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/architecture.html#architecture-current-session">Hibernate</a>
</li>
<li>jOOQ does not know the concept of a second-level cache. SQL is
executed directly on the underlying RDBMS.</li>
<li>jOOQ does not make assumptions about the origin of the Connection.
If it is container managed, that is fine.</li>
</ul>
<p>
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.
</p>
<p>
Please keep in mind that many jOOQ objects will reference your Factory
for their whole lifecycle. This is especially interesting, when dealing
with <reference id="UpdatableRecord" title="Updatable Records"/>,
that can perform CRUD operations on the
Factory's underlying Connection.
</p>
</content>
</section>
<section id="Table">
<title>Tables and Fields</title>
@ -155,7 +276,7 @@ CREATE TABLE t_book_to_book_store (
</sections>
</section>
<section id="META">
<title>Meta model source code generation</title>
<title>Meta model code generation</title>
<sections>
<section id="Configuration">
<title>Configuration and setup</title>
@ -178,7 +299,7 @@ CREATE TABLE t_book_to_book_store (
</sections>
</section>
<section id="DSL">
<title>DSL support</title>
<title>DSL or fluent API</title>
<sections>
<section id="SELECT">
<title>Complete SELECT syntax</title>