diff --git a/doc/reference/modules/architecture.xml b/doc/reference/modules/architecture.xml index c446ec16b7c..7600ddcbb53 100644 --- a/doc/reference/modules/architecture.xml +++ b/doc/reference/modules/architecture.xml @@ -205,7 +205,7 @@ The instance was once associated with a persistence context, but that context was closed, or the instance was serialized to another process. It has a persistent - identity and, perhaps, a corrsponding row in the database. + identity and, perhaps, a corresponding row in the database. For detached instances, NHibernate makes no guarantees about the relationship between persistent identity and CLR identity. diff --git a/doc/reference/modules/basic_mapping.xml b/doc/reference/modules/basic_mapping.xml index 0223c77c574..3dcd61ec489 100644 --- a/doc/reference/modules/basic_mapping.xml +++ b/doc/reference/modules/basic_mapping.xml @@ -88,7 +88,7 @@ This element has several optional attributes. The schema attribute specifies that tables referred to by this mapping belong to the named schema. If specified, - tablenames will be qualified by the given schema name. If missing, tablenames will be + table names will be qualified by the given schema name. If missing, table names will be unqualified. The default-cascade attribute specifies what cascade style should be assumed for properties and collections which do not specify a cascade attribute. The auto-import attribute lets us @@ -230,7 +230,7 @@ discriminator-value (optional - defaults to the class name): A value - that distiguishes individual subclasses, used for polymorphic behaviour. Acceptable + that distinguishes individual subclasses, used for polymorphic behaviour. Acceptable values include null and not null. @@ -470,7 +470,7 @@ (unsaved), distinguishing it from transient instances that were saved or loaded in a previous session. - + access (optional - defaults to property): The @@ -570,8 +570,8 @@ use this generator with a user-supplied connection. - You can use the "where" parameter to specify the row to use in a table. This is useful - if you want to use a single tabel for your identifiers, with different rows for each table. + You can use the "where" parameter to specify the row to use in a table. This is useful + if you want to use a single table for your identifiers, with different rows for each table. @@ -700,7 +700,7 @@ The valid values for format are described in the MSDN documentation. The default seperator is - and should rarely be modified. The format determines if the configured - seperator can replace the default seperator used by + seperator can replace the default separator used by the format. @@ -776,7 +776,7 @@ Starting with NHibernate release 3.3.0, there are 2 new generators which represent a re-thinking of 2 different aspects of identifier generation. The first aspect is database portability; the second is - optimization Optimization means that you do not have to query the + optimization. Optimization means that you do not have to query the database for every request for a new identifier value. These two new generators are intended to take the place of some of the named generators described above, starting in 3.3.x. However, they are @@ -1013,7 +1013,7 @@ You must instantiate an instance of the persistent class itself and populate its identifier properties before you can load() the persistent state associated with a composite key. We will describe a much more - convenient approach where the composite identifier is implemented as a seperate class + convenient approach where the composite identifier is implemented as a separate class in . The attributes described below apply only to this alternative approach: @@ -1367,7 +1367,7 @@ lazy (optional - defaults to false): Specifies that this property is lazy. A lazy property is not loaded when - the object is initially loaded, unless the fetch mode has been overriden + the object is initially loaded, unless the fetch mode has been overridden in a specific query. Values for lazy properties are loaded when any lazy property of the object is accessed. @@ -1673,7 +1673,7 @@ specifies that the mapped columns should be included in SQL UPDATE and/or INSERT statements. Setting both to false allows a pure "derived" association whose value is initialized from some other - property that maps to the same colum(s) or by a trigger or other application. + property that maps to the same column(s) or by a trigger or other application. @@ -1699,7 +1699,7 @@ optimistic-lock (optional - defaults to true): Specifies that updates to this property do or do not require acquisition of the - optimistic lock. In other words, dertermines if a version increment should occur when + optimistic lock. In other words, determines if a version increment should occur when this property is dirty. @@ -1889,8 +1889,8 @@ ]]> - A newly saved instance of Person is then assigned the same primar - key value as the Employee instance refered with the Employee + A newly saved instance of Person is then assigned the same primary + key value as the Employee instance referred with the Employee property of that Person. @@ -2027,7 +2027,7 @@ The <component> element allows a <parent> - subelement that maps a property of the component class as a reference back to the + sub-element that maps a property of the component class as a reference back to the containing entity. @@ -2178,19 +2178,19 @@ name: The fully qualified .NET class name of the subclass, including its assembly name. - - + + discriminator-value (optional - defaults to the class name): A - value that distiguishes individual subclasses. - + value that distinguishes individual subclasses. + proxy (optional): Specifies a class or interface to use for lazy initializing proxies. - + @@ -2247,21 +2247,21 @@ name: The fully qualified class name of the subclass. - - + + - proxy (optional): Specifies a class or interface to use + proxy (optional): Specifies a class or interface to use for lazy initializing proxies. - + - lazy (optional): Setting lazy="true" is a shortcut - equalivalent to specifying the name of the class itself as the proxy + lazy (optional): Setting lazy="true" is a shortcut + equivalent to specifying the name of the class itself as the proxy interface. - + @@ -3042,9 +3042,9 @@ SQL quoted identifiers You may force NHibernate to quote an identifier in the generated SQL by enclosing the table or - column name in backticks in the mapping document. NHibernate will use the correct quotation + column name in back-ticks in the mapping document. NHibernate will use the correct quotation style for the SQL Dialect (usually double quotes, but brackets for SQL - Server and backticks for MySQL). + Server and back-ticks for MySQL). @@ -3059,8 +3059,8 @@ Modular mapping files It is possible to define subclass and joined-subclass - mappings in seperate mapping documents, directly beneath hibernate-mapping. - This allows you to extend a class hierachy just by adding a new mapping file. You must + mappings in separate mapping documents, directly beneath hibernate-mapping. + This allows you to extend a class hierarchy just by adding a new mapping file. You must specify an extends attribute in the subclass mapping, naming a previously mapped superclass. Use of this feature makes the ordering of the mapping documents important! @@ -3087,7 +3087,7 @@ issues a select afterwards to retrieve the generated values. - Properties marked as generated must additionally be non-insertable and non-updateable. + Properties marked as generated must additionally be non-insertable and non-updatable. Only versions, timestamps, and simple properties can be marked as diff --git a/doc/reference/modules/batch.xml b/doc/reference/modules/batch.xml index 38982282016..315e9cbfdf0 100644 --- a/doc/reference/modules/batch.xml +++ b/doc/reference/modules/batch.xml @@ -32,7 +32,7 @@ session.Close();]]> Note that NHibernate disables insert batching at the ADO level transparently if you - use an identiy identifier generator. + use an identity identifier generator. @@ -160,7 +160,7 @@ session.Close();]]> No joins (either implicit or explicit) can be specified in a bulk HQL query. Sub-queries may be used in the where-clause; - the subqueries, themselves, may contain joins. + the sub-queries, themselves, may contain joins. @@ -236,7 +236,7 @@ session.Close();]]> number indicates the number of actual entities affected by the statement. Going back to the example of joined-subclass, a delete against one of the subclasses may actually result in deletes against not just the table to which that subclass is mapped, but also the "root" - table and potentially joined-subclass tables further down the inheritence hierarchy. + table and potentially joined-subclass tables further down the inheritance hierarchy. @@ -251,9 +251,9 @@ session.Close();]]> Only the INSERT INTO ... SELECT ... form is supported; not the INSERT INTO ... VALUES ... form. - The properties_list is analogous to the column speficiation + The properties_list is analogous to the column specification in the SQL INSERT statement. For entities involved in mapped - inheritence, only properties directly defined on that given class-level can be + inheritance, only properties directly defined on that given class-level can be used in the properties_list. Superclass properties are not allowed; and subclass properties do not make sense. In other words, INSERT statements are inherently non-polymorphic. diff --git a/doc/reference/modules/best_practices.xml b/doc/reference/modules/best_practices.xml index 06e06255eab..21af3661540 100644 --- a/doc/reference/modules/best_practices.xml +++ b/doc/reference/modules/best_practices.xml @@ -122,11 +122,11 @@ Database Transactions have to be as short as possible for best scalability. However, it is often - neccessary to implement long running Application Transactions, a single unit-of-work from the + necessary to implement long running Application Transactions, a single unit-of-work from the point of view of a user. This Application Transaction might span several client requests and response cycles. Either use Detached Objects or, in two tiered architectures, simply disconnect the NHibernate Session from the ADO.NET connection and reconnect it for each subsequent request. - Never use a single Session for more than one Application Transaction usecase, otherwise, you + Never use a single Session for more than one Application Transaction use-case, otherwise, you will run into stale data. @@ -162,7 +162,7 @@ Hide (NHibernate) data-access code behind an interface. Combine the DAO and Thread Local Session patterns. You can even have some classes persisted by - handcoded ADO.NET, associated to NHibernate via an IUserType. (This advice is + hand-coded ADO.NET, associated to NHibernate via an IUserType. (This advice is intended for "sufficiently large" applications; it is not appropriate for an application with five tables!) @@ -189,11 +189,11 @@ Don't use exotic association mappings. - Good usecases for a real many-to-many associations are rare. Most of the time you need + Good use-cases for a real many-to-many associations are rare. Most of the time you need additional information stored in the "link table". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, we think that most associations are one-to-many and many-to-one, you should be careful when using any - other association style and ask yourself if it is really neccessary. + other association style and ask yourself if it is really necessary. diff --git a/doc/reference/modules/collection_mapping.xml b/doc/reference/modules/collection_mapping.xml index b555e4b3ec0..e4ca76d1d13 100644 --- a/doc/reference/modules/collection_mapping.xml +++ b/doc/reference/modules/collection_mapping.xml @@ -190,7 +190,7 @@ HashedSet hs = (HashedSet) cat.Kittens; //Error!]]> lazy (optional - defaults to true) may be used to disable lazy fetching and specify that the association is always eagerly fetched. Using extra fetches only the - elements that are needed - see for more information. + elements that are needed - see for more information. @@ -262,7 +262,7 @@ HashedSet hs = (HashedSet) cat.Kittens; //Error!]]> - The mapping of an IList or array requires a seperate table column holding the array + The mapping of an IList or array requires a separate table column holding the array or list index (the i in foo[i]). If your relational model doesn't have an index column, e.g. if you're working with legacy data, use an unordered ISet instead. This seems to put people off who assume that IList should just be a more @@ -685,7 +685,7 @@ int accessLevel = (int) permissions["accounts"]; // Error!]]> - In an application with a seperate business tier, the business logic must + In an application with a separate business tier, the business logic must "prepare" all collections that will be needed by the web tier before returning. This means that the business tier should load all the data and return all the data already initialized to the presentation/web tier that @@ -917,7 +917,7 @@ session.Update(category); // The relationship will be saved]]> The non-inverse side is used to save the in-memory representation to the database. - We would get an unneccessary INSERT/UPDATE and probably even a foreign key violation + We would get an unnecessary INSERT/UPDATE and probably even a foreign key violation if both would trigger changes! The same is of course also true for bidirectional one-to-many associations. diff --git a/doc/reference/modules/component_mapping.xml b/doc/reference/modules/component_mapping.xml index 2971f0e9894..1f0eb12d8a7 100644 --- a/doc/reference/modules/component_mapping.xml +++ b/doc/reference/modules/component_mapping.xml @@ -114,7 +114,7 @@ The <component> element allows a <parent> - subelement that maps a property of the component class as a reference back to the + sub-element that maps a property of the component class as a reference back to the containing entity. diff --git a/doc/reference/modules/configuration.xml b/doc/reference/modules/configuration.xml index 0914513ae02..5cca60143be 100644 --- a/doc/reference/modules/configuration.xml +++ b/doc/reference/modules/configuration.xml @@ -344,7 +344,7 @@ ISession session = sessions.OpenSession(conn); - You may define your own plugin strategy for obtaining ADO.NET connections by implementing the + You may define your own plug-in strategy for obtaining ADO.NET connections by implementing the interface NHibernate.Connection.IConnectionProvider. You may select a custom implementation by setting connection.provider. @@ -386,7 +386,7 @@ ISession session = sessions.OpenSession(conn); dialect - The classname of a NHibernate Dialect - enables + The class name of a NHibernate Dialect - enables certain platform dependent features. eg. @@ -399,7 +399,7 @@ ISession session = sessions.OpenSession(conn); default_schema - Qualify unqualified tablenames with the given schema/tablespace + Qualify unqualified table names with the given schema/table-space in generated SQL. eg. @@ -458,7 +458,7 @@ ISession session = sessions.OpenSession(conn); cache.provider_class - The classname of a custom ICacheProvider. + The class name of a custom ICacheProvider. eg. classname.of.CacheProvider, assembly @@ -495,7 +495,7 @@ ISession session = sessions.OpenSession(conn); cache.query_cache_factory - The classname of a custom IQueryCacheFactory interface, + The class name of a custom IQueryCacheFactory interface, defaults to the built-in StandardQueryCacheFactory. eg. @@ -599,7 +599,7 @@ ISession session = sessions.OpenSession(conn); transaction.factory_class - The classname of a custom ITransactionFactory implementation, + The class name of a custom ITransactionFactory implementation, defaults to the built-in AdoNetWithDistributedTransactionFactory. eg. diff --git a/doc/reference/modules/events.xml b/doc/reference/modules/events.xml index be745ff4b34..58c1d8797ce 100644 --- a/doc/reference/modules/events.xml +++ b/doc/reference/modules/events.xml @@ -151,7 +151,7 @@ public class AuditInterceptor : EmptyInterceptor { event and passes it to the configured event listeners for that type. Out-of-the-box, these listeners implement the same processing in which those methods always resulted. However, you are free to implement a customization of one of the listener interfaces - (i.e., the LoadEvent is processed by the registered implemenation + (i.e., the LoadEvent is processed by the registered implementation of the ILoadEventListener interface), in which case their implementation would be responsible for processing any Load() requests made of the ISession. diff --git a/doc/reference/modules/filters.xml b/doc/reference/modules/filters.xml index 056d0fc5f57..23360c1b65e 100644 --- a/doc/reference/modules/filters.xml +++ b/doc/reference/modules/filters.xml @@ -13,7 +13,7 @@ NHibernate adds the ability to pre-define filter criteria and attach those filters at both a class and a collection level. A filter criteria is the ability to define a restriction clause - very similiar to the existing "where" attribute available on the class and various collection + very similar to the existing "where" attribute available on the class and various collection elements. Except these filter conditions can be parameterized. The application can then make the decision at runtime whether given filters should be enabled and what their parameter values should be. Filters can be used like database views, but parameterized inside the @@ -54,7 +54,7 @@ The methods on ISession are: EnableFilter(string filterName), GetEnabledFilter(string filterName), and DisableFilter(string filterName). - By default, filters are not enabled for a given session; they must be explcitly + By default, filters are not enabled for a given session; they must be explicitly enabled through use of the ISession.EnableFilter() method, which returns an instance of the IFilter interface. Using the simple filter defined above, this would look like: diff --git a/doc/reference/modules/inheritance_mapping.xml b/doc/reference/modules/inheritance_mapping.xml index 00ca5fcb7df..43c6bfc87b0 100644 --- a/doc/reference/modules/inheritance_mapping.xml +++ b/doc/reference/modules/inheritance_mapping.xml @@ -56,7 +56,7 @@ It is possible to define subclass, union-subclass, and joined-subclass mappings in separate mapping documents, directly beneath - hibernate-mapping. This allows you to extend a class hierachy just by adding + hibernate-mapping. This allows you to extend a class hierarchy just by adding a new mapping file. You must specify an extends attribute in the subclass mapping, naming a previously mapped superclass. @@ -266,7 +266,7 @@ superclass, the column name must be the same on all subclass tables. (We might relax this in a future release of NHibernate.) The identity generator strategy is not allowed in union subclass inheritance, indeed - the primary key seed has to be shared accross all unioned subclasses + the primary key seed has to be shared across all unioned subclasses of a hierarchy. @@ -316,7 +316,7 @@ mapped in each of the subclasses. If you want to avoid duplication, consider using XML entities (e.g. [ <!ENTITY allproperties SYSTEM "allproperties.xml"> ] - in the DOCTYPE declartion and + in the DOCTYPE declaration and &allproperties; in the mapping). diff --git a/doc/reference/modules/manipulating_data.xml b/doc/reference/modules/manipulating_data.xml index 7e6cf3399e5..04e8ca0fae5 100644 --- a/doc/reference/modules/manipulating_data.xml +++ b/doc/reference/modules/manipulating_data.xml @@ -649,7 +649,7 @@ secondSession.SaveOrUpdate(mate); // save the new instance (mate has a null id) Reattaching detached objects - The Lock() method allows the application to reassociate + The Lock() method allows the application to re-associate an unmodified object with a new session. @@ -761,7 +761,7 @@ sess.Lock(pk, LockMode.Upgrade);]]> - Except when you explicity Flush(), there are absolutely no + Except when you explicitly Flush(), there are absolutely no guarantees about when the Session executes the ADO.NET calls, only the order in which they are executed. However, NHibernate does guarantee that the ISession.Find(..) @@ -1046,7 +1046,7 @@ finally Mapping an association (many-to-one, one-to-one or collection) with cascade="all" marks the association as a parent/child style relationship where save/update/deletion of the parent results in save/update/deletion of the child(ren). - Futhermore, a mere reference to a child from a persistent parent will result in save / update + Furthermore, a mere reference to a child from a persistent parent will result in save / update of the child. The metaphor is incomplete, however. A child which becomes unreferenced by its parent is not automatically deleted, except in the cases of <one-to-many> and <one-to-one> associations diff --git a/doc/reference/modules/nhibernate_caches.xml b/doc/reference/modules/nhibernate_caches.xml index 816f808d049..00e345d2de3 100644 --- a/doc/reference/modules/nhibernate_caches.xml +++ b/doc/reference/modules/nhibernate_caches.xml @@ -366,7 +366,7 @@ The name of the connection in the applications configuration file to use for registering the cache dependency for change notifications. If no value is supplied for connectionName or connectionStringProviderType, the connection properties from - the NHibernate configruation will be used. + the NHibernate configuration will be used. diff --git a/doc/reference/modules/performance.xml b/doc/reference/modules/performance.xml index d74ca10df3d..c785c09fba0 100644 --- a/doc/reference/modules/performance.xml +++ b/doc/reference/modules/performance.xml @@ -101,7 +101,7 @@ fetched when the instance variable is accessed. Compared to proxy fetching, this approach is less lazy (the association is fetched even when only the identifier is accessed) but more transparent, since no proxy is visible to - the application. This approach requires buildtime bytecode instrumentation + the application. This approach requires build-time bytecode instrumentation and is rarely necessary. @@ -109,7 +109,7 @@ Lazy attribute fetching - an attribute or single valued association is fetched when the instance variable is accessed. - This approach requires buildtime bytecode instrumentation and is rarely + This approach requires build-time bytecode instrumentation and is rarely necessary. @@ -408,7 +408,7 @@ ICat fritz = (ICat) iter.Current;]]> By choosing lazy="no-proxy" instead of the default lazy="proxy", we can avoid the problems associated with typecasting. - However, we will require buildtime bytecode instrumentation, and all operations + However, we will require build-time bytecode instrumentation, and all operations will result in immediate proxy initialization. --> @@ -604,7 +604,7 @@ ICat fritz = (ICat) iter.Current;]]> ]]> - Lazy property loading requires buildtime bytecode instrumentation! If your persistent + Lazy property loading requires build-time bytecode instrumentation! If your persistent classes are not enhanced, NHibernate will silently ignore lazy property settings and fall back to immediate fetching. @@ -630,8 +630,8 @@ ICat fritz = (ICat) iter.Current;]]> A different (better?) way to avoid unnecessary column reads, at least for read-only transactions is to use the projection features of HQL or Criteria - queries. This avoids the need for buildtime bytecode processing and is - certainly a prefered solution. + queries. This avoids the need for build-time bytecode processing and is + certainly a preferred solution. @@ -743,7 +743,7 @@ ICat fritz = (ICat) iter.Current;]]> - Alternatively (preferrably?), you may specify <class-cache> and + Alternatively (preferably?), you may specify <class-cache> and <collection-cache> elements in hibernate.cfg.xml. @@ -954,7 +954,7 @@ sessionFactory.EvictCollection("Eg.Cat.Kittens"); //evict all kitten collections If the query should force a refresh of its query cache region, you may call IQuery.SetForceCacheRefresh() to true. This is particularly useful in cases where underlying data may have been updated - via a seperate process (i.e., not modified through NHibernate) and allows the + via a separate process (i.e., not modified through NHibernate) and allows the application to selectively refresh the query cache regions based on its knowledge of those events. This is a more efficient alternative to eviction of a query cache region via ISessionFactory.EvictQueries(). @@ -1021,7 +1021,7 @@ sessionFactory.EvictCollection("Eg.Cat.Kittens"); //evict all kitten collections Sets have a primary key consisting of <key> and element columns. This may be less efficient for some types of collection element, particularly composite elements or large text or binary fields; the database may not be able to index - a complex primary key as efficently. On the other hand, for one to many or many to many + a complex primary key as efficiently. On the other hand, for one to many or many to many associations, particularly in the case of synthetic identifiers, it is likely to be just as efficient. (Side-note: if you want SchemaExport to actually create the primary key of a <set> for you, you must declare all columns @@ -1309,8 +1309,8 @@ ICollection customers = CollectionHelper.ToArray(results[0]) ICollection policies = CollectionHelper.ToArray(results[1]);]]> - As you see, we get a query that represnt the customers we can access, and then we can utlize this query further in order to - perform additional logic (getting the policies of the customers we are associated with), all in a single database roundtrip. + As you see, we get a query that represents the customers we can access, and then we can utilize this query further in order to + perform additional logic (getting the policies of the customers we are associated with), all in a single database round-trip. diff --git a/doc/reference/modules/persistent_classes.xml b/doc/reference/modules/persistent_classes.xml index 76a9307dafc..7bc5fccfc99 100644 --- a/doc/reference/modules/persistent_classes.xml +++ b/doc/reference/modules/persistent_classes.xml @@ -368,7 +368,7 @@ using(ITransaction tx = s.BeginTransaction()) EntityMode is on the ISession API, not the ISessionFactory. That way, the new ISession shares the underlying ADO connection, transaction, and other context - information. This means you don't have tocall Flush() + information. This means you don't have to call Flush() and Close() on the secondary ISession, and also leave the transaction and connection handling to the primary unit of work. @@ -383,7 +383,7 @@ using(ITransaction tx = s.BeginTransaction()) NHibernate.EntityMode. If a given piece of data is thought of as a data structure, then a tuplizer is the thing which knows how to create such a data structure and how to extract values from and inject values into such a data structure. For example, - for the POCO entity mode, the correpsonding tuplizer knows how create the POCO through its + for the POCO entity mode, the corresponding tuplizer knows how create the POCO through its constructor and how to access the POCO properties using the defined property accessors. There are two high-level types of Tuplizers, represented by the NHibernate.Tuple.Entity.IEntityTuplizer and NHibernate.Tuple.Component.IComponentTuplizer @@ -452,9 +452,8 @@ public class CustomMapTuplizerImpl : NHibernate.Tuple.Entity.DynamicMapEntityTup - - The NHibernate IInterceptor offers a less intrusive - alternative, however. + The NHibernate IInterceptor + offers a less intrusive alternative, however. diff --git a/doc/reference/modules/preface.xml b/doc/reference/modules/preface.xml index b403dbd87c8..dc4b6bbc75c 100644 --- a/doc/reference/modules/preface.xml +++ b/doc/reference/modules/preface.xml @@ -76,7 +76,7 @@ If you have questions, use the NHibernate user forum. - We also provide a JIRA issue trackings system + We also provide a JIRA issue tracking system for bug reports and feature requests. If you are interested in the development of NHibernate, join the developer mailing list. If you are interested in translating this documentation into your language, contact us diff --git a/doc/reference/modules/query_criteria.xml b/doc/reference/modules/query_criteria.xml index d70ea329a21..775eddd97de 100644 --- a/doc/reference/modules/query_criteria.xml +++ b/doc/reference/modules/query_criteria.xml @@ -289,7 +289,7 @@ IList results = session.CreateCriteria(typeof(Cat)) - Detached queries and subqueries + Detached queries and sub-queries The DetachedCriteria class lets you create a query outside the scope of a session, and then later execute it using some arbitrary ISession. @@ -305,8 +305,8 @@ txn.Commit(); session.Close();]]> - A DetachedCriteria may also be used to express a subquery. ICriterion - instances involving subqueries may be obtained via Subqueries + A DetachedCriteria may also be used to express a sub-query. ICriterion + instances involving sub-queries may be obtained via Subqueries . @@ -323,7 +323,7 @@ session.CreateCriteria(typeof(Cat)) .list();]]> - Even correlated subqueries are possible: + Even correlated sub-queries are possible: HQL: The Hibernate Query Language - NHibernate is equiped with an extremely powerful query language that (quite intentionally) + NHibernate is equipped with an extremely powerful query language that (quite intentionally) looks very much like SQL. But don't be fooled by the syntax; HQL is fully object-oriented, - understanding notions like inheritence, polymorphism and association. + understanding notions like inheritance, polymorphism and association. @@ -197,7 +197,7 @@ from Eg.DomesticCat as mother left outer join mother.Kittens as offspr]]> - or as an actual typesafe object + or as an actual type-safe object 10000]]> The SQL functions any, some, all, exists, in are supported when passed the element or index set of a collection (elements and indices functions) - or the result of a subquery (see below). + or the result of a sub-query (see below). - in a where clause: only for databases with subselects + in a where clause: only for databases with sub-selects @@ -691,7 +691,7 @@ group by foo.id]]> Note: You may use the elements and indices constructs - inside a select clause, even on databases with no subselects. + inside a select clause, even on databases with no sub-selects. @@ -728,12 +728,12 @@ order by count(kitten) asc, sum(kitten.Weight) desc]]> - Subqueries + Sub-queries - For databases that support subselects, NHibernate supports subqueries within queries. A subquery must - be surrounded by parentheses (often by an SQL aggregate function call). Even correlated subqueries - (subqueries that refer to an alias in the outer query) are allowed. + For databases that support sub-selects, NHibernate supports sub-queries within queries. A sub-query must + be surrounded by parentheses (often by an SQL aggregate function call). Even correlated sub-queries + (sub-queries that refer to an alias in the outer query) are allowed. :minAmount order by sum(price.Amount) desc]]> - What a monster! Actually, in real life, I'm not very keen on subqueries, so my query was + What a monster! Actually, in real life, I'm not very keen on sub-queries, so my query was really more like this: @@ -901,14 +901,14 @@ group by usr.id, usr.Name order by count(msg)]]> - If your database supports subselects, you can place a condition upon selection + If your database supports sub-selects, you can place a condition upon selection size in the where clause of your query: = 1]]> - If your database doesn't support subselects, use the following query: + If your database doesn't support sub-selects, use the following query: QueryOver uses Lambda Expressions to provide some extra @@ -42,7 +42,7 @@ .List();]]>   - Detached QueryOver (analagous to DetachedCriteria) can be created, and then used with an ISession using: + Detached QueryOver (analogous to DetachedCriteria) can be created, and then used with an ISession using: query = QueryOver.Of() @@ -172,7 +172,7 @@ IList cats = Associations - QueryOver can navigate association paths using JoinQueryOver() (analagous to ICriteria.CreateCriteria() to create sub-criteria). + QueryOver can navigate association paths using JoinQueryOver() (analogous to ICriteria.CreateCriteria() to create sub-criteria). The factory method QuerOver<T>() on ISession returns an IQueryOver<T>. @@ -181,7 +181,7 @@ IList cats = An IQueryOver has two types of interest; the root type (the type of entity that the query returns), and the type of the 'current' entity being queried. For example, the following query uses - a join to create a sub-QueryOver (analagous to creating sub-criteria in the ICriteria API): + a join to create a sub-QueryOver (analogous to creating sub-criteria in the ICriteria API): catQuery = session.QueryOver() @@ -351,10 +351,10 @@ IList catReport = - Subqueries + Sub-queries - The Subqueries factory class has overloads to allow Lambda Expressions to express sub-query + The Sub-queries factory class has overloads to allow Lambda Expressions to express sub-query restrictions. For example: maximumAge = @@ -367,7 +367,7 @@ IList oldestCats = .List();]]>   - The inline syntax allows you to use subqueries without requalifying the type: + The inline syntax allows you to use sub-queries without re-qualifying the type: oldestCats = session.QueryOver() diff --git a/doc/reference/modules/query_sql.xml b/doc/reference/modules/query_sql.xml index 1638acbd25e..84271389ed2 100644 --- a/doc/reference/modules/query_sql.xml +++ b/doc/reference/modules/query_sql.xml @@ -95,7 +95,7 @@ sess.CreateSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").AddEntity(typeof(Cat Handling associations and collections It is possible to eagerly join in the Dog to - avoid the possible extra roundtrip for initializing the proxy. This is + avoid the possible extra round-trip for initializing the proxy. This is done via the AddJoin() method, which allows you to join in an association or collection. @@ -106,7 +106,7 @@ sess.CreateSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").AddEntity(typeof(Cat In this example the returned Cat's will have their Dog property fully initialized without any - extra roundtrip to the database. Notice that we added a alias name + extra round-trip to the database. Notice that we added a alias name ("cat") to be able to specify the target property path of the join. It is possible to do the same eager joining for collections, e.g. if the Cat had a one-to-many to Dog @@ -144,7 +144,7 @@ sess.CreateSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").AddEntity(typeof(Cat row, a cat and its mother. This will fail since there is a conflict of names since they are mapped to the same column names and on some databases the returned column aliases will most likely be on the form - "c.ID", "c.NAME", etc. which are not equal to the columns specificed in + "c.ID", "c.NAME", etc. which are not equal to the columns specified in the mappings ("ID" and "NAME"). The following form is not vulnerable to column name @@ -169,7 +169,7 @@ sess.CreateSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").AddEntity(typeof(Cat The {cat.*} and {mother.*} notation used above is a shorthand for - "all properties". Alternatively, you may list the columns explicity, but + "all properties". Alternatively, you may list the columns explicitly, but even in this case we let NHibernate inject the SQL column aliases for each property. The placeholder for a column alias is just the property name qualified by the table alias. In the following example, we retrieve @@ -294,7 +294,7 @@ IList loggedCats = sess.CreateSQLQuery(sql) - All properties of the the collection + All properties of the collection {[aliasname].*} @@ -417,7 +417,7 @@ IList pusList = query.SetString("name", "Pus%").List(); ]]>]]> You can externalize the resultset mapping informations in a - <resultset> element to either reuse them accross + <resultset> element to either reuse them across several named queries or through the SetResultSetMapping() API. diff --git a/doc/reference/modules/quickstart.xml b/doc/reference/modules/quickstart.xml index 1ea839d56d3..f240d7853b7 100644 --- a/doc/reference/modules/quickstart.xml +++ b/doc/reference/modules/quickstart.xml @@ -21,7 +21,7 @@ dialect and driver configuration. - Microsoft Visual Studio .NET (at leats 2005) - the development environment. + Microsoft Visual Studio .NET (at least 2005) - the development environment. @@ -214,16 +214,16 @@ ]]> - Every persistent class should have an identifer attribute (actually, only + Every persistent class should have an identifier attribute (actually, only classes representing entities, not dependent value objects, which are mapped as components of an entity). This property is used to distinguish persistent objects: Two cats are equal if catA.Id.Equals(catB.Id) is true, this concept is called database identity. NHibernate comes bundled with - various identifer generators for different scenarios (including native generators + various identifier generators for different scenarios (including native generators for database sequences, hi/lo identifier tables, and application assigned identifiers). We use the UUID generator (only recommended for testing, as integer - surrogate keys generated by the database should be prefered) and also specify the + surrogate keys generated by the database should be preferred) and also specify the column CatId of the table Cat for the NHibernate generated identifier value (as a primary key of the table). diff --git a/doc/reference/modules/readonly.xml b/doc/reference/modules/readonly.xml index 562bf063ac1..fc7612d0072 100644 --- a/doc/reference/modules/readonly.xml +++ b/doc/reference/modules/readonly.xml @@ -306,7 +306,7 @@ Using Query.SetReadOnly(true) or Criteria.SetReadOnly(true) works well when a single HQL query or criteria loads all the entities and - intializes all the proxies and collections that the application + initializes all the proxies and collections that the application needs to be read-only. @@ -511,7 +511,7 @@ s.Flush(); will not increment the version if any simple properties change. - + ISession session = factory.OpenSession(); ITransaction tx = session.BeginTransaction(); diff --git a/doc/reference/modules/toolset_guide.xml b/doc/reference/modules/toolset_guide.xml index 5fae791fb8d..d40af6913c8 100644 --- a/doc/reference/modules/toolset_guide.xml +++ b/doc/reference/modules/toolset_guide.xml @@ -118,7 +118,7 @@ The sql-type attribute allows the user to override the default mapping - of NHibernate type to SQL datatype. + of NHibernate type to SQL data type. @@ -157,7 +157,7 @@ not-null true|false - specfies that the column should be non-nullable + specifies that the column should be non-nullable unique @@ -326,7 +326,7 @@ new SchemaExport(cfg).Create(false, true);]]> The NHibernate code generator may be used to generate skeletal C# implementation classes from a NHibernate mapping file. This tool is included in the NHibernate Contrib package - (a seperate download in http://sourceforge.net/projects/nhcontrib/). + (a separate download in http://sourceforge.net/projects/nhcontrib/). diff --git a/doc/reference/modules/transactions.xml b/doc/reference/modules/transactions.xml index 18628426085..5fed5c6e632 100644 --- a/doc/reference/modules/transactions.xml +++ b/doc/reference/modules/transactions.xml @@ -190,7 +190,7 @@ session.Disconnect();]]> This pattern is problematic if our ISession is too big to be stored during user think time, e.g. an HttpSession should be kept as small as possible. As the ISession is also the - (mandatory) first-level cache and contains all loaded objects, we can propably + (mandatory) first-level cache and contains all loaded objects, we can probably use this strategy only for a few request/response cycles. This is indeed recommended, as the ISession will soon also have stale data. @@ -204,7 +204,7 @@ session.Disconnect();]]> Each interaction with the persistent store occurs in a new ISession. However, the same persistent instances are reused for each interaction with the database. The application manipulates the state of detached instances originally loaded in another - ISession and then "reassociates" them using + ISession and then "re-associates" them using ISession.Update() or ISession.SaveOrUpdate(). @@ -241,7 +241,7 @@ session.Close();]]> even timestamps. In both cases, versioning can't rely on a particular column in a table. To force a version check without a version or timestamp property mapping, with a comparison of the state of all fields in a row, turn on optimistic-lock="all" - in the <class> mapping. Note that this concepetually only works + in the <class> mapping. Note that this conceptually only works if NHibernate can compare the old and new state, i.e. if you use a single long ISession and not session-per-request-with-detached-objects. @@ -257,7 +257,7 @@ session.Close();]]> comparison, NHibernate uses a single UPDATE statement (with an appropriate WHERE clause) per entity to execute the version check and update the information. If you use transitive persistence to cascade reattachment - to associated entities, NHibernate might execute uneccessary updates. This is usually + to associated entities, NHibernate might execute unnecessary updates. This is usually not a problem, but on update triggers in the database might be executed even when no changes have been made to detached instances. You can customize this behavior by setting select-before-update="true" in the @@ -411,7 +411,7 @@ finally Pessimistic Locking - It is not intended that users spend much time worring about locking strategies. It's usually + It is not intended that users spend much time worrying about locking strategies. It's usually enough to specify an isolation level for the ADO.NET connections and then simply let the database do all the work. However, advanced users may sometimes wish to obtain exclusive pessimistic locks, or re-obtain locks at the start of a new transaction. @@ -573,7 +573,7 @@ finally System.Transactions library, ConnectionReleaseMode.AfterTransaction may cause NHibernate to open and close several connections during one transaction, leading to unnecessary overhead and transaction promotion from local to distributed. Specifying ConnectionReleaseMode.OnClose - will revert to the legacy behavior and prevent this problem from occuring. + will revert to the legacy behavior and prevent this problem from occurring.