首页 > 学院 > 开发设计 > 正文

Hibernate自动创表&&Hibernate的四种查询方式

2019-11-06 07:07:56
字体:
来源:转载
供稿:网友

1.SQL   本地Sql查询 ------> createSQLQuery( "sql查询语句").addEntity(实体类);

2.HQL  Hibernate 查询语言------>    createQuery("from 实体类")

3.QBC(Query by cretirea)标准查询   ------>    createCriteria(实体类)

4.get,load方式查询            ------>           get(实体类,查询id值(即序列号)); 

代码如下

package Hibernate;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Query;import org.hibernate.SQLQuery;import org.hibernate.sessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.classic.Session;import org.hibernate.criterion.Restrictions;import org.hibernate.tool.hbm2ddl.SchemaExport;import org.junit.Test;public class test {        PRivate static SessionFactory sf;    static{        Configuration conn = new Configuration().configure();         sf = conn.buildSessionFactory();    }    // 自动建表    //@Test    public void testCreate() throws Exception {        // 创建配置管理类对象        Configuration config = new Configuration();        // 加载主配置文件        config.configure();                // 创建工具类对象        SchemaExport export = new SchemaExport(config);        // 建表        // 第一个参数: 是否在控制台打印建表语句        // 第二个参数: 是否执行脚本        export.create(true, true);    }    //QBC完全面向对象查询//    @Test    public void query_qbc() {                Configuration conn = new Configuration().configure();        SessionFactory sf = conn.buildSessionFactory();        Session session = sf.openSession();        Criteria cc = session.createCriteria(Employee_bean.class);        cc.add(Restrictions.eq("empId", 1));        List list = cc.list();        System.out.println(list);    }    //    //@Test    public void query_hql() {            Session session = sf.openSession();            Query cq = session.createQuery("from Employee_bean");            List list = cq.list();            System.out.println(list);    }    //@Test    public void query_sql() {        Session session = sf.openSession();        SQLQuery sq = session.createSQLQuery( "select * from  Employee where id=1").addEntity(Employee_bean.class);        List list = sq.list();        System.out.println(list);    }    @Test    public void query_get_load() {        Session session = sf.openSession();        Employee_bean emp1 =  (Employee_bean) session.get(Employee_bean.class, 1);        Employee_bean emp2 =  (Employee_bean) session.load(Employee_bean.class, 1);        System.out.println(emp2);        //另外可以使用get或者load方式,直接获取数据某个字段的元组值        System.out.println(emp2.getEmpName());        //总结:其实load和get效果差不多但是 ,get和load方法有区别---->get是直接输出sql语句;load是懒加载,load采用代理,等使用该对象的时候才输出结果!        }    }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表