Problem with Hivemind proxies in Hibernate

View: New views
7 Messages — Rating Filter:   Alert me  

Problem with Hivemind proxies in Hibernate

by Stephane Decleire :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

================
Approach 1 :

I have two pojos : Parent and Child with there respective interface IParent and IChild.

public Interface IParent {
    public void setChild(IChild child);
    public IChild getChild();
}

In Hivemind, i have declared the services below :

  <service-point id="Parent" interface="IParent">
      <invoke-factory>
          <construct class="Parent">
                <set-object property="child" value="service:Child"/>
          </construct>
      </invoke-factory>
  </service-point>

  <service-point id="Child" interface="IChild">
      <invoke-factory>
          <construct class="Child"/>
      </invoke-factory>
  </service-point>


Hivemind works with interfaces so, in my code, i get a child from its parent :
    IChild child1 = parent.getChild();
Using this approach, i assume that child1 is in fact a Hivemind proxy on my child1 pojo (tell me if i'm wrong). So i can't convert IChild into Child ...

And then, i would like to persist my pojo child1 using a DAO :

public Interface IChildDao {
    public void persist(IChild child);
}

But Hibernate doesn't know how to persist IChild because what it really try to persist is a Hivemind proxy !

================
Approach 2 :

I know that Hibernate isn't able to persist the interface so the my DAO interface becomes :

public Interface IChildDao {
    public void persist(Child child);
}

So i need to get the instance of my pojo Child and not an interface from my pojo Parent :
    Child child1 = parent.getChild();

That's implies that my parent interface becomes :

public Interface IParent {
    public void setChild(Child child);
    public Child getChild();
}


And in this case Hivemind doesn't build my services !

I can't find the architecture which satisfies both framework ...
Any help would be very appreciated !

Stephane.

Re: Problem with Hivemind proxies in Hibernate

by Johan Lindquist :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Stephane,

My ask first what you exactly are trying to do?  What is the reason you
would like to define the parent/child object within Hivemind and then
persist them?

Are the parent/child objects not simple beans just now which (without
involving hivemind) can be stored/retrieved etc using the DAO service
(which is defined in Hivemind as a service)?

Cheers,

Johan

Stephane Decleire wrote:

> ================
> Approach 1 :
>
> I have two pojos : Parent and Child with there respective interface
> IParent and IChild.
>
> public Interface IParent {
>     public void setChild(IChild child);
>     public IChild getChild();
> }
>
> In Hivemind, i have declared the services below :
>
>   <service-point id="Parent" interface="IParent">
>       <invoke-factory>
>           <construct class="Parent">
>                 <set-object property="child" value="service:Child"/>
>           </construct>
>       </invoke-factory>
>   </service-point>
>
>   <service-point id="Child" interface="IChild">
>       <invoke-factory>
>           <construct class="Child"/>
>       </invoke-factory>
>   </service-point>
>
>
> Hivemind works with interfaces so, in my code, i get a child from its
> parent :
>     IChild child1 = parent.getChild();
> Using this approach, i assume that child1 is in fact a Hivemind proxy on
> my child1 pojo (tell me if i'm wrong). So i can't convert IChild into
> Child ...
>
> And then, i would like to persist my pojo child1 using a DAO :
>
> public Interface IChildDao {
>     public void persist(IChild child);
> }
>
> But Hibernate doesn't know how to persist IChild because what it really
> try to persist is a Hivemind proxy !
>
> ================
> Approach 2 :
>
> I know that Hibernate isn't able to persist the interface so the my DAO
> interface becomes :
>
> public Interface IChildDao {
>     public void persist(Child child);
> }
>
> So i need to get the instance of my pojo Child and not an interface from
> my pojo Parent :
>     Child child1 = parent.getChild();
>
> That's implies that my parent interface becomes :
>
> public Interface IParent {
>     public void setChild(Child child);
>     public Child getChild();
> }
>
> And in this case Hivemind doesn't build my services !
>
> I can't find the architecture which satisfies both framework ...
> Any help would be very appreciated !
>
> Stephane.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGlkJm1Tv8wj7aQ34RAh+yAJ40Nv8xouId2bclT0z5e/swnJJnGACbBtS2
n+vhFnCEXUC+LHDgURkiYYU=
=YE45
-----END PGP SIGNATURE-----

Re: Problem with Hivemind proxies in Hibernate

by jwcarman :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

If you require wiring of "beans" (not hivemind services), I'd look for
an aspect-oriented solution.  The spring framework supports this
through the @Configurable annotation.  It wouldn't be too tough to
come up with something like that for HiveMind.  I did some work
enabling AspectJ and HiveMind
(http://svn.javaforge.com/svn/hivemind/hivemind-aspectj).  That could
get you started.  Basically, what you need is an aspect that can
autowire a bean given a HiveMind registry.  The trick is setting the
registry property of the aspect, but that shoulnd't be too tough with
a custom factory of some sorts (like I do in hivemind-aspectj, but
you'd just set the registry property on the aspect instance).

On 7/12/07, Johan Lindquist <johan@...> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Stephane,
>
> My ask first what you exactly are trying to do?  What is the reason you
> would like to define the parent/child object within Hivemind and then
> persist them?
>
> Are the parent/child objects not simple beans just now which (without
> involving hivemind) can be stored/retrieved etc using the DAO service
> (which is defined in Hivemind as a service)?
>
> Cheers,
>
> Johan
>
> Stephane Decleire wrote:
> > ================
> > Approach 1 :
> >
> > I have two pojos : Parent and Child with there respective interface
> > IParent and IChild.
> >
> > public Interface IParent {
> >     public void setChild(IChild child);
> >     public IChild getChild();
> > }
> >
> > In Hivemind, i have declared the services below :
> >
> >   <service-point id="Parent" interface="IParent">
> >       <invoke-factory>
> >           <construct class="Parent">
> >                 <set-object property="child" value="service:Child"/>
> >           </construct>
> >       </invoke-factory>
> >   </service-point>
> >
> >   <service-point id="Child" interface="IChild">
> >       <invoke-factory>
> >           <construct class="Child"/>
> >       </invoke-factory>
> >   </service-point>
> >
> >
> > Hivemind works with interfaces so, in my code, i get a child from its
> > parent :
> >     IChild child1 = parent.getChild();
> > Using this approach, i assume that child1 is in fact a Hivemind proxy on
> > my child1 pojo (tell me if i'm wrong). So i can't convert IChild into
> > Child ...
> >
> > And then, i would like to persist my pojo child1 using a DAO :
> >
> > public Interface IChildDao {
> >     public void persist(IChild child);
> > }
> >
> > But Hibernate doesn't know how to persist IChild because what it really
> > try to persist is a Hivemind proxy !
> >
> > ================
> > Approach 2 :
> >
> > I know that Hibernate isn't able to persist the interface so the my DAO
> > interface becomes :
> >
> > public Interface IChildDao {
> >     public void persist(Child child);
> > }
> >
> > So i need to get the instance of my pojo Child and not an interface from
> > my pojo Parent :
> >     Child child1 = parent.getChild();
> >
> > That's implies that my parent interface becomes :
> >
> > public Interface IParent {
> >     public void setChild(Child child);
> >     public Child getChild();
> > }
> >
> > And in this case Hivemind doesn't build my services !
> >
> > I can't find the architecture which satisfies both framework ...
> > Any help would be very appreciated !
> >
> > Stephane.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFGlkJm1Tv8wj7aQ34RAh+yAJ40Nv8xouId2bclT0z5e/swnJJnGACbBtS2
> n+vhFnCEXUC+LHDgURkiYYU=
> =YE45
> -----END PGP SIGNATURE-----
>

Re: Problem with Hivemind proxies in Hibernate

by Stephane Decleire :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi Johan,

It's only a sample to show the problem i'm faced with.

In my real application, i've got a singleton pojo which is never persisted (here my parent) but this singleton is a kind of factory for over pojos (like the child) which are persisted using Hibernate.
By the way, i need Hivemind to generate those pojos because my children are themselves complex pojos which encapsulates other pojos defined in Hivemind.

Stephane

Johan Lindquist a écrit :
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Stephane,

My ask first what you exactly are trying to do?  What is the reason you
would like to define the parent/child object within Hivemind and then
persist them?

Are the parent/child objects not simple beans just now which (without
involving hivemind) can be stored/retrieved etc using the DAO service
(which is defined in Hivemind as a service)?

Cheers,

Johan

Stephane Decleire wrote:
  
================
Approach 1 :

I have two pojos : Parent and Child with there respective interface
IParent and IChild.

public Interface IParent {
    public void setChild(IChild child);
    public IChild getChild();
}

In Hivemind, i have declared the services below :

  <service-point id="Parent" interface="IParent">
      <invoke-factory>
          <construct class="Parent">
                <set-object property="child" value="service:Child"/>
          </construct>
      </invoke-factory>
  </service-point>

  <service-point id="Child" interface="IChild">
      <invoke-factory>
          <construct class="Child"/>
      </invoke-factory>
  </service-point>


Hivemind works with interfaces so, in my code, i get a child from its
parent :
    IChild child1 = parent.getChild();
Using this approach, i assume that child1 is in fact a Hivemind proxy on
my child1 pojo (tell me if i'm wrong). So i can't convert IChild into
Child ...

And then, i would like to persist my pojo child1 using a DAO :

public Interface IChildDao {
    public void persist(IChild child);
}

But Hibernate doesn't know how to persist IChild because what it really
try to persist is a Hivemind proxy !

================
Approach 2 :

I know that Hibernate isn't able to persist the interface so the my DAO
interface becomes :

public Interface IChildDao {
    public void persist(Child child);
}

So i need to get the instance of my pojo Child and not an interface from
my pojo Parent :
    Child child1 = parent.getChild();

That's implies that my parent interface becomes :

public Interface IParent {
    public void setChild(Child child);
    public Child getChild();
}

And in this case Hivemind doesn't build my services !

I can't find the architecture which satisfies both framework ...
Any help would be very appreciated !

Stephane.
    
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGlkJm1Tv8wj7aQ34RAh+yAJ40Nv8xouId2bclT0z5e/swnJJnGACbBtS2
n+vhFnCEXUC+LHDgURkiYYU=
=YE45
-----END PGP SIGNATURE-----
  

Re: Problem with Hivemind proxies in Hibernate

by Stephane Decleire :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Why would you use AOP in such a case James ?
Isn't hivemind able to wire beans ? After all, a bean is no more than a pojo ...

Stephane

James Carman a écrit :
If you require wiring of "beans" (not hivemind services), I'd look for
an aspect-oriented solution.  The spring framework supports this
through the @Configurable annotation.  It wouldn't be too tough to
come up with something like that for HiveMind.  I did some work
enabling AspectJ and HiveMind
(http://svn.javaforge.com/svn/hivemind/hivemind-aspectj).  That could
get you started.  Basically, what you need is an aspect that can
autowire a bean given a HiveMind registry.  The trick is setting the
registry property of the aspect, but that shoulnd't be too tough with
a custom factory of some sorts (like I do in hivemind-aspectj, but
you'd just set the registry property on the aspect instance).

On 7/12/07, Johan Lindquist johan@... wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi Stephane,

My ask first what you exactly are trying to do?  What is the reason you
would like to define the parent/child object within Hivemind and then
persist them?

Are the parent/child objects not simple beans just now which (without
involving hivemind) can be stored/retrieved etc using the DAO service
(which is defined in Hivemind as a service)?

Cheers,

Johan

Stephane Decleire wrote:
> ================
> Approach 1 :
>
> I have two pojos : Parent and Child with there respective interface
> IParent and IChild.
>
> public Interface IParent {
>     public void setChild(IChild child);
>     public IChild getChild();
> }
>
> In Hivemind, i have declared the services below :
>
>   <service-point id="Parent" interface="IParent">
>       <invoke-factory>
>           <construct class="Parent">
>                 <set-object property="child" value="service:Child"/>
>           </construct>
>       </invoke-factory>
>   </service-point>
>
>   <service-point id="Child" interface="IChild">
>       <invoke-factory>
>           <construct class="Child"/>
>       </invoke-factory>
>   </service-point>
>
>
> Hivemind works with interfaces so, in my code, i get a child from its
> parent :
>     IChild child1 = parent.getChild();
> Using this approach, i assume that child1 is in fact a Hivemind proxy on
> my child1 pojo (tell me if i'm wrong). So i can't convert IChild into
> Child ...
>
> And then, i would like to persist my pojo child1 using a DAO :
>
> public Interface IChildDao {
>     public void persist(IChild child);
> }
>
> But Hibernate doesn't know how to persist IChild because what it really
> try to persist is a Hivemind proxy !
>
> ================
> Approach 2 :
>
> I know that Hibernate isn't able to persist the interface so the my DAO
> interface becomes :
>
> public Interface IChildDao {
>     public void persist(Child child);
> }
>
> So i need to get the instance of my pojo Child and not an interface from
> my pojo Parent :
>     Child child1 = parent.getChild();
>
> That's implies that my parent interface becomes :
>
> public Interface IParent {
>     public void setChild(Child child);
>     public Child getChild();
> }
>
> And in this case Hivemind doesn't build my services !
>
> I can't find the architecture which satisfies both framework ...
> Any help would be very appreciated !
>
> Stephane.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGlkJm1Tv8wj7aQ34RAh+yAJ40Nv8xouId2bclT0z5e/swnJJnGACbBtS2
n+vhFnCEXUC+LHDgURkiYYU=
=YE45
-----END PGP SIGNATURE-----


Re: Problem with Hivemind proxies in Hibernate

by jwcarman :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

I mean beans that HiveMind isn't instantiating (like stuff Hibernate
creates from database rows).  Yes, HiveMind is for wiring up a web of
pojos, but those pojos are typically services.  Stuff that gets stored
in the database isn't really what you'd want defined in your HiveMind
registry.

On 7/12/07, Stephane Decleire <sdecleire@...> wrote:

>
>  Why would you use AOP in such a case James ?
>  Isn't hivemind able to wire beans ? After all, a bean is no more than a
> pojo ...
>
>  Stephane
>
>  James Carman a écrit :
> If you require wiring of "beans" (not hivemind services), I'd look for
>  an aspect-oriented solution.  The spring framework supports this
>  through the @Configurable annotation.  It wouldn't be too tough to
>  come up with something like that for HiveMind.  I did some work
>  enabling AspectJ and HiveMind
>  (http://svn.javaforge.com/svn/hivemind/hivemind-aspectj).
> That could
>  get you started.  Basically, what you need is an aspect that can
>  autowire a bean given a HiveMind registry.  The trick is setting the
>  registry property of the aspect, but that shoulnd't be too tough with
>  a custom factory of some sorts (like I do in hivemind-aspectj, but
>  you'd just set the registry property on the aspect instance).
>
>  On 7/12/07, Johan Lindquist <johan@...> wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
>  Hash: SHA1
>
>  Hi Stephane,
>
>  My ask first what you exactly are trying to do?  What is the reason you
>  would like to define the parent/child object within Hivemind and then
>  persist them?
>
>  Are the parent/child objects not simple beans just now which (without
>  involving hivemind) can be stored/retrieved etc using the DAO service
>  (which is defined in Hivemind as a service)?
>
>  Cheers,
>
>  Johan
>
>  Stephane Decleire wrote:
>  > ================
>  > Approach 1 :
>  >
>  > I have two pojos : Parent and Child with there respective interface
>  > IParent and IChild.
>  >
>  > public Interface IParent {
>  >     public void setChild(IChild child);
>  >     public IChild getChild();
>  > }
>  >
>  > In Hivemind, i have declared the services below :
>  >
>  >   <service-point id="Parent" interface="IParent">
>  >       <invoke-factory>
>  >           <construct class="Parent">
>  >                 <set-object property="child" value="service:Child"/>
>  >           </construct>
>  >       </invoke-factory>
>  >   </service-point>
>  >
>  >   <service-point id="Child" interface="IChild">
>  >       <invoke-factory>
>  >           <construct class="Child"/>
>  >       </invoke-factory>
>  >   </service-point>
>  >
>  >
>  > Hivemind works with interfaces so, in my code, i get a child from its
>  > parent :
>  >     IChild child1 = parent.getChild();
>  > Using this approach, i assume that child1 is in fact a Hivemind proxy on
>  > my child1 pojo (tell me if i'm wrong). So i can't convert IChild into
>  > Child ...
>  >
>  > And then, i would like to persist my pojo child1 using a DAO :
>  >
>  > public Interface IChildDao {
>  >     public void persist(IChild child);
>  > }
>  >
>  > But Hibernate doesn't know how to persist IChild because what it really
>  > try to persist is a Hivemind proxy !
>  >
>  > ================
>  > Approach 2 :
>  >
>  > I know that Hibernate isn't able to persist the interface so the my DAO
>  > interface becomes :
>  >
>  > public Interface IChildDao {
>  >     public void persist(Child child);
>  > }
>  >
>  > So i need to get the instance of my pojo Child and not an interface from
>  > my pojo Parent :
>  >     Child child1 = parent.getChild();
>  >
>  > That's implies that my parent interface becomes :
>  >
>  > public Interface IParent {
>  >     public void setChild(Child child);
>  >     public Child getChild();
>  > }
>  >
>  > And in this case Hivemind doesn't build my services !
>  >
>  > I can't find the architecture which satisfies both framework ...
>  > Any help would be very appreciated !
>  >
>  > Stephane.
>  -----BEGIN PGP SIGNATURE-----
>  Version: GnuPG v1.4.6 (GNU/Linux)
>  Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFGlkJm1Tv8wj7aQ34RAh+yAJ40Nv8xouId2bclT0z5e/swnJJnGACbBtS2
>  n+vhFnCEXUC+LHDgURkiYYU=
>  =YE45
>  -----END PGP SIGNATURE-----
>
>

Re: Problem with Hivemind proxies in Hibernate

by Stephane Decleire :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks James, i will cast an eye on that during my vacations ;-)

James Carman a écrit :
I mean beans that HiveMind isn't instantiating (like stuff Hibernate
creates from database rows).  Yes, HiveMind is for wiring up a web of
pojos, but those pojos are typically services.  Stuff that gets stored
in the database isn't really what you'd want defined in your HiveMind
registry.

On 7/12/07, Stephane Decleire sdecleire@... wrote:

 Why would you use AOP in such a case James ?
 Isn't hivemind able to wire beans ? After all, a bean is no more than a
pojo ...

 Stephane

 James Carman a écrit :
If you require wiring of "beans" (not hivemind services), I'd look for
 an aspect-oriented solution.  The spring framework supports this
 through the @Configurable annotation.  It wouldn't be too tough to
 come up with something like that for HiveMind.  I did some work
 enabling AspectJ and HiveMind
 (http://svn.javaforge.com/svn/hivemind/hivemind-aspectj).
That could
 get you started.  Basically, what you need is an aspect that can
 autowire a bean given a HiveMind registry.  The trick is setting the
 registry property of the aspect, but that shoulnd't be too tough with
 a custom factory of some sorts (like I do in hivemind-aspectj, but
 you'd just set the registry property on the aspect instance).

 On 7/12/07, Johan Lindquist johan@... wrote:

-----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1

 Hi Stephane,

 My ask first what you exactly are trying to do?  What is the reason you
 would like to define the parent/child object within Hivemind and then
 persist them?

 Are the parent/child objects not simple beans just now which (without
 involving hivemind) can be stored/retrieved etc using the DAO service
 (which is defined in Hivemind as a service)?

 Cheers,

 Johan

 Stephane Decleire wrote:
 > ================
 > Approach 1 :
 >
 > I have two pojos : Parent and Child with there respective interface
 > IParent and IChild.
 >
 > public Interface IParent {
 >     public void setChild(IChild child);
 >     public IChild getChild();
 > }
 >
 > In Hivemind, i have declared the services below :
 >
 >   <service-point id="Parent" interface="IParent">
 >       <invoke-factory>
 >           <construct class="Parent">
 >                 <set-object property="child" value="service:Child"/>
 >           </construct>
 >       </invoke-factory>
 >   </service-point>
 >
 >   <service-point id="Child" interface="IChild">
 >       <invoke-factory>
 >           <construct class="Child"/>
 >       </invoke-factory>
 >   </service-point>
 >
 >
 > Hivemind works with interfaces so, in my code, i get a child from its
 > parent :
 >     IChild child1 = parent.getChild();
 > Using this approach, i assume that child1 is in fact a Hivemind proxy on
 > my child1 pojo (tell me if i'm wrong). So i can't convert IChild into
 > Child ...
 >
 > And then, i would like to persist my pojo child1 using a DAO :
 >
 > public Interface IChildDao {
 >     public void persist(IChild child);
 > }
 >
 > But Hibernate doesn't know how to persist IChild because what it really
 > try to persist is a Hivemind proxy !
 >
 > ================
 > Approach 2 :
 >
 > I know that Hibernate isn't able to persist the interface so the my DAO
 > interface becomes :
 >
 > public Interface IChildDao {
 >     public void persist(Child child);
 > }
 >
 > So i need to get the instance of my pojo Child and not an interface from
 > my pojo Parent :
 >     Child child1 = parent.getChild();
 >
 > That's implies that my parent interface becomes :
 >
 > public Interface IParent {
 >     public void setChild(Child child);
 >     public Child getChild();
 > }
 >
 > And in this case Hivemind doesn't build my services !
 >
 > I can't find the architecture which satisfies both framework ...
 > Any help would be very appreciated !
 >
 > Stephane.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGlkJm1Tv8wj7aQ34RAh+yAJ40Nv8xouId2bclT0z5e/swnJJnGACbBtS2
 n+vhFnCEXUC+LHDgURkiYYU=
 =YE45
 -----END PGP SIGNATURE-----