Главная » Java, JavaBeans » Соотношения между типами Java и SQL

0

Когда вы разрабатываете Компонент EJB для работы с существующей базой данных, вы должны сопоставить типы данных Java в вашем приложении с SQL-типами данных БД.

Inprise-реализация Контейнера EJB использует стандартне отображение между SQL- и Java-типами, принятое в JDBC. JDBC определяет набор обобщенных SQL-типов, соответствующих наиболее часто используемым типам данных SQL. При разработке вашего Компонента, предназначенного для моделирования существующих баз данных, рекомендуется использовать эти правила отображения типов (эти типы определены в классе lava, sql .Types.)

Таблица 7.1 содержит описание соответствия между типами SQL и Java, принятого в JDBC

Таблица 7.1 Базовое соответствие типов SQL и Java

Тип Java

тип JDBC SQL

boolean

BIT

byte

TINYINT

char

CHAR(l)

double

DOUBLE

float

REAL

int

INTEGER

long

BIGINT

short

SMALLINT

String

VARCHAR

java.math.BigDecimal

NUMERIC

byte[]

VARBINARY

java.sql.Date

DATE

java.sql.Time

TIME

java.sql.Timestamp

TIMESTAMP

java.util.Date

TIMESTAMP

java.io.Serializable

VARBINARY

Хотя все реляционные базы данных используют типы SQL, все же существуют значительные отличия между различными реализациями этих типов. Даже если речь идет о типах с одинаковой семантикой, иногда для них используются различные имена. Например, типу boolean Java в Oracle соответствует NUMBER (1,0), в Sybase – BIT, а в DB2 – SMALLINT.

Когда Inprise-Контейнер EJB создает таблицы баз данных для ваших Компонентов, он автоматически сопоставляет поля Компонента со столбцами таблиц БД. Контейнер обязан знать, какие именно типы SQL использовать при работе с конкретной базой данных. Следствием этого является различное отображение между SQL- и Java-типами для различных баз данных. В таблице 7.2 содержаться схемы отображения для Oracle, Sybase/MSSQL и DB2.

Таблица 7.2 Отображение Java в SQL для Oracle, Sybase/MSSQL и DB2

THnJava

Oracle

Sybase/MSSQL

DB2

boolean

NUMBER(1,0)

BIT

SMALLINT

byte

NUMBER(3,0)

TINYINT

SMALLINT

char

CHAR(l)

CHAR(l)

CHAR(l)

double

NUMBER

FLOAT

FLOAT

float

NUMBER

REAL

REAL

int

NUMBER(10,0)

INT

INTEGER

Таблица 7.2 Отображение Java в SQL для Oracle, Sybase/MSSQL и DB2

TunJava

Oracle

Sybase/MSSQL

DB2

long

NUMBER(19,0)

NUMERIC(19,0)

BIGINT

short

NUMBER(5,0)

SMALLINT

SMALLINT

String

VARCHAR(2000)

TEXT

VARCHAR(2000)

java.math.BigDecimal

NUMBER(38)

DECIMAL(28,28)

DECIMAL

byte[]

RAW(2000)

IMAGE

BLOB

java.sql.Date

DATE

DATE TIME

DATE

java.sql.Time

DATE

DATE TIME

TIME

java.sql.Timestamp

DATE

DATE TIME

TIMESTAMP

java.util.Date

DATE

DATE TIME

TIMESTAMP

java.io.Serializable

RAW(2000)

IMAGE

BLOB

В таблице 7.3 содержаться схемы отображения для JDataStore, Informix и Interbase.

Таблица 7.3 Отображение Java в SQL для JDataStore, Informix и Interbase

тип Java

JDatastore

Informix

Interbase

boolean

BOOLEAN

SMALLINT

SMALLINT

byte

SMALLINT

SMALLINT

SMALLINT

char

CHAR(l)

CHAR(l)

CHAR(l)

double

DOUBLE

FLOAT

DOUBLE PRECISION

float

FLOAT

SMALLFLOAT

FLOAT

int

INTEGER

INTEGER

INTEGER

long

LONG

DECIMAL(19,0)

NUMBER(15,0)

short

SMALLINT

SMALLINT

SMALLINT

String

VARCHAR

VARCHAR(2000)

VARCHAR(2000)

java.math.BigDecimal

NUMERIC

DECIMAL(32)

NUMBER(15,15)

byte[]

OBJECT

BYTE

BLOB

java.sql.Date

DATE

DATE

DATE

java. sql. Time

TIME

DATE

DATE

java.sql.Timestamp

TIMESTAMP

DATE

DATE

java.util.Date

TIMESTAMP

DATE

DATE

java.io.Serializable

OBJECT

BYTE

BLOB

 

Источник: Руководство программиста Enterprise JavaBeans

По теме:

  • Комментарии