db derby 10.2

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Database DBMS » db derby 10.2 
derby database
License:Apache License
URL:http://db.apache.org/derby/
Description:100% Java SQL Database Engine
Package NameComment
org.apache.derby.authentication
org.apache.derby.catalog
org.apache.derby.catalog.types
org.apache.derby.client
org.apache.derby.client.am
org.apache.derby.client.net
org.apache.derby.database
org.apache.derby.diag
org.apache.derby.drda
org.apache.derby.iapi.db
org.apache.derby.iapi.error
org.apache.derby.iapi.jdbc
org.apache.derby.iapi.reference
org.apache.derby.iapi.services.cache
org.apache.derby.iapi.services.classfile
org.apache.derby.iapi.services.compiler
org.apache.derby.iapi.services.context
org.apache.derby.iapi.services.crypto
org.apache.derby.iapi.services.daemon
org.apache.derby.iapi.services.diag
org.apache.derby.iapi.services.i18n
org.apache.derby.iapi.services.info
org.apache.derby.iapi.services.io
org.apache.derby.iapi.services.loader
org.apache.derby.iapi.services.locks
org.apache.derby.iapi.services.memory
org.apache.derby.iapi.services.monitor
org.apache.derby.iapi.services.property
org.apache.derby.iapi.services.sanity
org.apache.derby.iapi.services.stream
org.apache.derby.iapi.services.timer
org.apache.derby.iapi.services.uuid
org.apache.derby.iapi.sql
org.apache.derby.iapi.sql.compile
org.apache.derby.iapi.sql.conn
org.apache.derby.iapi.sql.depend
org.apache.derby.iapi.sql.dictionary
org.apache.derby.iapi.sql.execute
org.apache.derby.iapi.store.access
org.apache.derby.iapi.store.access.conglomerate
org.apache.derby.iapi.store.access.xa
org.apache.derby.iapi.store.raw
org.apache.derby.iapi.store.raw.data
org.apache.derby.iapi.store.raw.log
org.apache.derby.iapi.store.raw.xact
org.apache.derby.iapi.tools
org.apache.derby.iapi.tools.i18n
org.apache.derby.iapi.types Derby Type System

Derby Type System

The Derby type system is mainly contained in the org.apache.derby.iapi.types package. The main two classes are DataValueDescriptor and DataTypeDescriptor.

DataValueDescriptor

Values in Derby are always represented by instances of org.apache.derby.iapi.types.DataValueDescriptor, which might have been better named DataValue. DataValueDescriptor, or DVD for short, is mainly used to represent SQL data values, though it is used for other internal types.  DataValueDescriptor is a Java  interface and in general all values are manipulated through interfaces and not the Java class implementations such as SQLInteger. DVDs are mutable (their value can change) and can represent NULL or a valid value. Note that SQL NULL is represented by a DataValueDescriptor with a state of NULL, not a null Java reference to a DataValueDescriptor.

Generally the Derby engine works upon an array of DVD's that represent a row, which can correspond to a row in a table, a row in a ResultSet to be returned to the application or an intermediate row in a query. The DVD's within this array are re-used for each row processed, this is why they are mutable. For example in  reading rows from the store a single DVD is used to read a column's value for all the rows processed. This is to benefit performance, thus in a table scan of one million rows Derby does not create one million objects, which would be the case if the type system was immutable, like the Java object wrappers java.lang.Integer etc.

The methods in DataValueDescriptor can be broken into these groups
  • getXXX methods to help implement java.sql.ResultSet.getXXX methods. Thus a ResultSet.getInt() corresponds to the DataValueDescriptor.getInt() method.
  • setValue methods to help implement java.sql.PreparedStatement.setXXX methods. Thus a PreparedStatement.setInt() corresponds to the DataValueDescriptor.setValue(int) method. These methods perform overflow and other range checks, e.g. setting a long into a SQLInteger checks to see that the value is within the range of an int, if not an exception is thrown.
    These methods are also used to implement casts and other data type conversion, thus ensuring consistent type conversions for Derby within SQL and JDBC.
  • Methods to support SQL operators, e.g. isNull.
  • Methods to read and write to disk, or strictly to convert the value into a byte representation, e.g.writeExternal.

Type Specific Interfaces

To support operators specific to a type, or set of types, Java interfaces that extend DataValueDescriptor exist:
  • NumberDataValue - Methods for operators on numeric types, such as INTEGER, DECIMAL, REAL, e.g. plus for the SQL + operator.
  • StringDataValue - Methods for operators on character types, such as CHAR, VARCHAR.
  • BitDataValue - Methods for operators on binary types, such as CHAR FOR BIT DATA, BLOB.
  • DateTimeDataValue - Methods for operators on character types, such as CHAR, VARCHAR.
  • BooleanDataValue - Methods for operators on BOOLEAN type.

Language Compilation

Much of the generate code for language involves the type system. E.g. SQL operators are converted to method calls on interfaces within the type system, such as DataValueDesciptor or NumberDataValue. Thus all this generated code makes method calls through interface method calls. The language has a policy/style of generating fields with holder objects for the result of any operation. This holder DataValueDescriptor is then re-used for all the operations within that query execution, thus saving object creation when the operation is called on multiple rows. The generated code does not create the initial value for the field, instead the operator method or DataValueFactory methods create instance the first time that the result is passed in as null. The approximate Java code for this would be (note the generator generates to byte code directly).

   // instance field to hold the result of the minus
   private NumberDataValue f7;

       ...

    // code within a generated method
   f7 = value.minus(f7);

Interaction with Store

The store knows little about how values represent themselves in bytes, all that knowledge is contained within the DVD implementation.
The exception is SQL NULL handling, the store handles NULL values consistently, as a null bit in the status byte for a field. Thus readExternal and writeExternal are never called for a DataValueDescriptor that is NULL.

Delayed Object Creation

When a value reads itself from its byte representation it is required that the least amount of work is performed to obtain a useful representation of a value. This is because the value being read from disk may never be returned to the application, or returned but never used by the application. The first case can occur when a qualification in the SQL statement is executed at the language layer and not pushed down to the store, thus the row is fetched from the store but filtered out at the language layer. Taking SQLDecimal as an example, the byte format is a representation of  a java.math.BigInteger instance along with a scale. Taking the simple approach that SQLDecimal would always use a java.math.BigDecimal, then this is the steps that would occur when reading a DECIMAL column:
  1. Read BigInteger format into byte array, read scale
  2. New BigInteger instance from byte array - 2 object creations and byte array copy
  3. New BigDecimal instance from BigInteger and scale - 1 object creation
Now think about a million row table scan with a DECIMAL column that returns 1% of the rows to the application, filtering at the language layer.

This simple SQLDecimal implementation will create 3 million objects and do 1 million byte array copies.

The smart (and current) implementation of SQLDecimal will delay steps 2 and 3 until there is an actual need for a BigDecimal object, e.g when the application calls ResultSet.getBigDecimal. So assuming the application calls getBigDecimal for every row it receives, then, since only 1% of the rows are returned, 30,000 objects are created and 10,000 byte copies are made, thus saving 2,970,000 object creations and 990,000 byte array copies and the garbage collection overhead of those short lived objects.

This delayed object creation increases the complexity of the DataValueDescriptor implementation, but the performance benefit is well worth it. The complexity comes from the implementation maintaining dual state, in SQLDecimal case the value is represented by either the raw value, or by a BigDecimal object. Care is taken in the implementation to always access the value through methods, and not the fields directly. String based values such as SQLChar also perform this delayed object creation to String, as creating a String object requires two object creations and a char array copy. In the case of SQLChar though, the raw value is maintained as a char array and not a byte array, this is because the char[] can be used as-is as the value, e.g. in string comparisons.

DataValueFactory

Specific instances of DataValueDescriptor are mostly created through the DataValueFactory interface. This hides the implementation of types from the JDBC, language and store layers. This interface includes methods to:
  • generate new NULL values for specific SQL types.
  • generate specific types from Java primitves or Java objects (such as String). The returned type corresponds to the JDBC mapping for the Java type, e.g. SQLInteger for int. Where the Java type can map to multiple SQL types there are specific methods such as getChar, getVarchar.

DataTypeDescriptor

The SQL type of a column, value or expression is represented by an instance of org.apache.derby.iapi.types.DataTypeDescriptor. DataTypeDescriptor contains three key pieces of information:
  1. The fundamental SQL type, e.g. INTEGER, DECIMAL, represented by a org.apache.derby.iapi.types.TypeId.
  2. Any length, precision or scale attributes, e.g. length for CHAR, precision & scale for DECIMAL.
  3. Is the type nullable
Note that a DataValueDescriptor is not tied to any DataTypeDescriptor, thus setting a value into a DataValueDescriptor that does not conform to the intended DataTypeDescriptor is allowed. The value is checked in an explict normalization phase. As an example, an application can use setBigDecimal() to set 199.0 to a parameter that is marked as being DECIMAL(4,2). Only on the execute phase will the out of range exception be raised.

Issues

Interfaces or Classes

Matching the interface type hierachy is a implementation (class) hierachy complete with abstract types, for example DataType (again badly named) is the abstract root for all implementations of DataValueDescriptor, and NumberDataType for NumberDataValue. Code would be smaller and faster if the interfaces were removed and the official api became the public methods of these abstract classes. The work involved here is fixing the code generation involving types, regular java code would be compiled correctly with any change, but the generated code needs to be change by hand, to change interface calls to method calls. Any change like this should probably rename the abstract classes to short descriptive names, liker DataValue and NumberValue.

DataValueFactory

There is demonstrated need to hide the implementation of DECIMAL as J2ME, J2SE and J2SE5 require different versions, thus a type implementation factory is required. However it seems to be too generic to have the ability to support different implementations of INTEGER, BIGINT and some other fundemental types. Thus maybe the code could be simplified to allow use of SQLInteger, SQLLong and others directly. At least the SQL types that are implemented using Java primitives.

Result Holder Generation

The dynamic creation of result holders (see language section) means that all operators have to check for the result reference being passed in being null, and if so create a new instance of the desired type. This check seems inefficient as it will be performed once per operation, again, imagine the million row query. In addition the field that holds the result holder in the generated code is assigned each time to the same value, inefficient. It seems that the code using the type system, generated or coded, can set up the result holder at initialization time, thus removing the need for the check and field assignment, leading to faster smaller code.

NULL and operators

The operators typically have to check for incoming NULL values and assign the result to be NULL if any of the inputs are NULL. This combined with the result holder generation issue leads to a lot of duplicate code checking to see if the inputs are NULL. It's hard to currently do this in a single method as the code needs to determine if the inputs are NULL, generate a result holder and return two values (is the result NULL and what is the result holder). Splitting the operator methods into two would help as at least the NULL checks could be in the super-class for all the types, rather than in each implementation. In addition this would lead to the ability to generate to a more efficient operator if the inputs are not nullable. E.g for the + operator there could be plus() and plusNotNull() methods, the plus() being implemented in the NumberDataType class, handling NULL inputs and calling plusNotNull(), with the plusNotNull() implemented in the specific type.

Operators and self

It seems the operator methods should almost always be acting on thier own value, e.g. the plus() method should only take one input and the result is the value of the receiver (self) added to the input. Currently the plus takes two inputs and probably in most if not all cases the left input is the receiver. The result would be smaller code and possible faster, as the method calls on self would not be through an interface.
org.apache.derby.iapi.util
org.apache.derby.impl.db
org.apache.derby.impl.drda

Network Server Implementation

Network Server accepts connections from DRDA clients, translates incoming DRDA Requests into embedded JDBC calls and then translates results back into DRDA for return to the client. Below is a summary of the implementation.

Classes Summary

NetworkServerControlImpl - This class implements methods used by the public API and main. It's functions include:

    • Launching a ConnectionThread to accept incomming connections.

    • Manaintaining a list of sessions, a queue of Sessions waiting for free thread and free list of DRDAConnections which are available for reuse.

    • Handling non-DRDA proprietary protocol requests (e.g. turning tracing on/off)



ClientThread - A single instance of this thread is launced to accept connections. It is responsible for

    • accepting connections

    • creating a new Sessions and adding them to the session table.

    • Starting a DRDAConnThread (either one from the free list or a new one) or putting the sessions waiting for a thread if maxThreads is exceeded.

ApplicationRequester - this contains information about a particular application requester(e.g, type, version, level of protocol it supports).

Session - this contains information about the client session, (e.g., client socket, AppRequester , current state, etc). It refers to a Database object which contains information about the database connection.

Database - this contains info about the database connection, prepared statements etc. It contains a hash table of DRDAStatements that are keyed by the package name and section number for the statement. Prepared statements are identified in the DRDA protocol by a package and section number.

DRDAStatement - This contains the Statement and all of its DRDA related information as well as the statement's DRDAResultSets which contain result set information. DRDA type information for the parameter metadata is also contained in this class. (It would be good to break it out). For JCC each statement has its isolation level encoded in the package name, and the isolation level is asssociated with the statement instead of the the connection. The isoloation level for the statement will be set accordingly if the client is JCC. DerbyClient sets the isololation on the connection per the JDBC spec and does not use the statement isolation level.

DRDAResultSet - Contains the result set and related metadata and DRDA type information. There is a package name and section number associated with the ResultSet as well. If a statement has only a single ResultSet the package and section number is the same as the statement. Additional ResultSets (created by stored procedures) are assigned a different section number by the server.

DRDAConnThread - This is the main workhorse for the DRDA connections. It sets up the input streams, creates instances of the DDMReader and DDMWriter classes and processes DRDA commands. Most of the DRDA protocol is in this class.

DDMReader - This class contains the utility methods for reading the incoming DRDA protocol and command protocol.

DDMWriter - This class contains the utility methods for writing the outgoing DRDA protocol and command protocol.

DRDAProtocolException - This class handles DRDA protocol errors.

EXTDTAInputStream - An input stream for externalized data (large object).

CcsidManager - This is an abstract class for performing character conversions.

EbcdicCcsidManager- This class converts from EBCDIC to Java Unicode. The DDM parameters are transmitted in EBCDIC and need to be converted to Java Unicode.

CodePoint- static values for DDM Codepoints. These are predefined values used in the DRDA protocol.

CodePointNameTable - hash table with codepoint names, used to produce tracing information.

DssTrace - provides server side tracing for the DRDA protocol.

FdocaConstants -FDOCA (Formatted Data Object Content Architecture) describes the layout and data types of the data being transmitted between the requester and server. This class defines statics for the constant values.

SQLTypes - DRDA describes SQL Types for the data types being transmitted. This class defines statics for the constant values.

EncryptionManager- routines for decrypting userid and password to handle encrypted userid and password security. This requires IBM JCE

SignedBinary - this is a conversion class that translates the incoming values from the client into the correct byte order. The DRDA protocol requires that the receiver of data translates the data into it's format (i.e., the writer writes data in its own format). Data has to be converted from the writer format to the local format.

Scheduling

The scheduling algorithm used is first in first out. When a client session connects to the server, the server checks to see if there are any DRDAConnThreads which are free to handle the session. If there are, it notifies the thread. If there are no available threads and we haven't reached the maximum number of connection threads we can have, the server creates a new thread with the session information. If we have already reached the maximum number of connection threads, the server places the session on a run queue for the next available thread.

How long a thread works on a particular session depends on the value of the timeslice. If timeslice is 0, the thread works on the session until the session ends. If the timeslice is greater than 0, the thread checks the amount of time it has spent on the session after each complete communication once the session has been initiated. A complete communication consists of a packet from the client and the return from the server. For example, for an execute immediate of a create table command, the packet from the client would include the create table command and a commit. The return from the server would be information about the result of the command. For a cursor, each fetch would represent a separate communication.

A timeout of the timeslice is set on the client socket so that the connection thread won't be blocked for more than the timeslice by an idle client.

Coordinating information between Server and Connection Threads

Several commands change information needed by the connection threads. For example, timeslice can be changed. This is handled by keeping a copy of the value in the connection thread. If the value is changed, the command changing the value is responsible for changing the value in the thread's copy. The result of this is that instead of one synchronization point in the server which all threads will block on to read, each thread has a copy which it can separately sync on.

Command Protocol

The command protocol is used to send commands such as shutdown, turn tracing on, etc. to a running network server. The client sends:

4 bytes - String CMD:

2 bytes - Protocol version

1 byte - command

n bytes - parameters for the command

The server returns:

1 byte - command result, 0 - OK, 1 - error

1 byte - number of messages

2 bytes - length of message (or message key)

n bytes - message or message key

1 byte - number of parameters to message

{2 bytes - length of parameter

n bytes - parameter} for each parameter

Note, the 3rd byte of the command header must not be 'D0' to distinquish it from DRDA DSS structures.

The protocol for the parameters for each command is in the javadoc for NetworkServerControlImpl.

The processing routine is synchronized so that multiple threads don't clobber each other. This means that configuration commands will be serialized. This shouldn't be a problem since they should be fairly rare.



DRDA Protocol

The DRDA protocol is described at great length in the DRDA Reference manuals. DRDA Protocol is divided into three layers corresponding to the DDM three-tier architecture. For each layer, their is a DSS (Data Stream Structure) defined.

Layer A Communications management services

Layer B Agent services

Layer C Data management services

At layer A are request, reply and data correlation, structure chaining, continuation or termination of chains when errors are detected, interleaving and multi-leaving request, reply, and data DSSs for multitasking environments. For TCP/IP, the format of the DDM envelope is

2 bytes Length of the data

1 byte 'D0' - indicates DDM data

1 byte DDM format byte(DSSFMT) - type of DSS(RQSDSS,RPYDSS), whether it is chained, information about the next chained DSS

2 bytes request correlation identifier

The correlation identifier ties together a request, the request data and the reply. In a chained DSS, each request has a correlation identifier which is higher than the previous request (all correlation identifiers must be greater than 0).

At layer B are object mapping, object validation and command routing. Layer B objects with data 5 bytes less than 32K bytes consist of

2 bytes Length

2 bytes Type of the object (code point)

Object data

Object data is either SCALAR or COLLECTION data.

Scalar data consists of a string of bytes formatted as the class description of the object required. Collections consist of a set of objects in which the entries in the collection are nested within the length/ code point of the collection.

Layer B objects with data >=32763 bytes long format is

2 bytes Length - length of class, length, and extended total length fields (high order bit set, indicating >=32763)

2 bytes Type of the object (code point)

n bytes Extended total length - length of the object (n = Length – 4)

Object data

Some of the objects in the collections are required and some are optional. To handle this, a required array is created for each command with optional objects with the required codepoints and each element is zeroed as the required objects are found. A check is done to see if there are any required objects missing and an error message is produced indicating the missing codepoints if some have not been sent.

Packages

In DRDA, dynamic SQL is bound to predefined packages. Since Derby doesn't support packages, PACKAGE messages will be handled entirely in the network server.The network server will just validate the protocol and "pretend" to execute the bind command.

*This document was based in large part on a design document written by Judy Peachey when Network Server was first implemented.

org.apache.derby.impl.io
org.apache.derby.impl.jdbc
org.apache.derby.impl.jdbc.authentication
org.apache.derby.impl.load
org.apache.derby.impl.services.bytecode
org.apache.derby.impl.services.cache
org.apache.derby.impl.services.daemon
org.apache.derby.impl.services.jce
org.apache.derby.impl.services.locks
org.apache.derby.impl.services.monitor
org.apache.derby.impl.services.reflect
org.apache.derby.impl.services.stream
org.apache.derby.impl.services.timer
org.apache.derby.impl.services.uuid
org.apache.derby.impl.sql
org.apache.derby.impl.sql.catalog
org.apache.derby.impl.sql.compile
org.apache.derby.impl.sql.conn
org.apache.derby.impl.sql.depend
org.apache.derby.impl.sql.execute
org.apache.derby.impl.sql.execute.rts
org.apache.derby.impl.store.access
org.apache.derby.impl.store.access.btree
org.apache.derby.impl.store.access.btree.index BTree Indexes with Locking

Implements classes used by the language layer to implement SQL secondary indexes. The classes here extend and use the classes in {@link org.apache.derby.impl.store.access.btree} to implement a locked btree index.

The key to understanding the class layout is to understand the public store interfaces in {@link org.apache.derby.iapi.store.access.conglomerate}, which contains the shared interfaces that must be implemented by all access methods. Currently Derby implements heap and btree index access methods. Users of access methods use the same interface no matter what the underlying type or particular implementation of the access method. Therefore, Derby can support multiple types of btree index implementations, which if done right should require no changes to actual users of the access methods.

In reality the interfaces would have to change in some ways to support a radically different kind of access method, such as GiST. But the implementor should enhance the interfaces in the conglomerate package so that these can then be supported by all existing access methods.

Isolation Levels

Isolation level implementation in the B-Tree index is done with data only locking, i.e., locks on secondary index rows are actually locks on the data rows that they point to. The specifics of particular isolation levels are hidden in various implementations of the {@link org.apache.derby.impl.store.access.btree.BTreeLockingPolicy BTreeLockingPolicy} class. The classes which do scans, deletes, and inserts do not have isolation specific code, instead they make lock calls using BTreeLockingPolicy interfaces, and then depending on the isolation level one of the implmentations does the actual locking.

org.apache.derby.impl.store.access.conglomerate
org.apache.derby.impl.store.access.heap
org.apache.derby.impl.store.access.sort
org.apache.derby.impl.store.raw
org.apache.derby.impl.store.raw.data
org.apache.derby.impl.store.raw.log
org.apache.derby.impl.store.raw.xact
org.apache.derby.impl.tools.dblook
org.apache.derby.impl.tools.ij
org.apache.derby.impl.tools.sysinfo
org.apache.derby.io
org.apache.derby.jdbc JDBC driver and data source implementations.

Client/Remote driver and data sources, used to connect to the network server

  • ClientDriver - Type 4 JDBC driver
  • ClientDataSource - Data source
  • ClientConnectionPoolDataSource - Connection pooling data source
  • ClientXADataSource - XA data source

Embedded driver and data sources, used when the database engine is embedded with the application.

  • EmbeddedDriver - Type 4 JDBC driver
  • EmbeddedDataSource - Data source for J2SE and J2EE
  • EmbeddedSimpleDataSource - Data source for J2ME/CDC/Foundation and J2SE
  • EmbeddedConnectionPoolSource - Connection pooling data source
  • EmbeddedXASource - XA data source

Derby's JDBC api is defined by its entry point classes, the drivers and data source implementations and the standard JDBC api definitions of the java.sql and javax.sql classes. Derby does not provide non-standard extensions to standard JDBC classes such as Connection, to encourage portable JDBC applications.

org.apache.derby.osgi
org.apache.derby.shared.common.error
org.apache.derby.shared.common.i18n
org.apache.derby.shared.common.reference Useful constants that the Java compiler will in-line. A collection of reference interfaces that contain primitive or String constants. Such constants will be in-lined by the Java compiler hopefully leading to smaller footprint, than a reference to a field entails. Fields in interfaces are automatically public, static and final, hence constants.

These classes should not need to be shipped with any of the Derby jar files. If one is shipped with a Jar file then it most likely means the field representing the constant was a non-String Object (e.g. new Integer(1)) or the final field is a calculated value that could not be resolved to a constant by the Java compiler.

org.apache.derby.shared.common.sanity
org.apache.derby.tools
org.apache.derby.ui
org.apache.derby.ui.actions
org.apache.derby.ui.common
org.apache.derby.ui.decorate
org.apache.derby.ui.launch
org.apache.derby.ui.nature
org.apache.derby.ui.popup.actions
org.apache.derby.ui.properties
org.apache.derby.ui.util
org.apache.derby.vti
org.apache.derbyBuild
org.apache.derbyBuild.eclipse
org.apache.derbyBuild.javadoc
org.apache.derbyTesting.functionTests.harness
org.apache.derbyTesting.functionTests.suites
org.apache.derbyTesting.functionTests.tests.demo
org.apache.derbyTesting.functionTests.tests.derbynet
org.apache.derbyTesting.functionTests.tests.i18n
org.apache.derbyTesting.functionTests.tests.jdbc4
org.apache.derbyTesting.functionTests.tests.jdbcapi
org.apache.derbyTesting.functionTests.tests.junitTests.compatibility
org.apache.derbyTesting.functionTests.tests.junitTests.derbyNet
org.apache.derbyTesting.functionTests.tests.lang
org.apache.derbyTesting.functionTests.tests.largedata
org.apache.derbyTesting.functionTests.tests.memory
org.apache.derbyTesting.functionTests.tests.nist
org.apache.derbyTesting.functionTests.tests.perf
org.apache.derbyTesting.functionTests.tests.store
org.apache.derbyTesting.functionTests.tests.storetests
org.apache.derbyTesting.functionTests.tests.tools
org.apache.derbyTesting.functionTests.tests.upgradeTests
org.apache.derbyTesting.functionTests.util
org.apache.derbyTesting.functionTests.util.corruptio
org.apache.derbyTesting.functionTests.util.StaticInitializers
org.apache.derbyTesting.functionTests.util.streams
org.apache.derbyTesting.junit
org.apache.derbyTesting.unitTests.crypto
org.apache.derbyTesting.unitTests.harness
org.apache.derbyTesting.unitTests.lang
org.apache.derbyTesting.unitTests.services
org.apache.derbyTesting.unitTests.store
org.apache.derbyTesting.unitTests.util
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.