Hibernate的初步认识

这是学习java的第四个月,开始了框架的学习,先看看关于hibernate的一些基础知识吧!!!!!!!

Hibernate的简介

1、     是优秀的持久化解决方案。

2、     实现持久化的两种方式:

a) 序列化:将对象以流的形式保存在硬盘中

b) 数据库:将对象转换成数据库中的一条数据

3、     对象映射关系:ORM(ObjectRelationship Mapping)

     java   数据库

           

       对象     /一条数据

       属性    

使用hibernate的步骤

1、       装配hibernatejar包和配置文件(hibernate.cfg.xml

配置文件中可以添加属性:运行的时候会在后台打印sql语句

<property name="show_sql">true</property>

<property name="format_sql">true</property>

2、       反向工程:自动生成实体类(生成实体类和.hbm.xml文件)

3、       Hibernate的方言机制,就是让所有都认识sql语句

《换数据库,代码不变》

<property name="dialect">

   org.hibernate.dialect.MySQLDialect

</property>

初步使用hibernate编写代码

/**

* hibernate操控数据库依赖于session对象

*/

//加载配置信息,其实就是加载hibernate.cfg.xml文件

Configuration cfg = new Configuration().configure();

//创建工厂对象

SessionFactory sf = cfg.buildSessionFactory();

//创建session对象

Session session = sf.openSession();

//创建查询语句,使用HQLHibernate Query Language语句

List<Users> list = session.createQuery("from Users").list();

封装工具类,实现CRUD

注意:反向的表必须有主键,如果没有主键就会创建主键类

publicclass MySession {

   privatestatic Configuration cfg = new Configuration().configure();

   privatestatic SessionFactory sf;

   //创建线程  为了保持数据一致

   privatestatic ThreadLocal<Session> tl = new ThreadLocal<Session>();

   //工厂

   static{

      sf = cfg.buildSessionFactory();   

   }

   protectedstatic Session getSession() {

      Session session = tl.get();

      if(session == null){

          session = sf.openSession();

          tl.set(session);

      }

      returnsession;

   }

}

使用封装工具

1、查询

   List<Users> list = getSession().createQuery("from Users").list();

2、删除

   //删除

   publicstaticvoid deleteUsers(intid){

      Session session = getSession();

      session.beginTransaction();

      //通过id查询数据

      Users u = session.get(Users.class, id);

      //将查到的id数据删除

      session.delete(u);

      session.getTransaction().commit();

   }

3、添加或修改

//将添加和修改合二为一

   publicstaticvoid saveOrUpdate(Users u){

      Session session = getSession();

      session.beginTransaction();

      //添加或者修改,如果id存在就修改,如果不存在就添加

      session.saveOrUpdate(u);

      session.getTransaction().commit();

   }

4、模糊查询

   //模糊查询

   publicstatic List<Users> findLike(String name){

      Session session = getSession();

      //创建hql语句

      String hql = "from Users where uname like :n";

      Query q = session.createQuery(hql);

      //占位赋值  如果是:x  这儿就是("x",name)

      q.setString("n", name);

      returnq.list();

   }

5、分页查询

   publicstatic List<Users> findUsers(){

      Session session = getSession();

      Query q = session.createQuery("from Users");

      //参数为偏移量pageIndex 当前页码 pageSize 每页的条数

      q.setFirstResult((pageIndex-1)*pageSize);

      //参数为每页最大的条数

      q.setMaxResults(pageSize);

      returnq.list();

   }

Hibernate jdbc 的关系

Hibernate取代了jdbc的复杂的操作(错的)

Jdbc是原生的java代码,而hibernate只是jdbc的另一种封装形式,不管代码多么的简单,并且和jdbc一点关系都没有,但是,最后的hibernate程序都会转换成jdbc来执行操作

Hibernate方言是hibernate的招牌。

Hibernatelist方法和Iterator有什么区别(面试题

List

Iterator

List的原理:查询全部的数据,发出一条sql语句,对于小数据量来说是适合的。

Iterator的原理:先查询所有的id1条),然后根据每一个id查询匹配的对象(N条),发出N+11+N)条语句,对于大数据量来说Iterator是适合的。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值