Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Класс первичного ключа в дескрипторе развертывания / 17 сообщений из 17, страница 1 из 1
26.01.2006, 13:59
    #33505054
poor_worker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
Вопрос "из интереса": хотелось бы услышать мнение форумчан, класс entity bean по логике вещей должен быть таким (объектом):

Код: plaintext
<prim-key- class >java.lang. Long </prim-key- class >

или таким (типом)

Код: plaintext
<prim-key- class > long </prim-key- class >

Заранее спасибо
...
Рейтинг: 0 / 0
26.01.2006, 14:06
    #33505077
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
Оба варианта проходят. Второй проще. А в чем вопрос?
...
Рейтинг: 0 / 0
26.01.2006, 14:12
    #33505098
poor_worker
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
Собственно вопрос так звучит:
на объектные или типизированные переменные лучше мапить поля базы данных?

Что правильнее с точки зрения языка, быстрее работает и т.д.?
...
Рейтинг: 0 / 0
26.01.2006, 16:19
    #33505499
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
imho на простые типы если возможно. за оптимизацию я думаю прикладной код отвечать не должен
...
Рейтинг: 0 / 0
26.01.2006, 18:56
    #33505938
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
Я же говорю, второй проще.
...
Рейтинг: 0 / 0
26.01.2006, 23:08
    #33506233
KPIIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
Все что передается по RMI-IIOP, должно иметь сериализуемый, и кроме того должен реализовывать методы equals и hashCode.
Первичными ключами не могут быть приметивы, потому что некоторая часть спец EJB запрещает использование примитивов. например, смотрим EJBObject.getPrimaryKey() возвращает Object ...

to М.Голованов
funikovyuri
прежде чем советовать - учить матчасть...
...
Рейтинг: 0 / 0
27.01.2006, 01:48
    #33506342
Exppp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
KPIIS а он сам не догадается и обёртку не вернёт???
делают же примитивные ключи.

я,правда, всегда использую обёртки так можно легко отличить
свежесозданный объект от загруженного из базы
а нужно это, чтоб случайно не попытаться удалить то чего ещё не записал

мужики бросайте этот 2.1 гемор, айда на 3.0
...
Рейтинг: 0 / 0
27.01.2006, 10:04
    #33506635
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
ExpppKPIIS а он сам не догадается и обёртку не вернёт???
делают же примитивные ключи.

Догадается. В реализации entity beans как правило можно использовать примитивные типы как ключи. Однако в дескрипторах нужно использовать только сериализуемые типы. Например, если в дескрипторе класс ключа определен как

Код: plaintext
1.
2.
3.
4.
5.
    <entity>
      <ejb-name>SomeEntity</ejb-name>
      . . .
      <prim-key- class >java.lang.Integer</prim-key- class >
      <primkey-field>id</primkey-field>
    </entity>
то в реализации этого класса можно определить ключ как int:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 public   class  SomeEntityImpl  implements  EntityBean {
     public   [b]int  id[/b];
     public   int  getId()  throws  RemoteException {
         return  id;
    }
     public   void  setId( int  id)  throws  RemoteException {
         this .id = id;
    }
    ...
}
...
Рейтинг: 0 / 0
27.01.2006, 13:57
    #33507489
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
KPIIS

Все что передается по RMI-IIOP, должно иметь сериализуемый, и кроме того должен реализовывать методы equals и hashCode.

Java Language to IDL Mapping
Specification1.2.2 Primitive Types
All the standard Java primitive types are supported as part of RMI/IDL. These are:
• void, boolean, byte, char, short, int, long, float,
double http://www.omg.org/docs/formal/01-06-07.pdf

Первичными ключами не могут быть приметивы, потому что некоторая часть спец EJB запрещает использование примитивов. например, смотрим EJBObject.getPrimaryKey() возвращает Object ...
Хочеться глянуть на "эту часть", потому как то что EJBObject.getPrimaryKey() возврщает Object не мешает нам вернуть,например, new Integer(10);
...
Рейтинг: 0 / 0
27.01.2006, 17:52
    #33508296
KPIIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
funikovyuri
Хочеться глянуть на "эту часть", потому как то что EJBObject.getPrimaryKey() возврщает Object не мешает нам вернуть,например, new Integer(10);
никто не мешает... пишем свою релиазацию EJBObject и возвращаем что угодно. Или качаем коды Jboss, etc и смотрим как сделано у них.
или EJBObject вы будете реализовывать :)?
...
Рейтинг: 0 / 0
27.01.2006, 17:56
    #33508302
KPIIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
funikovyuri
Specification]1.2.2 Primitive Types
All the standard Java primitive types are supported as part of RMI/IDL. These are:
• void, boolean, byte, char, short, int, long, float,
double http://www.omg.org/docs/formal/01-06-07.pdf
[/quot]

Опять идем учить матчасть... :)
Java RMI over IIOP combines the best features of Java RMI technology with the best features of CORBA technology. Like Java RMI, RMI over IIOP speeds distributed application development by allowing developers to work completely in the Java programming language. When using RMI over IIOP to produce Java technology-based distributed applications, there is no separate Interface Definition Language (IDL) or mapping to learn. Like RMI, RMI over IIOP provides flexibility by allowing developers to pass any serializable Java object (Objects By Value) between application components. Like CORBA, RMI over IIOP is based on open standards defined with the participation of hundreds of vendors and users in the Object Management Group.
...
Рейтинг: 0 / 0
27.01.2006, 18:09
    #33508335
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
KPIIS

может мой английский так плох, но я не вижу где в вашем тексте сказано что использовать java-примитивы нельзя в RMI-IIOP, тем более не ясно где источник информации о часть спец EJB запрещает использование примитивов?
...
Рейтинг: 0 / 0
27.01.2006, 18:22
    #33508354
KPIIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
а Object EJBObject.getPrimaryKey() - это разве не одна из частей спецификации EJB?
...
Рейтинг: 0 / 0
27.01.2006, 18:35
    #33508382
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
Object EJBObject.getPrimaryKey()

Это запись не означает что первичный ключ не может быть примитивом... т.к. в java примитивы представимы в виде объектов (а начиная с 1.5 это вообще выполняется jvm автоматически). кроме того вы не ответили на первый вопрос - где в приведенном вами тексте сказано что примитивные типы использовать в RMI-IIOP нельзя?
...
Рейтинг: 0 / 0
27.01.2006, 18:36
    #33508385
KPIIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
А чего вообще говорить - пример в студию EntityBean'a с примитивным PK
...
Рейтинг: 0 / 0
27.01.2006, 19:09
    #33508456
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
KPIIS
http://java.sun.com/developer/codesamples/ejb.html

автор
Primitive Type Primary Keys

VendorBean uses a primary key that is a Java programming language primitive type, an int. To use a primitive type as the primary key, you must create a wrapper class. VendorKey is the wrapper class for VendorBean.

The wrapper primary key class has the same requirements as described in The Primary Key Class. This is the VendorKey wrapper class:

package dataregistry;
public final class VendorKey implements java.io.Serializable {

public int vendorId;

public boolean equals(Object otherOb) {

if (this == otherOb) {
return true;
}
if (!(otherOb instanceof VendorKey)) {
return false;
}
VendorKey other = (VendorKey) otherOb;
return (vendorId == other.vendorId);
}
public int hashCode() {
return vendorId;
}
public String toString() {
return "" + vendorId;
}
}


Т.е. идея в том что примитивы использовать можно, но так как спецификация писалась для общего случая, то везде ожидается Object. Так что если нужно можно использовать примитив, выполняя его преобразование в Object...

Я когда отвечал на вопрос поста не заметил что разговор идет о Entity Bean'ах, а не о Hibernate/EJB3 Pojos, так что по теме поста ответ будет - можно использовать что угодно, но класс использовать проще.

Мне просто понравились ваши объяснения про RMI-IIOP и запреты спецификации...
...
Рейтинг: 0 / 0
27.01.2006, 19:53
    #33508532
KPIIS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс первичного ключа в дескрипторе развертывания
А мне понравились ваши сообщения про первичный ключ в entities.

Мне просто понравились ваши объяснения про RMI-IIOP и запреты спецификации...
я сначала говорил про EJB спецификации...

потом полез в RMI-IIOP - а он действительно может бросаться примитивами
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Класс первичного ключа в дескрипторе развертывания / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]