Hibernate框架入门

首先分析一下什么是框架?

      框架就是一个半成品项目,我们书写项目可以从半成品开始写。

      这样能够大大提高开发效率。

      不必纠结于框架本身的实现,只要学会如何使用这个框架即可。

复习一下什么是Hibernate框架?

这个框架应用与dao层。

ORM:Object Relactional Mapping

实体类和数据库表之间建立了联系,通过操作对象,直接对数据库进行修改。

Hibernate框架搭建

第一步:导包

1、hibernate包下载地址

http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc

2、Ant包下载地址:
http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip

MySQL JDBC Driver下载地址
http://dev.mysql.com/downloads/connector/j/3.0.html

PostgreSQL JDBC Driver下载地址
http://jdbc.postgresql.org/download.html

MS-SQL Server JDBC Driver下载地址
http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&displaylang=en

导包步骤

2、准备一个实体类

(1)所有的属性应该设置为私有,并添加get和set方法

(2)构造函数要么不写,如果要写至少要写两个(必须包含一个空的)

(3)属性的类型应是包装类型

package cn.hd.bean;

public class User {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private Integer balance;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getBalance() {
        return balance;
    }

    public void setBalance(Integer balance) {
        this.balance = balance;
    }

    public User(Integer id, String name, Integer age, String sex, Integer balance) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.balance = balance;
    }

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", balance=" + balance +
                '}';
    }
}

3准备数据库

(1)数据库必须由我们自己建,数据库表,可以由hibernate自动创建,如果手动创建,表中的字段和实体类一一对应。

4 创建实体类和数据表之间的映射配置文件

创建一个   实体类名 + .hbm + .xml

建议这个文件的目录和实体类在同一个目录下。

<hibernate-mapping>
    <class name="cn.hd.bean.User" table="t_user">
        <id name="id" column="id">
            <generator class="native"></generator>
        </id>
        <property name="name" column="name"></property>
        <property name="age" column="age"></property>
        <property name="sex" column="sex"></property>
        <property name="balance" column="balance"></property>
    </class>
</hibernate-mapping>

5.书写核心配置文件

名字必须是:hibernate.cfg.xml

文件的位置必须放在src目录下

导入约束

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

书写配置

<hibernate-configuration>
    <session-factory>
        <!--必须 数据库连接属性-->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate01</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql_sql">true</property>

        <!--自动创建表-->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <!--事务:4-->
        <property name="hibernate.connection.isolation">4</property>


        <mapping resource="cn/hd/bean/User.hbm.xml"></mapping>

    </session-factory>
</hibernate-configuration>

6.书写Servlet

package cn.hd.test;

import cn.hd.bean.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Demo {
    public static void main(String[] args) {
        //读取配置文件
        Configuration cfg = new Configuration();
        cfg.configure();//读取配置

        //创建sessionFactory
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        //获得一个session对象
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction transaction = session.beginTransaction();
        User user = new User();
        user.setName("牧尘");
        user.setAge(20);
        user.setSex("男");
        user.setBalance(15000);

        session.save(user);
        //提交事务
        transaction.commit();
        //释放资源
        session.close();
        sessionFactory.close();
    }
}

配置文件详解

1、映射文件

<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 下面class中的类的路径,下面的class name 属性可以缩写 -->
<hibernate-mapping package="cn.hd.bean">
    <!-- 映射类和数据库表之间的关系 -->
    <!-- name属性是实体类名  写完整路径名 -->
    <!-- table属性 数据库表名字 -->
    <class name="User" table="t_user">
        <!-- 映射文件中必须拥有 主键id -->
        <id name="id" column="id">
            <!-- 主键生成策略
            identity:mysql自动递增
            increment:当前最大序号+1
            sequence:Oracle数据库中的自动递增
            native :自动递增(3和1)
            assigned:
            uuid:
             -->
            <generator class="native"></generator>
        </id>
        <!-- 基本属性 在这里可以设置数据库的属性
         字段名  类型  长度  不为空  默认值
         -->
        <property name="name" column="name"></property>
        <property name="age" column="age"></property>
        <property name="sex" column="sex"></property>
        <property name="balance" column="balance"></property>
    </class>
</hibernate-mapping>

2、核心配置文件详解

名字和位置都必须按照规定来。

<hibernate-configuration>
    <session-factory>
        <!--必须 数据库连接属性-->
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate01</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>

        <!-- 方言 必须要设置-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!-- 在控制台展示SQL语句 不必须-->
        <property name="hibernate.show_sql">true</property>
        <!-- SQL语句格式化输出 -->
        <property name="hibernate.format_sql">true</property>

        <!-- 自动创建表
        1、update 如果映射文件和数据库保持一致就不修改,如果没有就自动创建表
        2、crate  每次执行都会重新创建一个表(覆盖)
        3、create_drop 先将原来的表删除,然后重建
        4、validate 只做校验
        -->
        <property name="hibernate.hbm2ddl.auto">update</property>

        <!-- 事务的隔离级别:
        1
        2
        4
        8
         脏读
         幻读
         不可重复读
         串行化
         -->
        <property name="hibernate.connection.isolation">4</property>


        <!-- 扫描影射文件
        class:  影射文件和配置文件名字和路径必须保持一致
        mapping:扫描该包下的所有配置文件
        resource: 指定某个确定XML配置文件
        -->
        <mapping resource="cn/hd/bean/User.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>

猜你喜欢

转载自blog.csdn.net/weixin_40442684/article/details/81071214
今日推荐