Hibernate入门

 
Hibernate 入门
Hibernate Java 应用和关系数据库之间的桥梁,它负责 Java 对象和关系数据之间的映射。 Hibernate 内部封装了通过 JDBC 访问数据库的操作,向上层应用提供了面向对象数据访问 API 。在 Java 应用中使用 Hibernate 包含以下步骤:
1 、创建 Hibernate 配置文件
2 、创建持久化类
3 、创建对象——关系映射文件
4 、通过 Hibernate API 编写访问数据库的代码
1 、创建Hibernate 的配置文件
Hibernate从其配置文件中读取和数据库连接有关的信息,这个配置文件应该位于应用的classpath中。Hibernate的配置文件有两种形式:一种是XML格式的文件;还有一种是Java属性文件,采用“键=值”的形式,这种配置文件的默认文件名为hibernate.properties
示范代码(Java属性文件格式):
hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/SAMPLEDB
hibernate.connection.username=root
hibernate.connection.password=1234
hibernate.show_sql=true
Hibernate将根据配置文件中的属性——属性值信息来连接数据库,在Hibernate软件包的etc目录下,有一个hibernate.properties文件,它提供了连接各种关系数据库的配置代码样例
2 、创建持久化类
持久化类是指其实例需要被 Hibernate 持久化到数据库中的类。持久化类通常都是域模型中的实体域类。持久化类符合JavaBean的规范,包含一些属性,以及与之对象的Get、Set方法
Hibernate 要求持久化类必须提供一个不带参数的默认构造方法,在程序运行时, Hibernate 运用 Java 反射机制,调用 java.lang.reflect.Constructor.newInstance() 方法来构造持久化类的实例
3 、创建数据库Schema
创建与持久化类对应的数据库表
4 、创建对象——关系映射文件
Hibernate 采用 XML 格式的文件来指定对象和关系数据之间的映射,在运行时, Hibernate 将根据这个映射文件来生成各种 SQL 语句
文档类型定义 DTD XML 文件的语法和格式做了定义, Hibernate XML 解析器将根据 DTD 来核对 XML 文件的语法
每一种 XML 文件都有独自的 DTD 文件, Hibernate 的对象——关系映射文件采用的 DTD 文件为: hibernate-mapping-2.0.dtd 文件
在创建自己的对象——关系映射文件时,如果不熟悉某种元素的语法,可以参考 DTD 文件
如果需要映射多个持久化类,那么既可以在同一个映射文件中映射所有类,也可以为每个类创建单独的映射文件,映射文件与类同名,扩展名为“hbm.xml”
<class> 元素指定类和表的映射,它的 name 属性设定为类名, table 属性设定表名
<class> 元素包含一个 <id> 子元素及多个 <property> 子元素。 <id> 子元素设定持久化类的 OID 和表的主键的映射。 <property> 子元素设定类的属性和表的字段的映射。<property>子元素主要包括name、type、column和not-null属性
name:持久化类的属性的名字
type:指定Hibernate的映射类型,Hibernate的映射类型是Java类型和SQL类型的桥梁
not-null:不允许持久化类的该属性为空
column:指定与类的属性映射的表的字段的名字
Hibernate 采用 XML 文件来配置对象——关系映射,有以下优点:
Hibernate 既不会渗透到上层域模型中,也不会渗透到下层数据模型中
软件开发人员可以独立设计域模型,不必强迫遵守任何规范
数据库设计人员可以独立设计数据模型,不必强迫遵守任何规范
对象——关系映射不依赖于任何程序代码,如果需要修改对象——关系映射,只需要修改 XML 文件,不需要修改任何程序代码,提高了软件的灵活性,并且使维护更加方便
5 、通过Hibernate API 操纵数据库
Hibernate JDBC 进行了封装,提供了更加面向对象的 API
通过 Hibernate API 访问数据库的一般流程,首先应该在应用的启动阶段对 Hibernate 进行初始化,然后就可以通过 Hibernate Session 接口访问数据库
5.1 、Hibernate 的初始化
1、创建一个Configuration类的实例,Configuration类的构造方法把默认文件路径下的hibernate.properties配置文件的配置信息读入到内存
Configuration config = new Configuration();
2、调用Configuration类的addClass(Customer.class)方法,把默认文件路径下的Customer.hbm.xml文件中的映射信息读入到内存中
config.addClass(Customer.class);
3、调用Configuration类的buildSessionFactory()方法:
sessionFactory = config.buildSessionFactory();
该方法创建一个SessionFactory实例,并把Configuration对象包含的所有配置信息拷贝到SessionFactory对象的缓存中。SessionFactory代表一个数据库存储源,如果应用只有一个数据库存储源,那么只需创建一个SessionFactory对象。当SessionFactory对象创建后,该对象不和Configuration对象关联。
这里所指的缓存其实指的是 Java 对象的属性(通常是一些集合类型的属性)占用的内存空间。例如,SessionFactory的实现类定义了许多集合类型的属性,这些属性用于存放Hibernate配置信息,映射元数据信息等
如果对象的缓存很大,就称为重量级对象。如果对象占用的内存空间很小,就成为轻量级对象, SessionFactory 就是一个重量级对象,如果应用只有一个数据存储源,只需创建一个 SessionFactory 实例,因为随意地创建 SessionFactory 实例会占用大量的内存空间
SessionFactory 的缓存分为两类:内置缓存和外置缓存。SessionFactory的内置缓存中存放了Hibernate配置信息和映射元数据信息等;SessionFactory的外置缓存是一个可配置的缓存插件,在默认情况下,SessionFactory不会启动这个缓存插件。外置缓存能存放大量数据库数据的拷贝,外置缓存的物理介质可以是内存或者硬盘
5.2 、访问Hibernate 的Session 接口
初始化过程结束后,就可以调用 SessionFactory 实例的 openSession() 方法来获得 Session 实例,然后通过它执行访问数据库的操作。Session接口提供了操纵数据库的各种方法,如:
save():把Java对象保存到数据库中
update():更新数据库中的Java对象
delete():把Java对象从数据库中删除
load():从数据库中加载Java对象
find():从数据库中查询Java对象
Session是一个轻量级对象,通常将每一个Session实例和一个数据库事物绑定,也就是说,每执行一个数据库事物,都应该先创建一个新的Session实例。如果事物执行中出现异常,应该撤销事物。不论事物执行成功与否,最后都应该调用Session的close()方法,从而释放Session实例占用的资源。以下代码演示了用Session来执行事物的流程,其中Transaction类用来控制事物
Session session = sessionFactory.openSession();
    Transaction tx = null;
    try {
      tx = session.beginTransaction(); //开始一个事物
      …
      tx.commit(); //提交事物
 
    }catch (Exception e) {
      if (tx != null) {
        // 如果出现异常就撤销事物
        tx.rollback();
      }
      throw e;
    } finally {
      // 不管事物执行成功与否,最后都关闭Session
      session.close();
    }
Hibernate 查询语言( HQL )是一种面向对象的语言
6 、小结
1、创建Hibernate的配置文件,在配置文件中提供连接特定数据库的信息
2、创建Hibernate的对象——关系映射文件,Hibernate根据该映射文件来生成SQL语句。Hibernate提供了一组内置的映射类型作为连接Java类型和SQL类型的桥梁
3、在应用程序中通过Hibernate API来访问数据库。在应用启动时先初始化Hibernate,创建一个SessiooFactory实例,接下来每次执行数据库事务时,先从SessionFctory中获得一个Session实例,再通过Session实例来保存、更新、删除、加载或查询Java对象
4、掌握存储二进制大数据及长文本数据的技巧,Hibernate的binary映射类型用于映射字节数组,text映射类型用于映射长字符串
5、创建持久化类
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值