一、什么是hibernate?
1、它是连接 Java 应用程序和关系数据库的中间件。
2、它对 JDBC API 进行了封装,负责Java对象的持久化。
3、在分层的软件架构中它位于持久化层,封装了所有数据访问细节,使业务罗基层可以专注于实现业务逻辑。
4、它是一种 ORM(Object-Relation Mapping 对象-关系映射)工具,能够建立面向对象的域模型和关系模型的映射。
二、什么是对象的持久化?
狭义的理解,“持久化”仅仅指把对象永久保存到数据库中
广义的理解,“持久化”包括和数据库相关的各种操作:
- 保存:把对象永久保存到数据库中
- 更新:更新数据库中对象(记录)的状态。
- 删除:从数据库中删除一个对象。
- 查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载到内存中。
- 加载:根据特定的OID,把一个对象从数据库加载到内存中。
三、ORM
ORM(Object/Relation Mapping): 对象/关系映射
ORM 主要解决对象-关系的映射
面向对象 | 面向关系 |
类 | 表 |
对象 | 表的行 |
属性 | 表的列 |
ORM的思想:将关系数据库中表中的记录映射成为对象,以对象的形式展现,程序员可以把对数据库的操作转化为对对象的操作。
ORM 采用元数据来描述对象-关系映射细节, 元数据通常采用 XML 格式, 并且存放在专门的对象-关系映射文件中.
四、创建hibernate-helloworld的步骤
1. 创建 Hibernate 配置文件 hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<!-- 配置的数据库链接基本信息 -->
<session-factory>
<!-- 数据库方言 -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/hibernate
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">
com.mysql.jdbc.Driver
</property>
<!-- 是否在控制台打印sql -->
<property name="show_sql">true</property>
<!-- 格式化 -->
<property name="format_sql">true</property>
<!-- 指定自动生成数据表的策略 -->
<property name="hbm2ddl.auto">update</property>
<mapping resource="mynodel/News.hbm.xml" />
</session-factory>
</hibernate-configuration>
2. 创建持久化类(或者创建数据库表)
3. 创建对象-关系映射文件
4. 通过 Hibernate API 编写访问数据库的代码
→ 编写持久化类: POJO + 映射文件或者编写数据库表,反向生成java类
→ 获取 Configuration 对象
Configuration configuration = new Configuration().configure();
→ 获取 ServiceRegistry对象
ServiceRegistry serviceregistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();
→ 获取 SessionFactory 对象
SessionFactory sessionfactory = null;
sessionfactory = configuration.buildSessionFactory(serviceregistry);
→ 获取 Session,打开事务
Session session = sessionfactory.openSession();
<pre name="code" class="java">Transaction transaction = session.beginTransaction();
→ 用面向对象的方式操作数据库
News news = new News("weixuan","weixuan",new Date(new java.util.Date().getTime()));
session.save(news);
transaction.commit();
→ 关闭事务,关闭 Session
session.close();
sessionfactory.close();
五、hibernate概述