In the book "Designs of Enterprise Application Architecture", Martin Fowler discusses persistence designs that are generally present in software development especially with regards to ORMs.
It is possible to pattern that Hibernate adheres to many carefully?
Hibernate take advantage of countless designs:
- Lazy load (proxing collections)
- Unit of labor (included in Session object)
- most likely Identity Map or something like that modern-day
- Mapping Metadata
- Query Object for Qualifying criterion API
- all object relational structual designs
If you are searching for design designs explicity, then you may consider Hibernate an expensive API for applying the Active Record Pattern:
In software engineering, the active record pattern is really a design pattern frequently present in software that stores its data in relational databases. It had been named by Martin Fowler in the book Designs of Enterprise Application Architecture. The interface to this kind of object would include functions for example Place, Update, and Remove, plus qualities that correspond more-or-less directly towards the posts within the underlying database table.
Active record is a technique for being able to access data inside a database. A database table or view is wrapped into a category thus an item instance is associated with just one row within the table. After development of an item, a brand new row is put into the table upon save. Any object loaded will get its information in the database when an item is up-to-date, the related row within the table can also be up-to-date. The wrapper class implements accessor techniques or qualities for every column within the table or view.
Hibernate doesn't follow ActiveRecord pattern. The pattern that Hibernate adheres most carefully may be the Datamapper pattern.
Hibernate is clearly domain model. The objects in ORM would be the domain model, which means you can't do ORM without them.