Hibernate

Hibernate 官方中文版 v6.0.0

软件大小:26.23MB
软件类型:国产软件
软件语言:简体中文
软件授权:免费软件
软件分类: 编程工具
支持系统:

      Hibernate中文版是一个开放源代码的对象关系映射框架,界面简洁明晰、操作方便快捷,对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate中文版可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。

相关软件 版本说明 下载地址
猿编程客户端 官方版 查看
Sublime Text 中文版 查看
JD-GUI 中文版 查看
vc++6.0 简体中文企业版 查看

基本简介

      Hibernate中文版的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。

截图

数据库设计

      a) 降低关联的复杂性

      b) 尽量不使用联合主键

      c) ID的生成机制,不同的数据库所提供的机制并不完全一样

      d) 适当的冗余数据,不过分追求高范式

工作原理

      Hibernate工作原理是Configuration读取Hibernate的配置文件bai和映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SessionFactory对象。

      然后,多线程SessionFactory对象生成一个线程Session 对象;Session对象生成Query对象或者Transaction对象;可通过Session对象的get(),load(),save(),update(),delete()和saveOrUpdate( )等方法对PO进行加载、保存、更新、删除等操作。

      在查询的情况下,可通过Session 对象生成一个Query对象,然后利用Query对象执行查询操作;如果没有异常,Transaction对象将提交这些操作结果到数据库中。

缓存机制

      一级缓存:hibernate的一级缓存是由session提供的,因此它只存在session的生命周期中。也就是说session关闭的时候该

      session所管理的一级缓存也随之被清除。hibernate的一级缓存是session所内置的,默认开启,不能被卸载,也不能进行任何配置。在缓

      存中的对象,具有持久性,session对象负责管理.一级缓存的优点是使用同一个session对象多次查询同一个数据对象,仅对数据库查询一次。一级

      缓存采用的是Key-Value的MAP方式来实现的。在缓存实体对象时,对象的主关键字ID是MAP的Key,实体对象就是对象的值。所以说一级缓存是

      以实体对象为单位进行存储的。访问的时候使用的是主键关键字ID。一级缓存使用的是自动维护的功能。但可以通过session提供的手动方法对一级缓存的

      管理进行手动干预。evict()方法用于将某个对象从session的一级缓存中清除。clear()方法用于将session缓存中的方法全部清除。

使用说明

      1.Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。

      2.SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。

      3.Configuration类负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。

      4.Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务5.Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语句或SQL语句两种表达方式。

常见问题

      NHibernate是否会修改我的IL?如果没有,如何知道发生了什么变化?

      不,无论如何它不会修改您的IL。您的IL仍然与编译时的IL完全一样。

      NHibernate加载对象时,ISession会保留对象状态的快照。当您Flush()时,ISession NHibernate会将快照与对象的当前状态进行比较。适当的更改将写入数据库。

      如何将NHibernate集合转换为.NET集合?

      集合映射的名称是显示Java和.NET之间差异的明显位置。Java的集合库比System.Collection拥有更多的选择。

      所述<列表>直接映射到一个IList。

      所述<地图>直接映射到一个IDictionary。

      所述<袋>映射到一个IList中。甲<袋>不完全与符合的IList接口,因为添加()方法不能保证返回正确的索引。可以在不初始化IList的情况下将对象添加到中。确保对您的API使用者隐藏IList或对其进行详细记录。

      所述映射到一个Iesi.Collections.ISet。该接口是随NHibernate一起分发的Iesi.Collections程序集的一部分。

      如果将order-by属性添加到集合映射元素,则具体的集合类型将更改为支持维持元素添加顺序的一种。对于,它仍然使用ArrayList。对于具有order-by属性的和,具体的集合类分别更改为Specialized.ListDictionary和Iesi.Collections.ListSet。这应该不是问题,因为您的API使用者正在使用IList和Iesi.Collections.ISet接口。

      如果将排序属性添加到集合映射元素,则具体的集合类型将更改为支持排序的类型。对于具有sort属性的和,具体的集合类分别更改为SortedList或Iesi.Collections.SortedSet,它们使用sort属性中提供的IComparer。对于API使用者,这应该不是问题,因为他们正在使用接口IList和Iesi.Collections.ISet。

      随着集合大小的增长,使用order-by或sort属性确实会影响地图和集合的性能。

      什么是持久性收集?

      在NHibernate中使用此术语来指代其内部类的集合(NHibernate.Collections.Set,List,Bag等),该类包装了用户的集合。属于NHibernate返回的实体的所有集合都是持久性的(=包装)。作为保存过程的一部分,传递给“保存”的实体也将其集合包装并由包装器替换。持久性集合具有其原始状态的快照,因此可以更有效地进行更新。

      包含查询结果的集合不是持久性的,它们是普通的.NET集合(= ArrayList = s)。

Hibernate下载地址

Windows版下载

普通下载地址

百科推荐

下载排行

近期更新

Hibernate

Hibernate