博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate学习笔记(一)
阅读量:6072 次
发布时间:2019-06-20

本文共 3565 字,大约阅读时间需要 11 分钟。

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删除指定的信息 *     如果不存在 只做查询操作 */@Testpublic void  deleteTeacher(){      //创建需要删除的对象    Teacher teacher=new Teacher();    teacher.setId(2);     System.out.println("***********************");    //删除    session.delete(teacher);    System.out.println("***********************");}@Testpublic 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

你可能感兴趣的文章
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>
好程序员web前端分享JS检查浏览器类型和版本
查看>>
Oracle DG 逻辑Standby数据同步性能优化
查看>>
exchange 2010 队列删除
查看>>
android实用测试方法之Monkey与MonkeyRunner
查看>>
「翻译」逐步替换Sass
查看>>
H5实现全屏与F11全屏
查看>>
处理excel表的列
查看>>
Excuse me?这个前端面试在搞事!
查看>>
C#数据采集类
查看>>
quicksort
查看>>