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();
}