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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+Table of contents
+-
+Master data generation
+
+-
+Mapping generated schemata and tables to productive environments
+
+-
+Adding Oracle hints to queries
+
+-
+The Oracle CONNECT BY clause for hierarchical queries
+
+-
+Exporting data to XML, CSV, JSON, HTML, Text
+
+-
+Importing data from XML, CSV
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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;
?>
+Table of contents
+-
+Complete SELECT syntax
+
+-
+Conditions
+
+-
+Aliased tables and fields
+
+-
+Nested select statements using the IN operator
+
+-
+Nested select statements using the EXISTS operator
+
+-
+Other types of nested selects
+
+-
+UNION and other set operations
+
+-
+Functions, aggregate operators, and window functions
+
+-
+Stored procedures and functions
+
+-
+Arithmetic operations
+
+-
+The CASE clause
+
+-
+Type casting
+
+-
+When it's just much easier: Plain SQL
+
+
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;
?>
-
- 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 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 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:
+
+
+
+- Oracle's CONNECT BY
+ 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
+ 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:
+
+
+
+- jOOQ will never close the Connection.
+
+- jOOQ will never commit or rollback on the Connection
+ (Except for CSV-imports, if explicitly configured in the Import API)
+
+- 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 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;
?>
-
- 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:
@@ -31,14 +31,16 @@ function printContent() {
- 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 org.jooq.impl.Factory
+
+
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
-
-The factory class
+The Factory class
-
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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 @@
+
+
+
+
+
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;
?>
+
Table of contents
+-
+Configuration and setup
+
+-
+Schemata
+
+-
+Tables and views and their corresponding records
+
+-
+Procedures and packages
+
+-
+UDT's including ARRAY and ENUM types
+
+-
+Sequences
+
+
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 manual is divided in these sections
-
-
+ 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:
+
+
-
-
-jOOQ classes and their use
-
+
+jOOQ classes and their usage
+
- 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
-
-
-
-
--
-
-Meta model source code generation
-
-
- See these chapters to understand how you can use jOOQ as a source code
- generator, and what type of artefacts are generated by jOOQ
-
-
-
-
--
-
-DSL support
-
-
- 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
-
-
-
-
--
-
-Advanced topics
-
-
- Some advanced topics including not-everyday functionality
-
-
+ 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
+
+
-
+-
+
+Meta model code generation
+
+
+ See these chapters to understand how you can use jOOQ as a source code
+ generator, and what type of artefacts are generated by jOOQ
+
+
+
+
+-
+
+DSL or fluent API
+
+
+ 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
+
+
+
+
+-
+
+Advanced topics
+
+
+ Some advanced topics including not-everyday functionality
+
+
+
-
+
Table of contents
-
-jOOQ classes and their use
+jOOQ classes and their usage
-
The example database
-
-The factory class
+The Factory class
-
Tables and Fields
@@ -105,13 +116,94 @@ function printContent() {
-
-Meta model source code generation
+Meta model code generation
+
+-
+Configuration and setup
-
-DSL support
+Schemata
-
-Advanced topics
+Tables and views and their corresponding records
+
+-
+Procedures and packages
+
+-
+UDT's including ARRAY and ENUM types
+
+-
+Sequences
+
+
+
+-
+DSL or fluent API
+
+-
+Complete SELECT syntax
+
+-
+Conditions
+
+-
+Aliased tables and fields
+
+-
+Nested select statements using the IN operator
+
+-
+Nested select statements using the EXISTS operator
+
+-
+Other types of nested selects
+
+-
+UNION and other set operations
+
+-
+Functions, aggregate operators, and window functions
+
+-
+Stored procedures and functions
+
+-
+Arithmetic operations
+
+-
+The CASE clause
+
+-
+Type casting
+
+-
+When it's just much easier: Plain SQL
+
+
+
+-
+Advanced topics
+
+-
+Master data generation
+
+-
+Mapping generated schemata and tables to productive environments
+
+-
+Adding Oracle hints to queries
+
+-
+The Oracle CONNECT BY clause for hierarchical queries
+
+-
+Exporting data to XML, CSV, JSON, HTML, Text
+
+-
+Importing data from XML, CSV
+
+
+ '
+
@@ -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 (
- DSL support
+ DSL or fluent API