什么是Hibernate
Hibernate实际上是一个框架。
框架实际上是一个半成品。我们在这个基础上开发可以减少代码量,提高程序的健壮性。
Hibernate是一个Java领域的持久化框架。持久化是将对象和数据持久化的保存到数据库中。同数据库相关的各种操作都可以称作持久化。
加载:根据特定的OID,把一个对象从数据库加载到内存中。
Hibernate是一个ORM框架。
ORM
ORM(Object-Relation Mapping):对象/关系映射
| 面向对象概念 | 面向关系概念 |
|---|---|
| 类 | 表 |
| 对象 | 表的行(记录) |
| 属性 | 表的列(字段) |
ORM思想:将关系数据库中表的记录映射成对象。以对象的形式展现,程序员可以把对数据库的操作转换为对对象的操作。
ORM采用元数据来描述对象-关系映射的细节。元数据通常采用XML格式,并且专门存放在对象-关系映射文件中。
ORM底层使用的还是JDBC,可以说ORM框架是对JDBC的封装。
目前流行的ORM框架有Hibernate和MyBatis。
Hello World
Hibernate应用开发步骤
配置连接数据库的基本信息
需要创建hibernate.cfg.xml文件,并添加如下内容。
<hibernate-configuration>
<session-factory>
<property name="connection.username">postgres</property>
<property name="connection.password">973412postgresql</property>
<property name="connection.driver_class">org.postgresql.Driver</property>
<property name="connection.url">jdbc:postgresql://localhost:5432/hibernate</property>
<property name="dialect">org.hibernate.dialect.PostgreSQL10Dialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
</session-factory>
</hibernate-configuration>
创建持久化对象
创建一个HelloWorld类
public class HelloWorld {
private Integer id;
private String title;
private String author;
private Date date;
public HelloWorld() {
}
public HelloWorld(Integer id, String title, String author, Date date) {
this.id = id;
this.title = title;
this.author = author;
this.date = date;
}
//Getter and Setter.
@Override
public String toString() {
return "HelloWorld{" +
"id=" + id +
", title='" + title + '\'' +
", author='" + author + '\'' +
", date=" + date +
'}';
}
}
创建对象关系映射文件
<hibernate-mapping>
<class name="com.hibernate.helloworld.HelloWorld" table="helloworld" schema="public" catalog="hibernate">
<id name="id">
<column name="id" sql-type="integer"/>
</id>
<property name="title">
<column name="title" sql-type="text" not-null="true"/>
</property>
<property name="author">
<column name="author" sql-type="text" not-null="true"/>
</property>
<property name="date">
<column name="date" sql-type="date" not-null="true"/>
</property>
</class>
</hibernate-mapping>
在hibernate.cfg.xml中添加映射关系
<mapping resource="com/hibernate/helloworld/HelloworldEntity.hbm.xml"/>
<mapping class="com.hibernate.helloworld.HelloWorld"/>
通过Hibernate API编写访问数据库的代码
public class HibernateTest {
@Test
public void test(){
//1. Create SessionFactory object.
SessionFactory sessionFactory = null;
//1.1 Create configuration object.
Configuration configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
//2. Create Session Object.
Session session = sessionFactory.openSession();
//3. Start transaction.
Transaction transaction = session.beginTransaction();
//4. Save
HelloWorld helloworld = new HelloWorld(1, "Java", "Hibernate", new Date(new Date().getTime()));
session.save(helloworld);
//5. Submit transaction.
transaction.commit();
//6. Close Session.
session.close();
//7. Close SessionFactory.
sessionFactory.close();
}
}











网友评论