[Opensim-dev] nhibernate progress, baby steps

jon cundill jcundill at gmail.com
Thu Apr 3 18:01:30 UTC 2008


Hi

Can't you just use access="field" in your hbms to avoid the need to
modify the OpenSim classes?

NHibernate supports it IIRC

Jonc



On 03/04/2008, Sean Dague <sean at dague.net> wrote:
> I've starting baby steps in building an OpenSim.Data.NHibernate driver
>  (I'm very close to getting NHiberate + Mono + SQLite working).  I did
>  look at Impalah's work here, but that created a lot of intermediary
>  objects that I wanted to avoid.  After chatting with Stephan yesterday,
>  wanted to give people a flavor of how this works, as we'll need to make
>  a few changes in the base to make our objects NHibernate friendly.
>
>  It turns out the NHibernate + Mono + SQLite is actually the hardest
>  thing to get working, as NHibernate 1.2.1 doesn't have an SQLite driver
>  that works with Mono.  Step one was to write one, which I've done.  Once
>  this is proofed out a bit more we'll need to do an import of NHibernate
>  1.2.1 branch into opensim-libs and add in the driver.  I'll also be
>  submitting the driver upstream to NHibernate in a hopes we could get a
>  1.2.2 with it included so we don't have to keep our own tree here.
>
>  My first test case here is Assets.  Asset storage is easy, as we just
>  store AssetBase.  It's 8 fields, which include an LLUUID, a Blob, and
>  some other types, which also makes it good at testing we can do all the
>  types we need to do.
>
>  AssetBase is what I call a "naked object".  Today all access is done via
>  direct attribute modification, which is actually worst practice in the
>  area.  For NHibernate to work correctly we need to have all our storable
>  data objects use Properties for data modification.  Honestly, we should
>  have been doing this anyway.  We're going to break Grid Comms
>  compatibility when we make this change, because the default
>  serialization of AssetBase will change.
>
>  Once this is done you create a mapping file.  This is an embedded
>  resource of OpenSim.Data.NHibernate.  The AssetBase mapping file is
>  here:
>  http://opensimulator.org/hg/opensim-trunk/file/8566c030a9bf/OpenSim/Data/NHibernate/Resources/AssetBase.hbm.xml
>
>  http://opensimulator.org/hg/opensim-trunk/file/8566c030a9bf/OpenSim/Data/NHibernate/NHibernateAssetData.cs
>  is the Asset Store work in progress.  It should just save assets right
>  now (though there is a transaction bug with sqlite I need to sort out).
>
>  In order to have this code work for a different database you just change
>  the driver declaration lines in 60 - 65 (can be done via runtime
>  config).  Any of the ~20 databases supported by NHibernate could then be
>  used instead.  Lines 68 - 71 gives you automatic db creation.  It does a
>  drop/create each time it is run, so is something we'll only want for
>  initial create, not used every time.
>
>  Right now I'm fighting with a transaction bug with SQLite, which I've
>  got a few ideas on how to get around.  Once that's fixed on store, I'll
>  fill out the rest of the asset implementation.  My goal is to be running
>  my Asset db on NHibernate + SQLite by end of the week, and to have all
>  that work in tree so others can kick the tires.
>
>  There are plenty of unanswered questions here, but having finally gotten
>  my head wrapped around the space, I really like the direction this is
>  headed.  The fact that NHibernate is also an actively developed project,
>  and things like automatic schema upgrades are coming in the future (they
>  already exist in Hibernate, the java project that NHibernate is based
>  on), is something we'll definitely want to take advantage of.
>
>      -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.
>  __________________________________________________________________
>
> -----BEGIN PGP SIGNATURE-----
>  Version: GnuPG v1.4.6 (GNU/Linux)
>
>  iD8DBQFH9NCZSamXem9TdyYRAk2yAKCKdwxuXyJ0GceLwewnx3jzJDq7TgCggQX0
>  o+soq71Ud8uBKav5/i9JaNY=
>  =a5fz
>  -----END PGP SIGNATURE-----
>
> _______________________________________________
>  Opensim-dev mailing list
>  Opensim-dev at lists.berlios.de
>  https://lists.berlios.de/mailman/listinfo/opensim-dev
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Assets.hbm.xml
Type: text/xml
Size: 965 bytes
Desc: not available
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20080403/5f410706/attachment-0001.xml>


More information about the Opensim-dev mailing list