[Opensim-dev] nhibernate progress, baby steps

Impalah impalah at gmail.com
Fri Apr 4 08:23:33 UTC 2008


Hello everyone:

I hadn't any time to "nhibernating" opensim (as I told months ago) but the
code I did is there.

Sean I know my code may be "complicated" when starting, that's for the use
of factories and DAO's. My intention was to convert every nhibernate object
in a DAO, so they will know how to save, update, delete... themselves (a
simple call to AssetDAO.Save(id) for example). Well, for testing your
approach is better if you don't have enough experience with hibernate.

Second, my approach was to not modify the current objects, mapping them to
nhibernate classes. Of course the better idea is to use the
libsl-hibernatized objects (with getters and setters) throughout the code
w/o intermediate mapping classes. I think the advantages of having
"intelligent" getters and setters where we could put validations, or even
classes than can serialize (to XML or whatever) are more than the "overload
and memory use" disadvantages.

Third (fuck, I'm making a list) the ID question: do not use the "auto" ids
(generated by nhibernate). Let opensim create them. The overhead of letting
hibernate create these ids is higher than the CoCreateId call opensim does.
If you want to use a byte array for storing ids (due to better performance),
use it; hibernate hasn't any problem with it (the "recommended id" is an
integer because hibernate is often used in "enterprise environments", there
isn't any other reason).

Four, I tested my previous code (apart from .NET) with mono + SQLite +
nhibernate w/o "touching" anything (I used the included sqlite drivers
included with opensim). I can't help you here.

Five, instead of using the hbm.xml files you can use mapping attributes
(that was the point where I stopped). The same with the hibernate.cfg.xml,
you can set its properties "programatically". The advantages: if you change
one data object you don't have to change the xml file too; and less files in
the bin directory as well.

Six, you can generate the db schemma automatically (I think I provided an
example), it's db independent. If you are using mapping attributes instead
of hbm.xml just serialize the objects (there are some examples looking for
"nhibernate mapping attributes" in google). It works...

Seven, sorry. I wanted to help you developing a hibernate base but I had
only 1 "relatively" free week to did it. Maybe in the future.

Greetings and good luck

Impalah "busy guy" Shenzhou




2008/4/3, Stefan Andersson <stefan at tribalmedia.se>:
>
> Yeah, well; I'm not saying it IS, just that we need to check on it.
>
> I glimpsed that as I was trying to find out what the 'best practice' for
> storing guids in MySQL databases was; I actually didn't find any good info
> on that.
>
> /Stefan
>
>
> ------------------------------
>
> > Subject: RE: [Opensim-dev] nhibernate progress, baby steps
> > From: brianw at terrabox.com
> > To: stefan at tribalmedia.se
> > CC: opensim-dev at lists.berlios.de
> > Date: Thu, 3 Apr 2008 13:04:37 -0500
> >
> >
> > Ouch. That's not good.
> >
> >
> > On Thu, 2008-04-03 at 19:55 +0200, Stefan Andersson wrote:
> > > It seems the MySQL connector for .net assumes the db field is a
> > > string for its internal MySqlDataReader.GetGuid() implementation.
> > >
> > > (I could have been looking at source for an old revision of the
> > > connector, but that needs to be checked out anyway)
> > >
> > > So, that might mean that going binary could wreck stuff like
> > > nhibernate, if that's using a DataReader.
> > >
> > > Best,
> > > /Stefan
> > >
> > >
> > >
> > >
> > >
> > > ______________________________________________________________________
> > >
> > > > Date: Thu, 3 Apr 2008 13:49:03 -0400
> > > > From: sean at dague.net
> > > > To: brianw at terrabox.com; opensim-dev at lists.berlios.de
> > > > Subject: Re: [Opensim-dev] nhibernate progress, baby steps
> > > >
> > > > On Thu, Apr 03, 2008 at 11:19:58AM -0500, Brian Wolfe wrote:
> > > > > *nod* sounds good to me as well. I just have one request since
> > > we'll be
> > > > > changing things up at this level. Can we shoot for UUIDs being
> > > stored as
> > > > > a byte[16] in order to gain the 10x speedup in SQL
> > > indexing/storage vs
> > > > > string(32|36) ?
> > > >
> > > > That's definitely an option. It did however seem like there was some
> > > > speedup on LLUUID processing if we kept strings. I'm not sure where
> > > the
> > > > two end up colliding on speedup effects.
> > > >
> > > > -Sean
> > > >
> > > > --
> > > > __________________________________________________________________
> > > >
> > > > Sean Dague Mid-Hudson Valley
> > > > sean at dague dot net Linux Users Group
> > > > http://dague.net http://mhvlug.org
> > > >
> > > > There is no silver bullet. Plus, werewolves make better neighbors
> > > > than zombies, and they tend to keep the vampire population down.
> > > > __________________________________________________________________
> > >
> >
>
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20080404/009b2f89/attachment-0001.html>


More information about the Opensim-dev mailing list