isis-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Serdar Hamzaogullari <hasan.ser...@foreks.com>
Subject Re: Menu getAll action returns table with many sql queries for each entry
Date Sat, 11 Nov 2017 20:30:22 GMT
Hello Dan,

Did you have a chance to take look at my github example app

9 Kas 2017 Per, saat 16:22 tarihinde Serdar Hamzaogullari <
hasan.serdar@foreks.com> şunu yazdı:

> Hi Dan,
>
> Here is a complete example of the problem
>
> https://github.com/radresian/apache-isis-sample
>
> After running the application Click the ProfilePreferences Menu -> List
> All, then you will see the SQL queries for each entry at the console logs...
>
> On Thu, Nov 9, 2017 at 2:17 AM, Dan Haywood <dan@haywood-associates.co.uk>
> wrote:
>
>> Hmm, looks ok.
>>
>> Can you upload an example app to github so I can pull it down and take a
>> closer look?
>>
>> Thx
>> Dan
>>
>> On Wed, 8 Nov 2017 at 23:12 Serdar Hamzaogullari <hasan.serdar@foreks.com
>> >
>> wrote:
>>
>> > Hi Jörg,
>> >
>> > IdGeneratorStrategy.IDENTITY did not help. Same result.
>> >
>> > Hi Dan,
>> >
>> > Here is my repository:
>> >
>> >
>> > @DomainService(
>> >         nature = NatureOfService.DOMAIN,
>> >         repositoryFor = ProfilePreferences.class
>> > )
>> > public class ProfilePreferencesRepository {
>> >
>> >     public List<ProfilePreferences> listAll() {
>> >         return repositoryService.allInstances(ProfilePreferences.class);
>> >     }
>> >
>> >     public ProfilePreferences get(final String name) {
>> >         return repositoryService.uniqueMatch(
>> >                 new QueryDefault<>(
>> >                         ProfilePreferences.class,
>> >                         "get",
>> >                         "name", name));
>> >     }
>> >
>> >     public ProfilePreferences create(final String name) {
>> >         final ProfilePreferences object = new ProfilePreferences(name);
>> >         serviceRegistry.injectServicesInto(object);
>> >         repositoryService.persist(object);
>> >         return object;
>> >     }
>> >
>> >     @javax.inject.Inject
>> >     RepositoryService repositoryService;
>> >     @javax.inject.Inject
>> >     ServiceRegistry2 serviceRegistry;
>> > }
>> >
>> >
>> >
>> > On Wed, Nov 8, 2017 at 8:16 PM, Dan Haywood <
>> dan@haywood-associates.co.uk>
>> > wrote:
>> >
>> > > Hi Serdar,
>> > >
>> > > can you show us your repository implementation?
>> > >
>> > > I'm wondering why you have defined a query called "Get", I wonder if
>> it's
>> > > being used in that repo (I don't think it should be, if so)
>> > >
>> > > Ta
>> > > Dan
>> > >
>> > >
>> > > On Wed, 8 Nov 2017 at 17:09 Rade, Joerg / Kuehne + Nagel / Ham GI-DP <
>> > > Joerg.Rade@kuehne-nagel.com> wrote:
>> > >
>> > > > Hi Serdar,
>> > > >
>> > > > did you consider:
>> > > >
>> > > > @javax.jdo.annotations.DatastoreIdentity(
>> > > >         strategy =
>> javax.jdo.annotations.IdGeneratorStrategy.IDENTITY,
>> > > >         column = "id")
>> > > >
>> > > > instead of:
>> > > >
>> > > > @PrimaryKey?
>> > > >
>> > > > Best regards
>> > > > Jörg
>> > > >
>> > > > -----Ursprüngliche Nachricht-----
>> > > > Von: Serdar Hamzaogullari [mailto:hasan.serdar@foreks.com]
>> > > > Gesendet: Mittwoch, 8. November 2017 17:07
>> > > > An: users@isis.apache.org
>> > > > Betreff: Menu getAll action returns table with many sql queries for
>> > each
>> > > > entry
>> > > >
>> > > > Hi,
>> > > >
>> > > > I have a menu action like this, listAll action:
>> > > >
>> > > >
>> > > > @DomainService(
>> > > >         nature = NatureOfService.VIEW_MENU_ONLY,
>> > > >         objectType = "profile-preferences-services",
>> > > >         repositoryFor = ProfilePreferences.class
>> > > > )
>> > > > @DomainServiceLayout(
>> > > >         named = "Profile Preferences",
>> > > >         menuOrder = "3"
>> > > > )
>> > > > public class ProfilePreferencesMenu {
>> > > >
>> > > >     @Action(semantics = SemanticsOf.SAFE)
>> > > >     @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
>> > > >     @MemberOrder(sequence = "1")
>> > > >     public List<ProfilePreferences> listAll() {
>> > > >         return profilePreferencesRepository.listAll();
>> > > >     }
>> > > > .
>> > > > .
>> > > > .
>> > > >
>> > > > My Entity is that:
>> > > >
>> > > >
>> > > > @javax.jdo.annotations.PersistenceCapable(
>> > > >         identityType=IdentityType.APPLICATION,
>> > > >         table="profile_preferences",
>> > > >         schema = "dbo"
>> > > > )
>> > > > @javax.jdo.annotations.Version(
>> > > >         strategy= VersionStrategy.VERSION_NUMBER,
>> > > >         column="version")
>> > > > @javax.jdo.annotations.Queries({
>> > > >         @javax.jdo.annotations.Query(
>> > > >                 name = "get",
>> > > >                 value = "SELECT "
>> > > >                         + "FROM
>> > > > com.foreks.user.settings.domain.preferences.ProfilePreferences "
>> > > >                         + "WHERE profileName.equals(:name)")
>> > > > })
>> > > > @DomainObject(
>> > > >         objectType = "profile-preferences"
>> > > > )
>> > > > public class ProfilePreferences implements
>> > > Comparable<ProfilePreferences> {
>> > > >
>> > > >     public ProfilePreferences(final String profileName) {
>> > > >         setProfileName(profileName);
>> > > >     }
>> > > >
>> > > >     @javax.jdo.annotations.Column(allowsNull = "false", length= 150)
>> > > >     @PrimaryKey
>> > > >     @Getter @Setter
>> > > >     @Title(prepend = "Profile Preferences: ")
>> > > >     private String profileName;
>> > > >
>> > > >     @javax.jdo.annotations.Column(allowsNull = "true", length =
>> 4000)
>> > > >     @Property(editing = Editing.ENABLED,hidden = Where.ALL_TABLES)
>> > > >     @Getter @Setter
>> > > >     private String preferences;
>> > > >
>> > > >     //region > delete (action)
>> > > >     @Action(semantics = SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE)
>> > > >     public void delete() {
>> > > >         final String title = titleService.titleOf(this);
>> > > >         messageService.informUser(String.format("'%s' deleted",
>> > title));
>> > > >         repositoryService.remove(this);
>> > > >     }
>> > > >     //endregion
>> > > >
>> > > >     //region > delete (action)
>> > > >     @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
>> > > >     public ProfilePreferences copy(@ParameterLayout(named="Profile
>> > > Name")
>> > > > String name) {
>> > > >         final ProfilePreferences object = new
>> ProfilePreferences(name);
>> > > >         object.setPreferences(preferences);
>> > > >         repositoryService.persist(object);
>> > > >         return object;
>> > > >     }
>> > > >     //endregion
>> > > >
>> > > >     //region > toString, compareTo
>> > > >     @Override
>> > > >     public String toString() {
>> > > >         return ObjectContracts.toString(this, "profileName");
>> > > >     }
>> > > >
>> > > >     @Override
>> > > >     public int compareTo(final ProfilePreferences other) {
>> > > >         return ObjectContracts.compare(this, other, "profileName");
>> > > >     }
>> > > >     //endregion
>> > > >
>> > > >     //region > injected services
>> > > >     @javax.inject.Inject
>> > > >     RepositoryService repositoryService;
>> > > >
>> > > >     @javax.inject.Inject
>> > > >     TitleService titleService;
>> > > >
>> > > >     @javax.inject.Inject
>> > > >     MessageService messageService;
>> > > >     //endregion
>> > > >
>> > > > }
>> > > >
>> > > >
>> > > > When I click the List All action from the wicket viewer menu, server
>> > logs
>> > > > this SQL queries:
>> > > >
>> > > > 19:03:07,334  [Native               http-nio-8080-exec-4 DEBUG]
>> SELECT
>> > > > 'com.foreks.user.settings.domain.preferences.ProfilePreferences' AS
>> > > > NUCLEUS_TYPE,A0.preferences,A0.profileName,A0.version FROM
>> > > > dbo.profile_preferences A0
>> > > > 19:03:07,436  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'ahl'>
>> > > > 19:03:07,442  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'akbank'>
>> > > > 19:03:07,448  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'bmd'>
>> > > > 19:03:07,454  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'DELTA'>
>> > > > 19:03:07,460  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'foreks'>
>> > > > 19:03:07,466  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'halky'>
>> > > > 19:03:07,472  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'hcbs'>
>> > > > 19:03:07,477  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'issanal'>
>> > > > 19:03:07,483  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'marbas'>
>> > > > 19:03:07,489  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'odeabank'>
>> > > > 19:03:07,495  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'odtu'>
>> > > > 19:03:07,500  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'osmanli'>
>> > > > 19:03:07,506  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'piramit'>
>> > > > 19:03:07,512  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'tebsanal'>
>> > > > 19:03:07,517  [Native               http-nio-8080-exec-5 DEBUG]
>> SELECT
>> > > > A0.preferences,A0.version FROM dbo.profile_preferences A0 WHERE
>> > > > A0.profileName = <'ZIRAAT'>
>> > > >
>> > > >
>> > > > There is a query for each entity.  The firs query
>> > > >
>> > > >  SELECT
>> > 'com.foreks.user.settings.domain.preferences.ProfilePreferences'
>> > > > AS NUCLEUS_TYPE,A0.preferences,A0.profileName,A0.version FROM
>> > > > dbo.profile_preferences A0
>> > > >
>> > > > should be enough. Query for every entity becomes a performance
>> problem.
>> > > > How can I prevent this behavior ? Is there some thing wrong or
>> missing
>> > in
>> > > > my Entity Class or Menu Action Class ?
>> > > >
>> > > > Help please :)
>> > > >
>> > > > --
>> > > >  <http://www.foreksmobile.com/redirect.html>
>> > > >
>> > > > P
>> > > >
>> > > > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez
daha
>> > > > düsünelim.
>> > > > Please consider the environment before printing this e-mail.
>> > > >
>> > > > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece
>> > göndericisi
>> > > > tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin
>> > kullanımı
>> > > > içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik
>> > postanın
>> > > > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
>> > > > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
>> > > gerekmektedir.
>> > > > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz
olduğu
>> > > > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu
>> bilgilerin
>> > ne
>> > > > şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından
ve
>> > > > saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca
>> > gönderen
>> > > > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
>> > > > Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
>> > > > *
>> > > > This e-mail and any files transmitted with it are confidential and
>> > > > intended solely for the use of the individual or entity to whom they
>> > are
>> > > > addressed.
>> > > > If you are not the intended recipient you are hereby notified that
>> any
>> > > > dissemination, forwarding, copying or use of any of the information
>> is
>> > > > strictly prohibited, and the e-mail should immediately be deleted.
>> > FOREKS
>> > > > makes no warranty as to the accuracy or completeness of any
>> information
>> > > > contained in this message and hereby excludes any liability of any
>> kind
>> > > for
>> > > > the information contained therein or for the information
>> transmission,
>> > > > reception, storage or use of such in any way whatsoever. The
>> opinions
>> > > > expressed in this message belong to sender alone and may not
>> > necessarily
>> > > > reflect the opinions of FOREKS.
>> > > > This e-mail has been scanned for all known computer viruses.
>> > > >
>> > > > Kühne + Nagel (AG & Co.) KG
>> > > > Rechtsform: Kommanditgesellschaft, Bremen HRA 21928, USt-IdNr.: DE
>> > > > 812773878.
>> > > > Geschäftsleitung Kühne + Nagel (AG & Co.) KG: Dr. Hansjörg
Rodi
>> (Vors.
>> > ),
>> > > > Martin Brinkmann, Holger Ketz, Jan-Hendrik Köstergarten, Nicholas
>> > Minde,
>> > > > Michael Nebel, Lars Wedel, Matthias Weiner.
>> > > > Persönlich haftende Gesellschafterin: Kühne & Nagel A.G.,
>> Rechtsform:
>> > > > Aktiengesellschaft nach luxemburgischem Recht, HR-Nr.: B 18745,
>> > > > Geschäftsführendes Verwaltungsratsmitglied: Karl Gernandt.
>> > > > Geschäftsleitung Region Zentral- und Osteuropa: Dr. Hansjörg Rodi
>> > > (Vors.),
>> > > > Thierry Held, Uwe Hött, Richard Huhn, Holger Ketz, Jan-Hendrik
>> > > > Köstergarten, Jan Kunze, Michael Nebel, Guillaume Sauzedde, Mustafa
>> > > Sener.
>> > > >
>> > > > Wir arbeiten ausschließlich auf Grundlage der Allgemeinen Deutschen
>> > > > Spediteurbedingungen 2017 (ADSp 2017). Hinweis: Die ADSp 2017
>> weichen
>> > in
>> > > > Ziffer 23 hinsichtlich des Haftungshöchstbetrages für Güterschäden
>> (§
>> > 431
>> > > > HGB) vom Gesetz ab, indem sie die Haftung bei multimodalen
>> Transporten
>> > > > unter Einschluss einer Seebeförderung und bei unbekanntem Schadenort
>> > auf
>> > > 2
>> > > > SZR/kg und im Übrigen die Regelhaftung von 8,33 SZR/kg zusätzlich
>> auf
>> > > 1,25
>> > > > Millionen Euro je Schadenfall sowie 2,5 Millionen Euro je
>> > > Schadenereignis,
>> > > > mindestens aber 2 SZR/kg, beschränken. Die ADSp sind auf unserer
>> > Webseite
>> > > > als Download erhältlich. Auf Anfrage senden wir Ihnen diese auch
>> gerne
>> > > zu.
>> > > >
>> > >
>> >
>> > --
>> >  <http://www.foreksmobile.com/redirect.html>
>> >
>> > P
>> >
>> > Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha
>> > düsünelim.
>> > Please consider the environment before printing this e-mail.
>> >
>> > Bu elektronik posta ve onunla iletilen bütün dosyalar sadece göndericisi
>> > tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin kullanımı
>> > içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik postanın
>> > içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız
>> > kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz
>> gerekmektedir.
>> > FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu
>> > konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin
>> ne
>> > şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve
>> > saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca gönderen
>> > kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir.
>> > Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır.
>> > *
>> > This e-mail and any files transmitted with it are confidential and
>> intended
>> > solely for the use of the individual or entity to whom they are
>> addressed.
>> > If you are not the intended recipient you are hereby notified that any
>> > dissemination, forwarding, copying or use of any of the information is
>> > strictly prohibited, and the e-mail should immediately be deleted.
>> FOREKS
>> > makes
>> > no warranty as to the accuracy or completeness of any information
>> contained
>> > in this message and hereby excludes any liability of any kind for the
>> > information contained therein or for the information transmission,
>> > reception, storage or use of such in any way whatsoever. The opinions
>> > expressed in this message belong to sender alone and may not necessarily
>> > reflect the opinions of FOREKS.
>> > This e-mail has been scanned for all known computer viruses.
>> >
>>
>
>

-- 
 <http://www.foreksmobile.com/redirect.html>

P

Bu mesaji yazdirmadan önce çevreye olan sorumlulugumuzu bir kez daha 
düsünelim. 
Please consider the environment before printing this e-mail.

Bu elektronik posta ve onunla iletilen bütün dosyalar sadece göndericisi 
tarafından alması amaçlanan yetkili gerçek ya da tüzel kişinin kullanımı 
içindir. Eğer söz konusu yetkili alıcı değilseniz bu elektronik postanın 
içeriğini açıklamanız, kopyalamanız, yönlendirmeniz ve kullanmanız 
kesinlikle yasaktır ve bu elektronik postayı derhal silmeniz gerekmektedir. 
FOREKS bu mesajın içerdiği bilgilerin doğruluğu veya eksiksiz olduğu 
konusunda herhangi bir garanti vermemektedir. Bu nedenle bu bilgilerin ne 
şekilde olursa olsun içeriğinden, iletilmesinden, alınmasından ve 
saklanmasından sorumlu değildir. Bu mesajdaki görüşler yalnızca gönderen 
kişiye aittir ve FOREKS'in görüşlerini yansıtmayabilir. 
Bu e-posta bilinen bütün bilgisayar virüslerine karşı taranmıştır. 
* 
This e-mail and any files transmitted with it are confidential and intended 
solely for the use of the individual or entity to whom they are addressed. 
If you are not the intended recipient you are hereby notified that any 
dissemination, forwarding, copying or use of any of the information is 
strictly prohibited, and the e-mail should immediately be deleted. FOREKS makes 
no warranty as to the accuracy or completeness of any information contained 
in this message and hereby excludes any liability of any kind for the 
information contained therein or for the information transmission, 
reception, storage or use of such in any way whatsoever. The opinions 
expressed in this message belong to sender alone and may not necessarily 
reflect the opinions of FOREKS. 
This e-mail has been scanned for all known computer viruses.

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message