Hibernate入门详细配置

Hibernate

1.简介

1.1项目框架中的体系结构

1.2ORM框架

  • 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
  • n 对象和表字段进行对应
  • 是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换
  • n Object:对象,java对象,此处特指JavaBean,Model
  • n Relational:关系,二维表,数据库中的表。
  • n Mapping:映射

1.3什么是hibernate

  • Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装
  • DBUtils也是对JDBC的封装
  • 它将POJO与数据库表建立映射关系,是一个全自动的orm框架
  • POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans
  • hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
  • Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用

1.4总结hibernate

  • Hibernate是一个数据持久化层的ORM框架,它的主要功能就是把对象映射到表中,操作API,只需要将一个对象存储到数据库,不需要写sql语句
  • Hibernate提供了对关系型数据库增删改成操作

1.5主流的ORM框架

  • Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL
  • MyBatis 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架

1.6Hibernate的优点

  • Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码
  • Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现,它很大程度的简化了dao层编码工作
  • Hibernate使用java的反射机制
  • v Hibernate的性能非常好,因为它是一个轻量级框架。映射的灵活性很出色。它支持很多关系型数据库,有一对一到多对多的各种复杂关系映射

2.hibernate的简单使用

2.1hibernate的使用步骤

  • 下载hibernate 的jar包,并导入到项目中(http://hibernate.org/orm/)
  • 创建数据库和表
  • 配置核心配置文件hibernate.cfg.xml【这个文件有连接数据库的配置
  • 编写映射文件hibernate mapping(*.hbm.xml),【声明对象如何关联数据库表字段】
  • A.调用hibernate的api

2.2数据库建表

create database hibernate;
use hibernate;
create table user_info(
  id int auto_increment primary key,
  username varchar(50),
  password varchar(30),
  real_name varchar(100)
);
insert into user_info (id,username,password,real_name) values(null,"张三丰",'123456','张君宝');
insert into user_info (id,username,password,real_name) values(null,"东邪",'1223456','黄药师');
insert into user_info (id,username,password,real_name) values(null,"西毒",'123456','欧阳锋');
insert into user_info (id,username,password,real_name) values(null,"北丐",'123456','洪七公');

2.3hibernate的核心配置文件

  • 将hibernate.cfg.xml放入src中
  <?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">
      <hibernate-configuration>
          <session-factory>
              <!-- 第一部分 数据库配置 -->
              <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
              <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
              <property name="hibernate.connection.username">root</property>
              <property name="hibernate.connection.password">******</property>
      
              <!-- 第二部分 hibernate可选配置 -->
              <!--  是否显示sql语句 -->
              <property name="show_sql">true</property>
              <!--  是否格式化sql语句 -->
              <property name="format_sql">true</property>
              <!--  是否自动提交事务 -->
              <property name="hibernate.connection.autocommit">true</property>
              <!--当SessionFactory创建时是否根据映射文件自动验证表结构或自动创建、自动更新数据库表结构--> 
              <property name="hbm2ddl.auto">update</property>
      
              <!-- 第三部分 配置JavaBean与表的映射文件 -->
              <mapping resource="com/zyh/entity/UserInfo.hbm.xml"></mapping>
          </session-factory>
      </hibernate-configuration>
  


2.4实体类的创建

package com.zyh.entity;

public class UserInfo {
    private Integer id;
    private String username;
    private String password;
    private String realName;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }
}

2.5配置映射文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.zyh.entity">
    <!-- package="com.zyh.entity"实体类所在的包 -->
    <class name="UserInfo" table="user_info">
        <!--
            name="UserInfo" 实体类名
            table="user_info" 数据库表名
        -->
        <id name="id" column="id">
            <!--
            主键,如果属性:name="id"与表字段:column="id"
            class="native":主键生成策略————自动增长
            -->
            <generator class="native"></generator>
        </id>
        <!-- 用户字段 -->
        <property name="username" column="username"></property>
        <property name="password" column="password"></property>
        <property name="realName" column="real_name"></property>
    </class>
</hibernate-mapping>

2.6测试类

package com.zyh.test;

import com.zyh.entity.UserInfo;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class Test1 {
    public static void main(String[] args) {
        UserInfo user = new UserInfo();
        user.setUsername("jhpp");
        user.setPassword("jhpp");
        user.setRealName("金花婆婆");

        //1.获取核心 配置文件对象,默认是加载src的hibernate.cfg.xm文件
        Configuration configuration = new Configuration().configure();
        //2.创建会话工厂
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        //3.创建会话
        Session session = sessionFactory.openSession();
        //开启事务
        Transaction transaction = session.beginTransaction();
        //保存
        session.save(user);
        //提交事务
        transaction.commit();
        //4.关闭会话
        session.close();
        //5.关闭工厂,释放资源
        sessionFactory.close();

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值