Skippov blog

Pre Vas. Pre mna. Pre dalsie generacie.

Spring.NET a podpora NHibernate

Nedavno sa mi pod ruky dostala celkom nahodou (trosku starsia) prezentacia Thomasa Hauga o kniznici Spring.NET;
http://www.springframework.net/presentations/SpringNet-ThomasHaug-2008.pdf

Vacsina pouzivatelov vratane mna najviac vyuziva core functionalitu a to IoC kontajner. Na co som bol zvedavy, je podpora inych kniznic a toolov, najma NHibernate.

Potesila ma podpora DAO patternu, nasledujuci priklad priamo z prezentacie:

using Spring.Data.NHibernate.Generic.Support;
...
class NHibernatePersonDAO : HibernateDaoSupport, IPersonDAO {
  public void SavePerson(SpringBeispiel.Entities.Person person){
    //wirft eine Spring.Dao.DataAccessException
    //falls ein Fehler auftritt
    this.HibernateTemplate.Save(person);
  } 

  public IList<Person> ListPersons() {
    return HibernateTemplate.LoadAll<Person>;
  }
  public void UpdatePerson(Person person) {
    this.HibernateTemplate.Update(person);
  }
}

A priklad na servis s podporou transakcii:

using Spring.Transaction.Interceptor;
...
class PersonServiceImpl : IPersonService {
 ...
 [Transaction(Timeout=1000)]
 public void RenameLastName(Person p1, Person p2, string lastName) {
  p1.Nachname = lastName;
  p2.Nachname = lastName;
  this.personDAO.UpdatePerson(p1);
  this.personDAO.UpdatePerson(p2);
 }
 [Transaction(ReadOnly=true)]
 public IList<Person> ListPersons()
 {
  return this.personDAO.ListPersons();
 }
}

Je dobre vediet, ze spring so sebou prinasa aj takuto existujucu infrastrukturu. Vedel by som si predstavit jej vyuzitie aj pri implementacii Repository design patternu zalozenej na NH, kde by sme sa vyhli vyvoju+testovaniu infrastruktury ziskavania session a podporu transakcii. Vyskusam a dam vediet.

pre pouzivatelov springu, nezabudnite checknut instalacny .zip archiv a nainstlaovat podporu pre VS, Resharper, xsd schemy, atd.

Bookmark and Share