hibernate-----框架配置

Hibernate

1、hibernate简介

1.1、项目中框架的体系结构

 

 

 

1.2、ORM框架

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

1.3、什么是hibernate

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

 

1.4、总结Hibernate

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

 

1.5、主流的ORM框架

  1. JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象关系表的映射关系(只有接口规范)
  2. Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL
  3. MyBatis  本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架
  4. Apache DBUtils 、Spring JDBCTemplate

 

1.6、Hibernate的优点

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

 

 

 

  1. hibernate的简单使用

2.1、hibernate的使用步骤

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

 

2.2、数据库建表

create database hibernate_day1;

use hibernate_day1;

create table t_user(

  id int auto_increment primary key,

  username varchar(50),

  password varchar(30)

);

2.3、导入jar包

  1. 这里我们使用3.6.0的版本开发,4.0开发是建议使用注解
  2. 所需要导入的jar包,如下图,然后再导入一个mysql数据库连接驱动

 

 

  1. 介绍每一个包的作用

 

2.4、hibernate的核心配置文件

  • 将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>

          <!-- 1、配置数据库连接的4个参数 -->

          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

          <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day1</property>

          <property name="hibernate.connection.username">root</property>

          <property name="hibernate.connection.password">123456</property>

         

          <!--  是否显示sql语句 -->

          <property name="show_sql">true</property>

          <!--  是否格式化sql语句 -->

          <property name="format_sql">true</property>

<!--  是否自动提交事务 -->

          <property name="hibernate.connection.autocommit">true</property>

         

          <!-- 2、配置JavaBean与表的映射文件 -->

          <mapping resource="com/gyf/hibernate/domain/User.hbm.xml"/>

     </session-factory>

</hibernate-configuration>

 

 

2.5、编写JavaBean和映射文件.hbm.xml

  1. JavaBean与.hbm.xml文件包属的包和文件名要一致       

User.java 提供get/set方法

User.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC

    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

     <class name="com.gyf.hibernate.domain.User" table="t_user">

          <!-- 1、主键,如果属性与表字段不一至,要指定column -->

          <id name="uid" column="id">

               <!-- 主键生成策略  -->

               <generator class="native"></generator>

          </id>

          <!-- 2、用户字段 -->

          <property name="username"></property>

          <property name="password"></property>

     </class>

</hibernate-mapping>

 

 

2.6、测试

import com.gyf.hibernate.domain.User;

 

public class Demo01 {

     @Test

     public void test1(){

          //1.获取核心 配置文件对象,默认是加载src的hibernate.cfg.xm文件

          Configuration cfg = new Configuration().configure();

         

          //2.创建会话工厂

          SessionFactory factory = cfg.buildSessionFactory();

         

          //3.创建会话

          Session session = factory.openSession();

          //开启事务

          Transaction trans = session.beginTransaction();

         

          //保存

          User user = new User();

          user.setUsername("gyf");

          user.setPassword("123");

          session.save(user);

         

          //提交事务

          trans.commit();

          //4.关闭会话

          session.close();

          //5.关闭工厂,释放资源

          factory.close();

     }

}

 

 

 

2.7、常见问题

  1. 下面未知的实体是指在hibernate.cfg.xml中没有配置映射文件

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值