Nhibernate 3 Beginner's Guide(English, Undefined, Cure Aaron) | Zipri.in
Nhibernate 3 Beginner's Guide(English, Undefined, Cure Aaron)

Nhibernate 3 Beginner's Guide(English, Undefined, Cure Aaron)

Quick Overview

Rs.999 on FlipkartBuy
Product Price Comparison
What you will learn from this book     Create a domain model     Learn different techniques to map the domain model to the underlying database     Build the database from your model automatically     Use session and transactions to persist and retrieve data     Efficiently query the database by using LINQ to NHibernate and HQL     Configure your system for use of NHibernate in a clear and concise way     Write unit and integration tests for your data access layer     Learn about the common pitfalls that should be avoided     Implement data validation on the entity level     Monitor and profile your data access In Detail Ideally, we would want to persist the objects our application uses and produces AS IS, without having to first transform them in complex ways. NHibernate is a framework that provides us with an object-oriented access to a relational database without having to write SQL and with little or no database-specific data access code. Definitely, if you are a .NET developer, knowing more about NHibernate will simplify and reduce your efforts in developing .Net applications.NHibernate 3 Beginner's Guide introduces Nhibernate with step-by-step examples, and is the easiest way to learn about bridging the gap between object-oriented .NET applications and the relational database that stores the application's data. It is a beginner's guide to NHibernate that starts from scratch. Successive chapters build upon earlier concepts, while the sample code presents various ways to accomplish typical data access tasks. NHibernate 3 Beginner's Guide examines all of the topics required to get a functional data access layer implemented while writing the least amount of code possible, presenting options along the way to handle particular edge cases or situations as they arise. The book begins with an introduction to NHIbernate 3 and then moves on to creating the development environment. Then it teaches you how to create a model, define a database schema, and map the model to the database then covers sessions and transactions. This is succeeded by testing, profiling, and configuration, validation of data and writing queries. Finally, we wrap up with notes on the common pitfalls that you should avoid. Once you complete reading the book, you will have gained the skills and knowledge to incorporate NHibernate into your own applications. An easy-to-follow guide that will show you how to connect the NHibernate object-relational mapper to your projects to create a rich, efficient, object-oriented data access layer with little or no additional work Approach This is a beginner’s guide with comprehensive step-by-step instructions. There are appropriate screenshots throughout the book and plenty of code, which is explained in a well-thought-out format. Who this book is for If you are a new or seasoned developer of .NET web or desktop applications who is looking for a better way to access database data, then this book is for you. It is a basic introduction to NHibernate, with enough information to get a solid foundation in using NHibernate. Some advanced concepts are presented where appropriate to enhance functionality or in situations where they are commonly used. Absolutely no knowledge of NHibernate is required to read this book. About the Authors Gabriel N. Schenker started his career as a physicist. Following his passion and interest in stars and the universe he chose to write his Ph.D. thesis in astrophysics. Soon after this he dedicated all his time to his second passion, writing and architecting software. Gabriel has since been working for over 12 years as an independent consultant, trainer, and mentor mainly on the .NET platform. He is currently working as chief software architect in a mid-size US company based in Austin TX providing software and services to the pharmaceutical industry as well as to many well-known hospitals and universities throughout the US and in many other countries around the world. Gabriel is passionate about software development and tries to make the life of developers easier by providing guidelines and frameworks to reduce friction in the software development process. He has used NHibernate in many different commercial projects, web-based as well as Windows-based solutions. Gabriel has written many articles and blog posts about different aspects of NHibernate. He is the author behind the well-known NHibernate FAQ blog. Gabriel has also been a reviewer for the bestselling NHibernate 3 Cookbook. Gabriel is married and father of four children and during his spare time likes hiking in the mountains, cooking and reading. Aaron Cure is an avid developer, instructor, and innovator. During his 10 years in the military as a linguist and a satellite communications repair technician, he learned that his real love was computer programming. After various throes with PHP, Classic ASP, VB, and a brief encounter with Java/JSP, he found a real passion for the .NET framework. After searching for a "better way" to carry out database storage and retrieval, Aaron stumbled across the NHibernate framework. Unsatisfied with the options for interacting with this great framework, he founded the NHibernate Generation project (nhib-gen) on SourceForge to reduce the "barrier to entry" for most developers. Aaron and his family run a small consulting and web hosting company doing web design and custom software development for various organizations across the country. One of their more interesting projects has been software to control laser cutting machines. In his spare time, he also enjoys developing projects with his daughters, using everything from Lego NXT (using C# and Bluetooth communications) to the Microchip PIC platform (using JAL and USB). He also collects and restores classic farm tractors, engines, and farm equipment, as well as semi trucks and trailers. He and his family display them at tractor shows, parades, schools, and various other community events. Table of Contents Preface Chapter 1: First Look     What is NHibernate     What is new in NHibernate 3.0     Why would I use it     Where do I get it     Is there documentation available     Can I get help using NHibernate     Is there commercial support available     Who uses it     Summary Chapter 2: A First Complete Sample     Prepare our development environment     Defining a model     Time for action – Creating the product inventory model     Mapping our model     Time for action – Creating the mapping classes     Creating the database schema     Time for action – Creating the database     Creating a session factory     Time for action – Creating a session factory     Opening a session     Time for action – Opening a session to the database     Persisting objects to the database     Time for action – Adding a new category to the database     Reading from the database     Time for action – Loading the list of all categories from the database     Doing the same without NHibernate – using ADO.NET only     Summary Chapter 3: Creating a Model     What is a model     Model first versus data first     Elements of a model     Entity     Value object     Time for action – Creating a Name value object     Creating an entity     Time for action – Creating a base entity     Time for action – Creating a Customer entity     Defining relations between entities     Owns or contains     One-to-many     One-to-one     Many-to-many     The order entry model     Time for action – Implementing an order entry model     Summary Chapter 4: Defining the Database Schema     What is a database schema     Who owns the database     Time for action – Creating the OrderingSystem database     Laying the foundation – table layouts     Time for action – Creating the Categories table     Time for action – Defining a script to create the Products table     Table columns     Data types of table columns     Relations, constraints, and indices     Relations     Constraints     Time for action – Adding a constraint to the Product table     Time for action – Creating a script to add a check constraint     Indices     Time for action – Adding an index using the designer     Time for action – Creating a script to add an index     Normal form     Putting it all together     Time for action – Creating a schema for the order entry system     Do not use database-generated IDs     Views     What about stored procedures and triggers     Summary Chapter 5: Mapping the Model to the Database     What is mapping?     Types of mapping     XML-based mapping     Attribute-based mapping     Fluent mapping     Mapping by convention     A word about lazy loading     Loading data on demand     Proxies     Virtual properties and methods     Creating database schema creation scripts     Fluent mapping     Expression trees – please explain     Getting started     Classes     Entity level settings     ID columns     Properties     References     Collections     Mapping many-to-many relations     Mapping value objects     Time for action – Mapping our domain     Use mapping conventions     ID conventions     Property conventions     Foreign key conventions     No mapping; is that possible?     Auto-mapping with Fluent NHibernate     Time for action – Using auto-mapping     Using ConfORM     Time for action – Using ConfORM to map our domain     XML mapping     Getting started     Classes     Properties     ID columns     One-to-many relations     Many-to-many relations     Mapping value objects     Time for action – Mapping a simple domain using XML     Summary Chapter 6: Sessions and Transactions     What are sessions and transactions     Session     Transaction     The session factory     Creating your first session     Why do we call Commit?     Adding new data to the database     Reading data from the database     Get versus Load     Updating existing data     Deleting data     First level cache or identity map     Clearing the cache     Refreshing entities in the cache     No database operation without a transaction     Should I use transactions when querying data?     NHibernate session versus database session     Time for action – Creating a session and doing some CRUD     Session management     Web-based applications     Time for action –Implementing session management for a web application     WinForm or WPF applications     Windows services     Unit of Work     Handling exception     Second level cache     Cache regions     Second level cache implementations     Time for action – Using a second level cache     Summary Chapter 7: Testing, Profiling, Monitoring, and Logging     Why do we need tests?     What should we test?     What about the database?     Download SQLite     Preparing our environment for testing     Testing the mapping     Testing the mapping with Fluent NHibernate     Time for action – Creating the base for testing     Time for action – Using SQLite in our tests     Testing queries     Logging     Why do we need to log?     Logging with Log4Net     Time for action – Adding logging to our application     Setting up logging for NHibernate     Time for action – Enable logging in NHibernate     Monitoring and profiling     Analyzing log files     Using SQL Server Profiler     Monitoring and profiling with NHibernate Profiler     Time for action – Adding NHibernate Profiler support     Summary Chapter 8: Configuration     Why do we need a configuration?     Elements of the configuration     Which database do we want to use?     What byte code provider and proxy factory?     Where are our mappings?     Do we use second level caching?     Do we want to extend NHibernate?     XML configuration     Time for action – Configuring NHibernate using XML     Configuring NHibernate in code     Time for action – Configuring NHibernate in code     Fluent configuration     Configuring NHibernate with Loquacious     Time for action – Using Loquacious to configure NHibernate     Configuring NHibernate with Fluent NHibernate     Convention over configuration     Summary Chapter 9: Writing Queries     How can we get to our data?     The LINQ to NHibernate provider     Defining the root of our query     Limiting the number of records returned     Filtering a set of records     Mapping a set of records     Sorting the resulting set     Grouping records     Forcing a LINQ query to execute immediately     Changing from querying the database to querying in-memory objects     Creating a report using LINQ to NHibernate     Time for action – Preparing the system     Time for action – Creating the reports     Criteria queries     Untyped criteria queries     Strongly-typed criteria queries     Time for action – Using QueryOver to retrieve data     Hibernate Query Language     Lazy loading properties     Executing multiple queries in a batch     Eager loading versus lazy loading     Bulk data changes     Summary Chapter 10: Validating the Data to Persist     What is validation and why is it so important?     Who owns the database?     Why, what, and where do we validate?     Why validate?     What data?     Where to validate?     Validating single properties     Configuring the validator     Defining validation rules     Fluently configure validation rules     Enforcing validation     Time for action – Using property validation     Validating complex business rules     Enforcing always valid entities     Using validation classes     Time for action – Validating user input     What to do if we don't own the database?     Summary Chapter 11: Common Pitfalls-Things to Avoid     Requesting the obvious     Wrong mapping for read-only access     Blindly relying on NHibernate     Using implicit transactions     Using database-generated IDs     Using LINQ to NHibernate the wrong way     The trouble with lazy loading     The select (n+1) problem     Accessing lazy loaded parts after the session is closed     Did I just load the whole database?     Using one model for read and write operations     CQRS     Phantom updates     Time for action – Causing a phantom update     Using NHibernate to persist any type of data     Summary Appendix: Pop Quiz Answers     Chapter 2     A First Complete Sample     Chapter 3     Creating a Model     Chapter 4     Defining the Database Schema     Chapter 5     Mapping the Model to the Database     Chapter 6     Sessions and Transactions     Chapter 7     Testing, Profiling, Monitoring, and Logging     Chapter 8     Configuration     Chapter 9     Writing Queries     Chapter 10     Validating the Data to Persist Index