hibernate入门
1. 什么是hibernate
hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了 轻量级的封装,java程序员可以使用面向对象的思想来操纵数据库。
优势:跨数据库的无缝移植
注1:Object Relational Mapping
hibernate 核心接口
session:负责被持久化对象CRUD操作
sessionFactory:负责初始化hibernate,创建session对象
configuration:负责配置并启动hibernate,创建SessionFactory
Transaction:负责事物相关的操作
Query和Criteria接口:负责执行各种数据库查询
2. 如何在项目中添加hibernate支持(手动添加)
2.1 添加hibernate相关依赖
2.2 在resource目录下添加hibernate.cfg.xml(核心配置文件)
2.2.1 添加DTD支持
2.2.2 添加Hibernate的配置
1 >数据库相关(connection.username|connection.password|
connection.url|connection.driver_class|dialect)
2> 调试相关(show_sql|format_sql)
3> 在开发阶段再创建实体类和实体映射文件(*.hbm.xml)
实体必须实现Serializable接口
小结:hibernate.cfg.xml(1)/*.hbm.xml(N)
实体映射文件一定要加到核心配置文件
.
实体映射文件(*.hbm.xml)
3. hibernate工作原理:
1.通过Configuration config = new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的读取并解析映射信息
3.通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory
4.Session session = sf.openSession();//打开Sesssion
5.Transaction tx = session.beginTransaction();//创建并启动事务Transation
6.persistent operate操作数据,持久化操作
7.tx.commit();//提交事务
8.关闭Session
9.关闭SesstionFactory
4. 如何使用hibernate完成CRUD(增删改查)操作
1>搭建好环境
引入hibernate jar包
准备Hibernate.cfg.xml启动配置文件
2>创建库表
3>写实体类(pojo)
4>为实体类写映射文件"User.hbm.xml"
在hibernate.cfg.xml添加映射的实体
5>写测试类
测试类:
package com.zking.one.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.zking.one.entity.User;
public class Demo1_add {
public static void main(String[] args) {
/**
* 1. 获得Configuration 读取配置文件
* 2.创建SessionFactory
* 3.打开Session
* 4.开启事务
* 5.使用session操作数据
* 6.提交事务
* 7.关闭资源
*
*/
Configuration cfg=new Configuration().configure("hibernate.cfg.xml");//读取配置文件
SessionFactory sessionFactory=cfg.buildSessionFactory(); //创建SessionFactory
Session session = sessionFactory.openSession();//打开SessionFactory
Transaction transaction = session.beginTransaction(); //开启事务
User user=new User();
user.setUserName("admin");
user.setUserPwd("123");
session.save(user);//执行数据库操作 (save新增)
//user.setId(3);
//user.setUserPwd("123");
//user.setUserName("唐思语");
//session.update(user);//修改
//User user2=session.get(User.class, 2);//查询
//System.out.println(user2);
//if(user2!=null) {
// user2.setUserName("唐思语");//修改
//}
// User user3=session.get(User.class, 4);//查询
//
//if(user3!=null) {
// user3.setUserName("唐思语");//修改
//}
//session.delete(user3);//执行数据库操作
transaction.commit();//提交事务
session.close();//关闭资源
}
}
注意事项
4.2.1 hibernate默认使用的是手动事务,因此必须显示的开启和提交事
务
4.2.2 删除操作时,必须先查再删