Hibernate初探

2020-03-21  本文已影响0人  BlueSkyBlue

什么是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();
    }
}
上一篇 下一篇

猜你喜欢

热点阅读