Hibernate的初步认识

来源:互联网 发布:知几是什么意思 编辑:程序博客网 时间:2024/06/06 00:23

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

Hibernate的简介

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

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

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

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

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

     java   数据库

           

      对象    /一条数据

      属性    

使用hibernate的步骤

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

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

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

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

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

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

《换数据库,代码不变》

<propertyname="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 Configurationcfg =new Configuration().configure();

   privatestatic SessionFactorysf;

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

   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(Usersu){

      Session session = getSession();

      session.beginTransaction();

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

      session.saveOrUpdate(u);

      session.getTransaction().commit();

   }

4、模糊查询

   //模糊查询

   publicstatic List<Users> findLike(Stringname){

      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是适合的。





原创粉丝点击