Я беру на себя проект, который был написан сторонними консультантами, которые уже ушли.Spring.Net HibernateTemplate.Execute Уточнение
Я родом из EF backgournd. У одного из классов DAO есть следующее, на что мне очень сложно разобраться в деталях того, что именно происходит шаг за шагом. Если кто-нибудь может любезно помочь мне понять, что этот раздел кода будет высоко оценен.
return HibernateTemplate.Execute(
delegate(ISession hbSession) // <<--What is this code actually trying to do?
{
string queryText = "from {0} x where x.Code = :Code";
queryText = string.Format(queryText, typeof(Product));
IQuery query = hbSession.CreateQuery(queryText);
query.SetParameter("Code", productCode);
query.SetCacheable(true);
query.SetCacheRegion(CoreCacheConstants.ProductQueryCacheRegion); // <-- What is this code trying to do.
var fund = query.UniqueResult(); // <-- Is this similar to DISTINCT keyword in LINQ?
if (fund == null)
throw new ArgumentException(String.Format("No product found with productcode: {0}", productCode:));
NHibernateUtil.Initialize(((Product)Product).Details); // <--What is this code trying to do. And where is the execute method for above queries.
return fund;
}
) as Product
В основном я смущен делегатом и почему делегат используется вместо простого запроса к базе данных. И в чем преимущество вышеупомянутого подхода.
Кроме того, я не вижу никакого nMibernate ORM-сопоставления xml. Требуется ли Spring.NET для сопоставления файлов для передачи данных из/в источник данных? Для слов, как ISession знает, к какой базе данных подключиться, и какую таблицу использовать и т. Д.
@Marjin, спасибо за вашу помощь. Как вы узнали Spring.net, есть ли книга, которую вы бы порекомендовали? Документация Spring.net предполагает, что читатель знает обратный вызов, делегирует вызовы и т. Д. Я ищу 101 с описанием. –
Также, что является целью этого запроса IQuery query = hbSession.CreateQuery (queryText). другими словами, зачем ставить сеанс вместо прямого запроса db. Я не вижу преимущества хранения самого запроса в сеансе. –
К сожалению, я не могу рекомендовать вам книгу на Spring.Net. Фактически, я узнал больше всего из документов, форума spring.net и исходного кода.Для общего понимания весеннего каркаса [Spring in Action] (http://www.manning.com/walls3/) - хорошая книга, но для Spring для Java. – Marijn