hibernate--query接口初步

Query session.createQuery(String hql)方法; 数据库

* hibernate的session.createQuery()方法是使用HQL(hibernate的查询语句)语句查询对象的。 缓存

* hql:是查询对象的,例如:"from User",其中from不区分大小写,而User是区分大小写,由于它是对象。是User类 安全

* 返回Query对象。 session

* 执行这条语句后,Hibernate会根据配置文件中所配置的数据库适配器自动生成相应数据库的SQL语句。如: 框架

ibernate: select user0_.id as id0_, user0_.name as name0_, user0_.password as password0_, 
user0_.createTime as createTime0_, user0_.expireTime as expireTime0_ from User user0_

Query的分页查询: 优化

@Test
    public void testQuery1() {
        Session session = null;
        try {
            session = HibernateUtil.getSession();
            session.beginTransaction();
            Query query = session.createQuery("from User");
            // 分页查询
            query.setFirstResult(0);// 从哪一条记录开始查询,是从0开始计算
            query.setMaxResults(2);// 分页每页显示多少条记录。
            /*
             * Query对象中有一个list()方式,将全部查询来的对象自动生成list对象返回。
             */
            List userList = query.list();
            // 而后咱们就能够显示数据了。
            for (Iterator iter = userList.iterator(); iter.hasNext();) {
                User user = (User) iter.next();
                System.out.print(user.getId() + "   ");
                System.out.println(user.getName());
            }
            session.getTransaction().commit();
        } catch (HibernateException e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        } finally {
            HibernateUtil.closeSession(session);
        }
    }

开源O/R映射框架内容回顾

Hibernate是一个O/R映射框架(也称为ORM) spa

从ORM词来看,O---Object(对象模型);R--- Relational(关联模型),能够作对象和关联的一种映射,固然这只是部分功能,一个完善ORM框架应该具备更多的功能:如HQL相关的查询语句、提供缓存机制(一级缓存、二级缓存)。 hibernate

Java开发数据库时,使用JDBC,可是须要编写大量相同的代码,这样不便提升生产效率,而hibernate可让你不能编写大量的相同的代码。从而提升生产效率。另外一方面,hibernate可让咱们更面对象化开发,还有一个移植性hibernate只须要更改配置文件(数据库适配器)的选项,就能够很是方便的移植到不一样的数据库,而不须要从新编写不一样数据库厂家所对应的JDBC、SQL语句了。还有hibernate能够解决阻抗不匹配(Java类中有继承关系,而关系型数据库中没有这个功能(目前数据库还不是面向对象,都是关系型数据库)),使用hibernate框架,侵入性比较好(所以hibernate称为轻量级框架) 线程

O/R映射框架和使用环境:在程序中添加→修改→保存;查询能够批量,可是修改不可为批量性;程序中有大量的数据只读,这样就能够一次性读取到缓存中;对象间存在天然的关系;不须要数据库SQL特定的语句优化。 code

O/R映射框架不适合环境:汇集性操做:批量性添加、修改。批量的统计查询。

Configuration对象:读取hibernate配置文件(hibernate.cfg.xml或hiberante.properties)的. new Configuration()默认是读取hibernate.properties, 因此使用new Configuration().configure();来读取hibernate.cfg.xml配置文件

SessionFactory:是一个重量级对象,它的建立是耗时的。由于它对应一个数据库里全部配置,包括一些缓存机制都由SessionFactory来维护,它与二级缓存是绑定的。一般只建立一次,但它是线程安全的。

Session:是非线程安全的,它是经过SessionFactory来建立的。不要多个线程同时访问同一个Session,不然会出现一些未知问题。一般是一个请求对应一个Session,请求完成要关闭Session

Transaction:hibernate默认不是自动开启事务的,因此要手动开启事务、手动提交事务、手动回滚事务、手动关闭事务。固然能够经过配置文件配置成自动。通常使用手动。

Hibernate正常的开发思路:考虑对象模型这一块,把对象模型创建起来,把对象图创建起来,对象之间的关系创建起来、而后再编写映射文件(hbm),而后根据映射文件生成数据库表。数据库对我来讲是透明的,咱们只操做对象不用关心数据库。

相关文章
相关标签/搜索