Jaybird is a JCA/JDBC driver suite for the Firebird database server. Historically, Borland opened sources of the type 3 JDBC driver called InterClient. However, due to inherent limitations of the Firebird client library it, the type 3 driver was considered a dead end, and the Firebird team developed a pure Java implementation of the wire protocol. This implementation became the basis for JayBird.
The Jaybird driver is based on both the new JCA standard for application server connections to enterprise information systems and the well known JDBC standard. The JCA standard specifies an architecture in which an application server can co-operate with a driver so that the application server manages transactions, security, and resource pooling, while the driver supplies only the connection functionality. Although similar to the JDBC 2 XADataSource idea, the JCA specification is considerably clearer on the division of responsibility between the application server and driver.
Jaybird requires at least JDK
1.3.1 to compile and run properly. The JayBird JCA/JDBC driver is distributed free of charge under the GNU Lesser General Public License (LGPL). Text of the license can be obtained from http://www.gnu.org/copyleft/lesser.html.
For more information please refer to the Jaybird Wiki pages
Database connectivity in Java is fairly well standardised. The main standard is the JDBC specification (java.sql.* classes, current version 3.0). It defines the concepts for Connection, Statement, PreparedStatement, CallableStatement and ResultSet. It also defines the standard data types in Java. java.sql.Connection
represents a physical connection to a database. Each connection has one and only one transaction associated with it. This transaction is started when the connection is opened and can be either committed or rolled back. You can specify different transaction isolation levels (none, read uncommitted, read committed, repeatable read and snapshot). The connection instance is also a factory for different statement objects. java.sql.Statement
is the most simple SQL statement. You can execute either a query or an update. If you execute a query (SELECT statement), you obtain an instance of a ResultSet. If you execute update, you get number of modified rows. java.sql.ResultSet
represents a result set returned from the server. The most simple result set is an iterator. After the request is executed, you can iterate through all of the result set and get the data using data access methods (getInt(colNumber), getString(colNumber), etc.). java.sql.PreparedStatement
represents a prepared statement. You can prepare it once, then set parameters and execute it many times. java.sql.CallableStatement
is a wrapper for a stored procedure call. I think it was introduced just to make everybody happy, because some database servers seem to have problems executing stored procedures using either java.sql.Statement or java.sql.PreparedStatement.
Also, there is a lot of metadata information associated with each of the objects (database features, supported data types, fetch size, etc.).