hibernate-----框架配置
Hibernate
1、hibernate简介
1.1、项目中框架的体系结构
|
1.2、ORM框架
- 对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping)
- 对象和表字段进行对应
- 是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
- Object:对象,java对象,此处特指JavaBean,Model
- Relational:关系,二维表,数据库中的表。
- 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框架
- JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系(只有接口规范)
- Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL
- MyBatis 本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架
- Apache DBUtils 、Spring JDBCTemplate
1.6、Hibernate的优点
|
- hibernate的简单使用
2.1、hibernate的使用步骤
- 下载hibernate 的jar包,并导入到项目中(http://hibernate.org/orm/)
- 创建数据库和表
- 配置核心配置文件hibernate.cfg.xml【这个文件有连接数据库的配置】
- 编写映射文件hibernate mapping(*.hbm.xml),【声明对象如何关联数据库表字段】
- 调用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包
- 这里我们使用3.6.0的版本开发,4.0开发是建议使用注解
- 所需要导入的jar包,如下图,然后再导入一个mysql数据库连接驱动
|
|
|
- 介绍每一个包的作用
|
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
- 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、常见问题
- 下面未知的实体是指在hibernate.cfg.xml中没有配置映射文件
|