diff --git a/jOOQ-website/manual/ADVANCED/CONNECTBY/index.php b/jOOQ-website/manual/ADVANCED/CONNECTBY/index.php index 68af36d092..274265e102 100644 --- a/jOOQ-website/manual/ADVANCED/CONNECTBY/index.php +++ b/jOOQ-website/manual/ADVANCED/CONNECTBY/index.php @@ -14,7 +14,7 @@ function printContent() { ?>
| The jOOQ User Manual : Advanced topics : Importing data from XML, CSV | previous | +The jOOQ User Manual : Advanced topics : Importing data from XML, CSV | previous |
| The jOOQ User Manual : Advanced topics : Master data generation | previous : next | +The jOOQ User Manual : Advanced topics : Master data generation | previous : next |
| The jOOQ User Manual : Advanced topics : Adding Oracle hints to queries | previous : next | +The jOOQ User Manual : Advanced topics : Adding Oracle hints to queries | previous : next |
| The jOOQ User Manual : DSL or fluent API : Aliased tables and fields | previous : next | +The jOOQ User Manual : DSL or fluent API : Aliased tables and fields | previous : next |
| The jOOQ User Manual : DSL or fluent API : Arithmetic operations | previous : next | +The jOOQ User Manual : DSL or fluent API : Arithmetic operations | previous : next |
| The jOOQ User Manual : DSL or fluent API : The CASE clause | previous : next | +The jOOQ User Manual : DSL or fluent API : The CASE clause | previous : next |
| The jOOQ User Manual : DSL or fluent API : Type casting | previous : next | +The jOOQ User Manual : DSL or fluent API : Type casting | previous : next |
| The jOOQ User Manual : DSL or fluent API : Conditions | previous : next | +The jOOQ User Manual : DSL or fluent API : Conditions | previous : next |
| The jOOQ User Manual : DSL or fluent API : Other types of nested selects | previous : next | +The jOOQ User Manual : DSL or fluent API : Other types of nested selects | previous : next |
| The jOOQ User Manual : DSL or fluent API : Stored procedures and functions | previous : next | +The jOOQ User Manual : DSL or fluent API : Stored procedures and functions | previous : next |
| The jOOQ User Manual : DSL or fluent API : Complete SELECT syntax | previous : next | +The jOOQ User Manual : DSL or fluent API : Complete SELECT syntax | previous : next |
| The jOOQ User Manual : DSL or fluent API : When it's just much easier: Plain SQL | previous : next | +The jOOQ User Manual : DSL or fluent API : When it's just much easier: Plain SQL | previous : next |
| The jOOQ User Manual : DSL or fluent API : UNION and other set operations | previous : next | +The jOOQ User Manual : DSL or fluent API : UNION and other set operations | previous : next |
| The jOOQ User Manual : DSL or fluent API | previous : next | +The jOOQ User Manual : DSL or fluent API | previous : next |
| The jOOQ User Manual : jOOQ classes and their usage : The example database | previous : next | +The jOOQ User Manual : jOOQ classes and their usage : The example database | previous : next |
| The jOOQ User Manual : jOOQ classes and their usage : The Factory class | previous : next | +The jOOQ User Manual : jOOQ classes and their usage : The Factory class | previous : next |
- The org.jooq.impl.Factory + The org.jooq.impl.Factory class is the main class from where you will create all jOOQ objects. - The Factory implements org.jooq.Configuration + The Factory implements org.jooq.Configuration and needs to be instanciated with the Configuration's properties:
The jOOQ Factory expects its underlying - java.sql.Connection + java.sql.Connection to be open and ready for - java.sql.PreparedStatement + java.sql.PreparedStatement creation. You are responsible yourself for the lifecycle dependency between Factory and Connection. This means:
@@ -116,7 +116,7 @@ MySQLFactory create = new MySQLFactory(connection);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, + 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 06f6cf66f2..33a026b1b4 100644 --- a/jOOQ-website/manual/JOOQ/Query/index.php +++ b/jOOQ-website/manual/JOOQ/Query/index.php @@ -14,7 +14,7 @@ function printContent() { ?>| The jOOQ User Manual : jOOQ classes and their usage : Query and its subtypes | previous : next | +The jOOQ User Manual : jOOQ classes and their usage : Query and its subtypes | previous : next |
| The jOOQ User Manual : jOOQ classes and their usage : Results and Records | previous : next | +The jOOQ User Manual : jOOQ classes and their usage : Results and Records | previous : next |
| The jOOQ User Manual : jOOQ classes and their usage : Tables and Fields | previous : next | +The jOOQ User Manual : jOOQ classes and their usage : Tables and Fields | previous : next |
The formal definition of a org.jooq.Table starts with
+public interface Table<R extends Record> // [...]+
+ This means that every table is associated with a subtype of the + org.jooq.Record + class (see also + Results and Records + ). For anonymous or ad-hoc tables, + <R> will always bind to Record itself. +
++ Unlike in the + JPA CriteriaQuery API, + this generic type + <R> + is not given so much importance as far as + type-safety is concerned. + SQL itself is inherently type-unsafe. But then + again, you have + incredible flexibility of creating anonymous or ad-hoc + types and + reusing them from + NESTED SELECT statements + or from many other + use-cases. If + <R> would play a role as important + as in JPA, jOOQ + would suffer from + the same verbosity, or inflexibility + that JPA + CriteriaQueries may + have. +
+ +The formal definition of a Field starts with
+public interface Field<T> // [...]+
+ Fields are generically parameterised with a Java type + <T> + that reflects the closest match to the RDMBS's underlying datatype for that + field. For instance, if you have a VARCHAR2 type Field in Oracle, + <T> + would bind to + java.lang.String + for that Field in jOOQ. Oracle's NUMBER(7) would + let + <T> + bind to + java.lang.Integer, + etc. This generic type is useful for two purposes: +
+The Field itself is a very broad concept. Other tools, or databases + refer to it as expression or column. When you just want to
+ +SELECT 1 FROM DUAL+
+ Then 1 is considered a Field or more explicitly, a + org.jooq.impl.Constant, + which implements Field, and DUAL is considered a Table or more explicitly + org.jooq.impl.Dual, which implements Table +
++ More advanced uses become clear quickly, when you do things like +
+SELECT 1 + 1 FROM DUAL+
+ Where 1 + 1 itself is a Field or more explicitly, an + org.jooq.impl.Expression + joining two Constants together. +
++ See some details about how to create these queries in the + Query section of the manual +
+ ++ A specific type of field is the + org.jooq.TableField, + which represents a physical + Field in a physical Table. Both the + TableField and its referenced Table + know each other. The physical aspect + of their nature is represented in + jOOQ by + meta model code generation, + where every entity in your database + schema will be generated into a + corresponding Java class. +
++ TableFields join both <R> and <T> generic parameters into their specification: +
+public interface TableField<R extends Record, T> // [...]+
+ This can be used for additional type safety in the future, or by client code. +
+ - diff --git a/jOOQ-website/manual/JOOQ/UpdatableRecord/index.php b/jOOQ-website/manual/JOOQ/UpdatableRecord/index.php index 36548fb5b3..bd207b97fa 100644 --- a/jOOQ-website/manual/JOOQ/UpdatableRecord/index.php +++ b/jOOQ-website/manual/JOOQ/UpdatableRecord/index.php @@ -14,7 +14,7 @@ function printContent() { ?>| The jOOQ User Manual : jOOQ classes and their usage : Updatable Records | previous : next | +The jOOQ User Manual : jOOQ classes and their usage : Updatable Records | previous : next |
| The jOOQ User Manual : jOOQ classes and their usage | previous : next | +The jOOQ User Manual : jOOQ classes and their usage | previous : next |
This section is about the main jOOQ classes and the global architecture. Most of the time, however, you will be using the - DSL or fluent API + DSL or fluent API in order to create queries the way you're used to in SQL
diff --git a/jOOQ-website/manual/META/Configuration/index.php b/jOOQ-website/manual/META/Configuration/index.php index c93a92fdd8..85557f067c 100644 --- a/jOOQ-website/manual/META/Configuration/index.php +++ b/jOOQ-website/manual/META/Configuration/index.php @@ -14,7 +14,7 @@ function printContent() { ?>| The jOOQ User Manual : Meta model code generation : Configuration and setup | previous : next | +The jOOQ User Manual : Meta model code generation : Configuration and setup | previous : next |
| The jOOQ User Manual : Meta model code generation : Procedures and packages | previous : next | +The jOOQ User Manual : Meta model code generation : Procedures and packages | previous : next |
| The jOOQ User Manual : Meta model code generation : Schemata | previous : next | +The jOOQ User Manual : Meta model code generation : Schemata | previous : next |
| The jOOQ User Manual : Meta model code generation : Sequences | previous : next | +The jOOQ User Manual : Meta model code generation : Sequences | previous : next |
| The jOOQ User Manual : Meta model code generation | previous : next | +The jOOQ User Manual : Meta model code generation | previous : next |
| The jOOQ User Manual | next | +The jOOQ User Manual | next |
See these chapters for an overview of the jOOQ internal architecture @@ -47,7 +47,7 @@ function printContent() {
See these chapters to understand how you can use jOOQ as a source code @@ -58,7 +58,7 @@ function printContent() {
See these chapters to learn about how to use jOOQ in every day's work. The @@ -70,7 +70,7 @@ function printContent() {
Some advanced topics including not-everyday functionality
diff --git a/jOOQ-website/src/main/resources/html-pages.xsl b/jOOQ-website/src/main/resources/html-pages.xsl
index c24e8ea236..6d4fd97421 100644
--- a/jOOQ-website/src/main/resources/html-pages.xsl
+++ b/jOOQ-website/src/main/resources/html-pages.xsl
@@ -105,7 +105,7 @@ function printContent() {
The formal definition of a
public interface Table<R extends Record> // [...]+
+ This means that every table is associated with a subtype of the
+
+ Unlike in the
+ JPA CriteriaQuery API,
+ this generic type
+ <R>
+ is not given so much importance as far as
+ type-safety is concerned.
+ SQL itself is inherently type-unsafe. But then
+ again, you have
+ incredible flexibility of creating anonymous or ad-hoc
+ types and
+ reusing them from
+
The formal definition of a Field starts with
+public interface Field<T> // [...]+
+ Fields are generically parameterised with a Java type
+ <T>
+ that reflects the closest match to the RDMBS's underlying datatype for that
+ field. For instance, if you have a VARCHAR2 type Field in Oracle,
+ <T>
+ would bind to
+
The Field itself is a very broad concept. Other tools, or databases + refer to it as expression or column. When you just want to
+ +SELECT 1 FROM DUAL+
+ Then 1 is considered a Field or more explicitly, a
+
+ More advanced uses become clear quickly, when you do things like +
+SELECT 1 + 1 FROM DUAL+
+ Where 1 + 1 itself is a Field or more explicitly, an
+
+ See some details about how to create these queries in the
+
+ A specific type of field is the
+
+ TableFields join both <R> and <T> generic parameters into their specification: +
+public interface TableField<R extends Record, T> // [...]+
+ This can be used for additional type safety in the future, or by client code. +
+