1.Hibernate是一个ORM型持久性框架.
ORM:对象关系型映射。通过映射关系,能够将对象的数据存储到数据中,
并且能从数据库中获取数据存储到一个对象中.
2.Hibernate与JDBC的区别
jdbc的优点:
sql应用灵活(操作sql语句方便,sql语句灵活)
数据库的移植
jdbc的缺点:
代码繁琐
不便于维护
效率低
hibernate的框架:
优点:
真正的基于ORM模型
脱离java代码,降低耦合度
操作简单,易用
缺点:
不便于操作表结构复杂的sql
不方便数据库的移植
代替了jdbc技术,是一个全封装的框架,不便于调试bug
3. 什么时候用hibernate
表数量少,表结构不复杂的时候,可以用他进行快速开发
4.Hibernate的工作原理
1.jar包的准备
(1)jar包的下载
Hibernate的官方网站http://hibernate.org
托管网站:https://sourceforge.net/projects/hibernate/files/
推荐下载:hibernate-distribution-3.6.10.Final-dist.zip
(2)部署jar文件
hibernate3.jar
lib\required目录下的jar文件
lib\jpa\hibernate-jpa-2.0-api-1.0.1.Final.jar
不适合需要使用数据库的特定优化机制的情况
辅助jar包
(1)数据库驱动jar文件
(2)junit-4.9jar
(3)slf4j-log4j12-1.7.12.jar与log4j-1-2.17.jar
2.定义实体类
定义用户类,里面有三个属性,id,name,年龄.
package com.xxx.entity;
public class User {
private Integer u_id;//主键
private String u_name;
private Integer u_age;
public Integer getU_id() {
return u_id;
}
public void setU_id(Integer u_id) {
this.u_id = u_id;
}
public String getU_name() {
return u_name;
}
public void setU_name(String u_name) {
this.u_name = u_name;
}
public Integer getU_age() {
return u_age;
}
public void setU_age(Integer u_age) {
this.u_age = u_age;
}
public User(String u_name, Integer u_age) {
super();
this.u_name = u_name;
this.u_age = u_age;
}
}
3.Hibernate配置文件的编写
映射文件的配置需要两个关系
1.实体类与数据库表的关系的映射
2.属性与表中字段的映射关系
主配置文件与映射配置文件
在Hibernate的核心jar文件hibernate-core-5.0.1.Final.jar中的org.hibernate中的hibernate-configuration-3.0.dtd,hibernate-mapping-3.0.dtd
hibernate的主配置文件
DB数据库连接的四要素与方言
<?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="myeclipse.connection.profile">mysql</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/hib
</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<!--方言-->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<!--开启自动建表-->
<property name="hbm2ddl.auto">update</property>
<!--注册映射文件-->
<mapping resource="com/xxx/entity/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
映射配置文件
<?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>
<!--引入实体类全类名 -->
<class name="com.xxx.entity.User">
<!--主键字段 -->
<id name="u_id">
<generator class="increment"/>
</id>
<!--普通字段 -->
<property name="u_name"/>
<property name="u_age"/>
</class>
</hibernate-mapping>
4.单元测试
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class TestCreate {
//自动建表
@Test
public void testConn(){
//1.新建配置对象
Configuration cfg=new Configuration();
//2.自动加载主配置文件
cfg.configure();
//3.开启session工厂
SessionFactory sf=cfg.buildSessionFactory();
}
}