Take a look at the solutions presented using the NHibernate Validator
(from the NH Contrib project):

http://forum.hibernate.org/viewtopic.php?p=2394663

On Feb 15, 2:06 am, DJ <[email protected]> wrote:
> I have a best-practice question. I'm using NHiberate 2.0.1 with Burrow
> and ASP.NET.
>
> Say I have a User domain class that has a rule that no two users with
> the same username may exist. To enforce this in the database I add a
> unique constraint to the "username" column. I realize that I need to
> enforce this in my business logic as well.
>
> What are some valid ways this can be handled? I've considered:
>
> 1. Injecting a DAO instance into User objects and having them call a
> DAO method that checks for an existing User with the same username. I
> assume a problem here is the off chance of a race condition where the
> DAO checks for a duplicate, doesn't find one, and then before the
> database update happens, someone else inserts a User with that name.
>
> 2. Catching the exception raised by NHiberate when the database
> constraint is violated. My problem with this approach is since Burrow
> is flushing the session at the end of the HTTP request, the only
> option I think I have is to catch it in the global exception handler
> for the web application and redirect to an error page. I won't be able
> to give any specific error message on the page they were working with.
> Also, some of my business logic is now expressed in my web application
> not in my domain.
>
> In addition, is it normal/acceptable to enforce business logic that
> requires looking at the database in a domain class itself like in
> option 1?
>
> Thanks for any help, ideas, or shoves in the right direction.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to