Как способ узнать NHibernate, я придумал небольшой проект, который включает типичную систему аутентификации пользователей &. Это заставило меня задуматься о том, как это будет сделано. Я быстро собрал следующие классы и сопоставил их с базой данных, которая работала после большого количества проб и ошибок. Я закончил с схемой базы данных из трех таблиц со многими и многими таблицами ассоциаций между таблицами User и Group.NHibernate и крупные коллекции
public class User
{
public virtual string Username { get; set; }
public virtual byte[] PasswordHash { get; set; }
public virtual IList<Group> Groups { get; set; }
}
public class Group
{
public virtual string Name { get; set; }
public virtual IList<User> Users { get; set; }
}
Мой вопрос касается масштабируемости и потенциальных характеристик такого класса класса. Если бы это было в производственной системе с десятками тысяч пользователей, даже при ленивой загрузке в коллекции пользователей группы, любой вызов свойства Groups мог бы занести потенциально ОГРОМНУЮ систему извлечения данных.
Как NHibernate справится с таким сценарием и как я могу улучшить свой дизайн?
Я думал, что одной из особенностей убийцы ORM было незнание персистентности. Если бы я должен был создать метод GetUsers (...) в классе Group, ему нужно было бы знать, как получить пользователей, что, безусловно, является постоянством. Аналогично, если я хотел вызвать myGroup.AddUser (...), если мой класс группы не поддерживает коллекцию пользователей, где она помещает пользователя? – 2009-10-02 18:55:50