Monday, November 10, 2008

Байт-код провайдеры в NHibernate 2.1

Один из авторов NHibernate Fabio Maulo сообщил в своем блоге, что на данный момент в trunk внесены изменения позволяющие выбирать между несколькими прокси-генераторами. До сих пор использовался Casle.DynamicProxy2, теперь его монополия нарушена LinFu, который по словам автора(и по словам Fabio, кстати, тоже) быстрее предыдущего, планируется, так же, возможность подключения фабрики прокси из Spring.NET.

В конфигурацию session-factory добавлен новый обязательный параметр - proxyfactory.factory_class:

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
<session-factory name="YourAppName">
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="connection.connection_string">
Server=(local);initial catalog=nhibernate;Integrated Security=SSPI
</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
</session-factory>
</hibernate-configuration>



Для тех кто использует в своих приложения IOC контейнер Windsor или реализацию Active Record для NHibernate от Castle, тем благоразумнее остаться с DynamicProxy2, остальным же можно выбирать. Возможность заменять такую важную деталь(как генерация прокси) очень важна для проекта NHibernate, и еще раз подтверждает его расширяемость. Поскриптум Fabio ))): "Let me say that something strange happened in my heart when I had remove the last reference to Castle in NH-Core and NH-Tests."

4 comments:

  1. Спасибо за отличные новости.
    Про LinFu - однозначно за, про фабрику динапроксей из spring.net - спорно, потому как не "спрингом единым" :)

    Хотя, да, сам их именно в связке и юзаю.

    ReplyDelete
  2. а где можно подробнее узнать для чего нужны прокси-генераторы для nHibernate?

    ReplyDelete
  3. Здесь: http://nhforge.org/doc/nh/en/index.html

    ReplyDelete