powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, JPA, связи
4 сообщений из 4, страница 1 из 1
Hibernate, JPA, связи
    #34928152
Alexey Bo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Извините, если где-то было - не нашел.

Описание:
Есть две сущности, связанные двунаправленно (parent/child).
Если загрузить parent'а, то набор child'ов будет инициализирован прокси-объектами с выставленными первичными ключами.

Собственно вопросы:

1. Если количество child'ов большое, а доступ в каком-либо куске кода к ним не требуется (т.е. используются только поля parent'a), то ресурсы тратятся зря :)
Как реализовать подход, при котором можно было бы доставать либо класс без ссылок на внешние сущности либо с сылками на них. И вообще, кто нибудь на это заморачивается?

2. Читал описание шаблона LightWeight class в хибернейте. Мозможно ли реализовать наследование классов JPA (может не верно выразился), т.е. абстрактный класс будет содержать код, а все остальные его наследовать:

Код: plaintext
1.
2.
3.
4.
5.
@Id
@GeneratedValue()
 public   long  getId() {
	 return  id;
}
...
Рейтинг: 0 / 0
Hibernate, JPA, связи
    #34928337
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Bo
1. Если количество child'ов большое, а доступ в каком-либо куске кода к ним не требуется (т.е. используются только поля parent'a), то ресурсы тратятся зря :)
Как реализовать подход, при котором можно было бы доставать либо класс без ссылок на внешние сущности либо с сылками на них. И вообще, кто нибудь на это заморачивается?

хибер также использует ленивые коллекции. т.е. если действительно ищите одного батю - селектится одна строка, трогаете его коллекцию - селектятся идшки его киндеров, и только потом пинок киндера приводит к его загрузке. это лень по умолчению.
Alexey Bo
2. Читал описание шаблона LightWeight class в хибернейте. Мозможно ли реализовать наследование классов JPA (может не верно выразился), т.е. абстрактный класс будет содержать код, а все остальные его наследовать:
хибер поддерживает кучу всяких вариантов наследования. можно практически всё
...
Рейтинг: 0 / 0
Hibernate, JPA, связи
    #34928344
Фотография Java Programmer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey BoДобрый день!
Извините, если где-то было - не нашел.

Описание:
Есть две сущности, связанные двунаправленно (parent/child).
Если загрузить parent'а, то набор child'ов будет инициализирован прокси-объектами с выставленными первичными ключами.

Собственно вопросы:

1. Если количество child'ов большое, а доступ в каком-либо куске кода к ним не требуется (т.е. используются только поля parent'a), то ресурсы тратятся зря :)
Как реализовать подход, при котором можно было бы доставать либо класс без ссылок на внешние сущности либо с сылками на них. И вообще, кто нибудь на это заморачивается?

Не надо заморачиваться поскольку обычно Hibernate использует кэш - тоесть хита в базу нет -
если же вам не нужна коллекция ваабще - то можно сделать lazy подгрузку

[quot Alexey Bo]
2. Читал описание шаблона LightWeight class в хибернейте. Мозможно ли реализовать наследование классов JPA (может не верно выразился), т.е. абстрактный класс будет содержать код, а все остальные его наследовать:

Код: plaintext
1.
2.
3.
4.
5.
@Id
@GeneratedValue()
 public   long  getId() {
	 return  id;
}

2) да можно реализовать )

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<hibernate-mapping  package ="com.test.hibernate">
< class  name="Percent" table="DEALER_PERCENT"  abstract ="true">
    <cache usage="read-write"/>
    <composite-id>
        <key-property name="serviceProviderId" column="SERVICE_PROVIDER_ID"/>
        <key-property name="dealerId" column="DEALER_ID"/>
        <key-property name="date" column="PERCENT_DATE" type="date"/>
    </composite-id>

    <discriminator column="TYPE"/>

    <property name="value" column="PERCENT_VALUE" type="double"/>

    <subclass name="DealerPercent"/>
    <subclass name="DealerBankPercent"/>
</ class >
</hibernate-mapping>


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
 public   abstract   class  Percent  implements  Serializable {

     private   long  serviceProviderId;
     private   long  dealerId;


     private   double  value;

     private  Date date;

     public  Percent(){

    }

     public  Percent( long  serviceProviderId,  long  dealerId,  short  timeshift){
        Calendar calendar =  DateUtil.getFirstLocalDate(timeshift);
        calendar.add(Calendar.DAY_OF_MONTH,  1 );
         this .date = calendar.getTime();
         this .serviceProviderId = serviceProviderId;
         this .dealerId = dealerId;
    }

     public   long  getServiceProviderId() {
         return  serviceProviderId;
    }

     public   void  setServiceProviderId( long  serviceProviderId) {
         this .serviceProviderId = serviceProviderId;
    }

     public   long  getDealerId() {
         return  dealerId;
    }

     public   void  setDealerId( long  dealerId) {
         this .dealerId = dealerId;
    }

     public   double  getValue() {
         return  value;
    }

     public   void  setValue( double  value) {
         this .value = value;
    }

     public  Date getDate() {
         return  date;
    }

     public   void  setDate(Date date) {
         this .date = date;
    }


     public   boolean  equals(Object o) {
         if  ( this  == o)  return  true;
         if  (o ==  null  || getClass() != o.getClass())  return  false;

        Percent that = (Percent) o;

         if  (dealerId != that.dealerId)  return  false;
         if  (serviceProviderId != that.serviceProviderId)  return  false;
         if  ( Double .compare(that.value, value) !=  0 )  return  false;
         if  (!date.equals(that.date))  return  false;

         return  true;
    }

     public   int  hashCode() {
         int  result;
         long  temp;
        result = ( int ) (serviceProviderId ^ (serviceProviderId >>>  32 ));
        result =  31  * result + ( int ) (dealerId ^ (dealerId >>>  32 ));
        temp = value != + 0 .0d ?  Double .doubleToLongBits(value) : 0L;
        result =  31  * result + ( int ) (temp ^ (temp >>>  32 ));
        result =  31  * result + date.hashCode();
         return  result;
    }
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   class  DealerPercent  extends  Percent {

     public  DealerPercent(){

    }

     public  DealerPercent( long  serviceProviderId,  long  dealerId,  short  timeshift){
        Calendar calendar =  DateUtil.getFirstLocalDate(timeshift);
        calendar.add(Calendar.DAY_OF_MONTH,  1 );
         this .setDate(calendar.getTime());
         this .setServiceProviderId(serviceProviderId);
         this .setDealerId(dealerId);
    }
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public   class  DealerBankPercent  extends  Percent{

     public  DealerBankPercent(){

    }

     public  DealerBankPercent( long  serviceProviderId,  long  dealerId,  short  timeshift){
        Calendar calendar =  DateUtil.getFirstLocalDate(timeshift);
        calendar.add(Calendar.DAY_OF_MONTH,  1 );
         this .setDate(calendar.getTime());
         this .setServiceProviderId(serviceProviderId);
         this .setDealerId(dealerId);
    }
}
Как это сделать через аннотации не знаю - не копался)
...
Рейтинг: 0 / 0
Hibernate, JPA, связи
    #34928685
Alexey Bo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за ответы.
Было недопонимание работы hibernate с коллекциями :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, JPA, связи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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