2018-01-21 Hibernate知识点集锦

1.什么是Hibernate

答:Hibernate是轻量级JavaEE应用的持久层解决方案,是一个关系数据库ORM框架。java程序只需要操作对象,因为存在映射关系,自动生成SQL语句,不需要你写sql语句,就可以操作数据库。


2.优点:
(1) Hibernate完全是ORM,自动生成sql语句,极大简化jdbc的操作。
(2) 具有很强的反射和代理机制,生成代理对象,(可以代码增强)在数据获取可以进行延迟抓取、缓存的使用、达到优化的目的。

(3) 移植性好。

(4).................


3.缺点:

hibernate完全orm,自动生成sql,所以很多企业用户对hibernate性能存在质疑(任何持久层框架都不如jdbc速度快,开发效率和性能的平衡)。在hibernate框架中,提供了很多优化手段。

4.运行流程:

 
     //测试查询所有数据对象
     @Test
    publicvoid testQueryAll(){
         //获取配置对象,用来加载核心配置文件hibernate.cfg.xml--材料
         Configuration configuration = new Configuration().configure();
         //2.使用配置对象获取会话工厂,用来生产会话,有点像连接池
         SessionFactory sessionFactory = configuration.buildSessionFactory();
         //3.通过工厂来获取一个会话,(和servlet没有半毛钱关系)作用:用来操作数据库对应的对象的,有点像connection
         Session session = sessionFactory.openSession();
         //4.开启事务(可以省略)
         Transaction transaction = session.beginTransaction();
         //操作数据库(通过操作对象来操作)
         //一。Query对象的
         String hql= "from Customer"; //Hibernate查询语句,该语句的语法类似于sql:select * from t_customer
         //hql是面向对象的,这里的Customer是类名,不是表名!,自动生成sql的
         Query query = session.createQuery(hql);
         //查询列表操作
         //Hibernate会自动将结果封装为实体类中
         List< Customer> list = query.list();
        System.out.println(list);
        
         //二。SqlQuery接口对象,是Query接口的子接口,可以接受sql语句
         String sql= "select * from t_customer";
         SQLQuery sqlQuery = session.createSQLQuery(sql);
         //查询列表操作
         //默认情况下,不会自动将结果封装回实体中,装到了Object[]
         //如果想自动装回实体类,必须绑定一个实体class
         List list2 = sqlQuery.addEntity(Customer.class).list();
        System.out.println(list2);
        
         //提交事务
        transaction.commit();
         //释放资源
        session.close();
        sessionFactory.close(); 
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值