Hibernate入门笔记


    Hibernate 对象/关系映射框架
        
    对jdbc进行轻量级封装

    操纵数据库

    java对象与对象之间的关系映射至数据库中表与表之间的关系

    传统数据库面向过程方式:建立连接—操作数据—关闭连接

    将数据库userTable表映射到java中UserTable对象,编程时

    直接操作UserTable对象访问数据库

    配置文件:hibernate.cfg.xml或hibernate.properties,完成

    连接等配置信息

    映射文件:*.hbm.xml,完成持久化对象。

    hibernate会创建一个默认名为HibernateSessionfactory的工厂类

    由它制造与数据库会话的Session对象

    自动完成创建POJO对象类即为javaBean

    Hibernate=JavaBean + JDBC

    Hibernate主键生成策略,

    Hibernate对id赋值:increment(自增)、uuid.hex(32)、uuid.string(16)
    
    应用程序本身对id赋值:assigned

    数据库对id赋值:native、identity

    Session对象创建过程:
    
    管理类Configuration—工厂类SessionFactory—Session实例

    Hibernate核心接口:

    Configuration、SessionFactory、Session、Transaction、Query

    创建SessionFactory工厂类:

    Configuration config=new Configuration().configure();

    SessionFactory sessionFactory=config.buildSessionFactory();

    其采用线程安全设计,可多线程并发调用。

    创建Session实例:

    Session session=sessionFactory.openSession();
    
    (Session session=HibernateSessionFactory.getSession();)

    拥有save、update、delete等方法,透明完成增删改查操作。

    其是非线程安全的,只可有一个线程使用。

    事务操作接口Transaction,进行事务操作

    创建事务对象:

    Transaction ts=sesssion.beginTransaction();

    Query接口,执行HQL语句:

    Query query=session.createQuery("from POJO where id=?");

    Query.setParameter(0,"001");

    //获得Object集合或Object数组集合

    List list=query.list()

    每一个Query实例对应一个查询对象

    HQL(Hibernate Query Language)面向对象查询语言

    查找所有的信息:

    Session session=HibernateSessionFactory.getSession();//获得持久化对象

    Transaction ts=session.beginTransaction();//创建事务对象

    Query query=session.createQuery("from POJO");//拿到查询对象,
    
    List list=query.list();//返回所有信息集合

    ts.commit();//事务提交

    HibernateSessionFactory.closeSession();//关闭session

    ……//遍历集合得到数据

    查询单条信息:

    Query query=session.createQuery("from POJO order by 字段名 desc");

    query.setMaxResult(1);//设置最大检索数目为1

    UserTable user=(UserTable)query.uniqueResult();//转载单个对象

    查询满足条件的信息:

    Query query=session.createQuery("from POJO where gender = 1");

    List list=query.list();

    查询范围内的信息:

    Query query=session.createQuery("from POJO where(score between 80 and 90)and course in('value1','value2')");

    List list=query.list();
    
    查询符合比较结果的信息:

    Query query=session.createQuery("from POJO where score>60 and name is not null");

    List list=query.list();

    查询字符匹配的信息:

    Query query=session.createQuery("from POJO where course like '计算机%'");

    List list=query.list();

    分页查询:

    Query query=session.createQuery("from POJO");

    int pageNow=1;//设置当前显示页

    int pageSize=5;//每页最大显示数

    query.setFirstResult((pageNow-1)*pageSize);//设置开始查询的记录

    query.setMaxResult(pageSize);

    List list=query.list();

    Hibernate关系映射略


 

猜你喜欢

转载自blog.csdn.net/zero_130/article/details/81191085