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

来源:互联网 发布:打谱软件什么意思 编辑:程序博客网 时间:2024/06/11 03:59

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采用代理,等使用该对象的时候才输出结果!
    
    }
    
}

1 0
原创粉丝点击