一、Hibernate了解
Hibernate框架是Java持久层的框架,是Gavin King发明的,2001年发布的,JBoss公司的产品,2003年进入市场。
Hibernate是基于对象来操作数据库的,但他最终还是被转换为SQL去进行操作
Hibernate对JDBC进行封装,简化数据库访问操作,采用ORM(Object Relation Mapping,对象关系映射)技术的持久层框架,自动实现表记录和实体对象之间的映射。
Hibernate与JDBC的区别:
Hibernate与JDBC都应用在持久层上,但Hibernate轻量级封装JDBC
Hibernate是自动的,不需要手写SQL语句的,它自动生成SQL语句,是面向对象的;
Mybatis是半自动的;
JDBC是手动的(需手写代码与数据库建立连接,获取对象,写SQL语句,执行SQL语句,返回结果,关闭连接),是面向过程的。
Hibernate体系结构:
1.框架工具包和驱动包
2.hibernate.cfg.xml
3.主配置文件,用于定义数据库连接参数
4.实体类(以entity为例)
5.映射描述文件entity.hbm.xml(这一步可以用注解代替)
6.定义类和表对应关系,属性和字段对应关系
二、Hibernate框架搭建
**1.加载12个Hibernate包**
dom4j-1.6.jar
geronimo-jta_1.2_spec-1.0-alpha-1.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-5.0.11.specid.jar
hibernate-jpa-2.1-api-1.0.2.Final.jar
javassist-3.18.0-ga-sources.jar
jboss-logging-3.3.0.Final.jar
mysql-connector-java-5.1.46.jar
slf4j-api-2.0.0-alpha1.jar
slf4j-jdk14-1.7.7.jar
slf4j-log4j12-1.7.5.jar
antlr-2.7.6.jar
将上述12个工具包放到web项目文件夹下的WebRoot/WEB-INF/lib/下
2.Hibernate两个配置文件(这一步也可以自己建xml文件配置参数,因为我之前建过,所以直接导入两个配置文件)
配置XML文件步骤:windows->preferences->XML->XML Catelog->add->location(找到dtd的位置)->key对应配置文件键值->OK
(1)*.hbm.xml 映射文件 建议放在entity/包下
(2)hibernate.cfg.xml 主配置文件 建议放在src/下
第一步: 配置hibernate.cfg.xml文件(数据库连接信息,JDBC驱动,数据库dialect方言等)
<!-- hibernate自动生成表 -->
<!-- hibernate在控制台显示SQL语句 -->
<property name="show_sql">true</property>
<!-- hibernate格式化SQL,控制台看起来更整齐 -->
<property name="format_sql">true</property>
<!-- 设置自动提交 -->
<property name="connection.autocommit">true</property>
<!-- <property name="connection.characterEncoding">UTF-8</property> -->
<!--加载hibernate映射 -->
<mapping resource="com/hibernatetest/entity/User.hbm.xml" />
**第二步:** 配置*hbm.xml文件
**三.使用Hibernate框架操作数据库(Hibernate有五大核心接口一个核心类)**
Configuration: 从hibernate.cfg.xml文件中加载主配置信息(数据库url,用户名,密码,jdbc驱动,数据库Dialect方言,数据库连接池,hibernate映射文件等)
SessionFactory: 用于创建Session对象工厂,它可通过configuration创建得到,保存了数据库的配置信息和所有的映射关系
Session: 用于执行数据库增删改查基本操作
Query和Criteria接口: 用于负责执行各种数据的查询,它可以使用HQL语言或SQL语句两种表达方式
Transaction: 用于事务控制(默认事务不自动提交)
Hibernate框架运行原理:
1.首先通过configuration去加载hibernate.cfg.xml这个配置文件
2.根据配置文件的信息去创建SessionFactory,SessionFactory是线程安全的,是一个session工厂
3.用SessionFactory来创建session,session不是线程安全的,通过session进行数据库的各种操作
4.在进行增删查改操作的时候通过Session打开Transaction进行事务的控制 public static void main(String[] args) { //1.加载主配置文件 Configuration configuration = new Configuration().configure();//此处读取默认名称“hibernate.cfg.xml”,想要读取指定名称,需.configure("xxx.xml");
//2.建造Session工厂
SessionFactory sessionfactory = configuration.buildSessionFactory();
//3.获取Session,这个对象中提供了一套增删改查的方法
Session sess = sessionfactory.openSession();
//4.查询获取对象
User user = sess.get(User.class, 1);//在数据库数据表中获取id为1的记录
System.out.println(user);
//5.释放session
sess.close();
}