Hibernate
1.hibnate是什么
1.Hibernate是一个开发源代码的对象关系映射框架(ORM);
2.对JDBC进行了轻量级的封装,可以将实体类和数据库中的表产生映射关系;
3.是一个全自动的ORM框架;hibernate能自动生成sql语句;
2.hibnate的概念
hibernate简要结构图,中间的hibernate.properties,可以让数据持久化,这里面我们换成***.cfg.xml,表与属性名对应
全面解决”的体系结构方案
3.Hibernate提供了5种检索对象的方式
     1.导航对象图检索方式:根据已经加载的对象导航到其他对象
          from  Emp e group by e.dept.deptName
     2.OID检索方式:按照对象的OID来检索对象  get/load
     3.HQL检索方式:使用面向对象的HQL查询语言  from Student
     4.QBC检索方式:使用QBC(Query By Criteria)API来检索对象,这种API封装了基于字符串形式的查询语句,\
         提供了更加面向对象的查询接口
     5.本地SQL检索方式:使用本地数据库的SQL查询语句
          createSqlQuery();
 1.2核心配置文件hibernate.cfg.xml
复制代码
复制代码
头文件
配置文件中的需要我们配置的重要内容:
 
01.连接数据库的四要素
02.管理各种hbm.xml映射文件
03.缓存的设置
04.是否显示sql语句
05.是否格式化sql语句
06.hbm2ddl的配置
3.1.关于核心API
1.  Configuration 类
 加载hibernate的核心配置文件,以及负责启动hibernate,创建SessionFactory对象
2.  SessionFactory 接口
初始化Hibernate,是数据存储源的代理,负责创建Session对象!
一个项目中我们使用一个SessionFactory就足够了!
如果我们需要操作多个数据库时,建立每个数据库指定一个SessionFactory!
3.  Session接口
 负责执行持久化对象的CRUD操作!是线程不安全的!可以开启事务!创建Transaction对象!
 Session         ===>会话session
 HttpSession      ===>用户session
4.  Transaction接口
 针对于事务的操作!
5.  Query接口
方便我们对数据库数据的查询,有两种方式来实现查询:
 01.sql
 02.hql
6.  Criteria接口
 和query接口非常相似!完全面向对象的思想去操作数据库!
2.Hibnate入门例子
让表中的属性名和数据库中的字段名一致,
2.1.创建hibernate,hbm.xml
复制代码
?xml version="1.0"?>
    
        
           
        
        
    
复制代码
2.2.创建实体类
复制代码
public  class teacher(){ 
private Intger Id;
private String name;
}
复制代码
2.3创建hibnate.cfg.xml
复制代码
    
        
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost:3306/t17
        root
        
        
        true
        
        true
        
        update
        
         
    
复制代码
注意要:
***.Hbm.xml一定要被**.cfg.xml管理!
建text测试类
复制代码
public class TeacherTest {
    Transaction transaction=null;  // 定义在这里  是为了 后续每个方法中使用
    Session session=null;
    @Before
    public  void before(){
        //01.读取核心配置文件 configure()底层就是加载了/hibernate.cfg.xml
        Configuration configuration=new Configuration().configure();
        //02.创建会话工厂 sessionFactory
        SessionFactory factory= configuration.buildSessionFactory();
        //03.创建会话  session
         session=factory.openSession();
        //04.开启事务
        transaction = session.beginTransaction();
    }
    @After
    public  void after(){
        //07.提交事务
        transaction.commit();  //  assigned 产生sql语句
        //08.关闭会话
        session.close();
    }
    /**
     * 新增教师信息
     */
    @Test
    public  void addTeacher(){
        //05.创建新增的对象
        Teacher teacher=new Teacher();
        teacher.setId(1);
        teacher.setName("教师1");
        //06.持久化操作
        System.out.println("******************************");
        session.save(teacher);   //identity产生sql语句
        System.out.println("******************************");
       // factory.close();
    }
/**
 *  数据库有对应的数据产生2条sql
 *
 *  01.先根据对象的id 去数据库中查询 看有没有数据
 *  02.如果存在根据id删除指定的信息
 *     如果不存在 只做查询操作
 */
@Test
public void  deleteTeacher(){
      //创建需要删除的对象
    Teacher teacher=new Teacher();
    teacher.setId(2); 
    System.out.println("***********************");
    //删除
    session.delete(teacher);
    System.out.println("***********************");
}
@Test
public void  updateTeacher(){
    //创建需要修改的对象
    Teacher teacher=new Teacher();
    teacher.setId(1);
    teacher.setName("小黑111");
    System.out.println("***********************");
    //修改
    session.update(teacher);
    System.out.println("***********************");
}
https://www.cnblogs.com/s122/p/9890252.html