An Introduce to NHibernate PART 1 J LOGO
An Introduce to NHibernate PART 1 J九日 LOGO
内容 v SQL Helper vs. NHibernate v Object-Relational Mapping § 关系模型 § �什么使用 ORM? v Hibernate 含� v NHibernate Mapping v 核心�型 v Exercise: Ex. Blogger
Object-Relational Mapping Relational Model Relation
Object-Relational Mapping Why ORM ? Productivity and maintainability Modeling mismatch ORM Performance Database independency
Hibernate: a Java ORM Framework 对象 Hibernate 关系 活动的熊 Hibernate 冬眠的熊 关注点 Java : e t a n r Hibe NET. : e t a n NHiber 计 设 的 象 对 注 关 更 者 让开发 !
NHibernate Mapping 嵌入的资源
Core NHibernate Types Build (Once) Configuration ISession. Factory Open Session ISession …… Create IQuery HQL ISQLQuery SQL ICriteria IQuery. Over Dynamically IQueryable LINQ
Core NHibernate Types NHibernate. Cfg. Configuration // 配置 Configuration �象 Configuration Configure() Configuration Configure(string file. Name) Configuration Configure(Assembly assembly, string resource. Name) Configuration Configure(Xml. Reader text. Reader) // 构建 ISession. Factory 的�例 ISession. Factory Build. Session. Factory() 配 置 文 件
Core NHibernate Types NHibernate. ISession. Factory //Create ISession a database connection and open a <c>ISession</c> on it Open. Session() Open. Session(IDb. Connection conn) Open. Session(IInterceptor session. Local. Interceptor) NHibernate. ISession object Save(object obj) void Delete(object obj) void Update(object obj) ICriteria Create. Criteria<T>() IQuery. Over<T, T> Query. Over<T>() IQuery Create. Query(string query. String) ISQLQuery Create. SQLQuery(string query. String) IQueryable<T> Query<T>(this ISession session)
Core NHibernate Types ISession查询示例:查询所有用户 Criteria Query Session. Create. Criteria<User>(). List<User>(); Strong-typed Criteria Query Session. Query. Over<User>(). List<User>(); NHibernate Linq Query Session. Query<User>(). To. List<User>(); Query with Hibernate Query Language Session. Create. Query("from User"). List<User>(); Native SQL Query Session. Create. SQLQuery("select * from Users"). Set. Result. Transformer(Transformers. Alias. To. Bean<User>()). List<User>();
Exercise: Ex. Blogger Visitor Blog Register Create User Create Ubiquitous Language 领域通用语言 Comment Post
Exercise: Ex. Blogger IRepository<T> int Save(T entity); void Update(T entity); T Get(int id); IList<T> Get. All(); void Delete(int id); 通用持久化方法 IUsers. Repository: IRepository<User> IBlogs. Repository: IRepository<Blog> 自定义持久化方法 IPosts. Repository: IRepository<Post> IComments. Repository: IRepository<Comment>
Exercise: Ex. Blogger �建并存�用� var user = Blog. Registrar. Get. Instance(). Create. User(“Mike", "pwd"); var id = _users. Repository. Save(user); �取所有用� var users = _users. Repository. Get. All();
Exercise: Ex. Blogger �建并存�博客 var blog = user. Create. Blog("foo", "bar"); _blogs. Repository. Save(blog); �建并存�帖子 var post = user. Create. Post("Hello World", "This my first post!"). On(blog); _posts. Repository. Save(post);
Exercise: Ex. Blogger �建并存��� var comment = user. Create. Comment("沙� "). On(post); _comments. Repository. Save(comment); �取��列表:�装自定�的 DTO
Thanks ! 示例代码SVN地址: http: //ex-blogger. googlecode. com/svn/trunk/ 推荐资料: 李永京博客 http: //www. cnblogs. com/lyj/ 领域驱动设计精简版 http: //www. infoq. com/cn/minibooks/domain-driven-design-quickly
- Slides: 23