Vezano za ovo drugo, mozes koristiti nhibernate O/R mapper -
http://www.hibernate.org.
Ukratko (jedan od mogucih nacina):
1. Definises klase na Business logic layeru - mozes dodati kakvo zelis ponasanje i podatke klasama i imati pravi domain model
2. Definises tabele koje ce drzati podatke koje zelis perzistirati (mozes mapirati naslijedjivanje i sl. stvari - tabela koja drzi podatke osnovne klase, te tabela za izvedene i sl.)
3. Na data access layeru napravis mapping fajlove (npr. ime_klase.hbm.xml) i u njima definises koje polje iz baze se mapira na koji property od objekta - nije nuzno da mapiras sve podatke
4. Koristis SaveOrUpdate(object), Load(id, type), CreateQuery i sl. metode na nhibernate session da bi radio s objektima (prouci dokumentaciju i totoriale da bi dobio kompletnu sliku)