zoukankan      html  css  js  c++  java
  • Hibernate API详解

    hibernate体系结构

    PO:persistent Object 持久对象,javabean+hbm.xml,习惯称呼为PO类

    Configuration

    Configuration hibernate 提供用于存放所有配置信息对象 

    构造方法

    new Configuration(),加载配置文件,hibernate.properties文件。但一般情况没有编写。

           参考的配置文件:%h%project/etc/hibernate.properties

     api

    config.configure(),加载src下hibernate.xml文件

    config.configure(String path) path指定核心配置文件的位置

       例如:conifgure("/cn/util/abc.cfg.xml")

    加载映射文件

    通常将映射文件配置hibernate.cfg.xml<mapping resource="cn/util/.../User.hbm.xml"> 

    config.addClass(*.class) 将在class对象同级目录下,同名的hbm.xml文件

          例如:config.addClass(Book.class),加载Book类,所在的包下面的Book.hbm.xml文件

    config.addResource(String hbm)将指定映射文件xml加载内存,此时文件名称任意,不建议任意

    SessionFactory

    sessionFactory  用于提供session,相当于连接池,通过Configuration加载hibernate.cfg.xml创建对象

    获得对象:config.builderSessionFactory()

    SessionFactory是线程安全的。目的是每一个线程获得的session都是不同的,不存在线程并发问题

    session获得:

      创建一个新的session:factory.openSession();

      将session绑定本地线程中,在一个线程共享session:factory.getCurrentSession();(之后使用)

    工具类

    package cn.hibernate.util;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;

    public class H3Utils {
    //方式1
    //private static SessionFactory factory2 = new Configuration().configure().buildSessionFactory();


    //方式2
    //创建一个工厂
    private static Configuration configuration;
    private static SessionFactory factory;


    static{
    configuration = new Configuration().configure();
    factory = configuration.buildSessionFactory();
    }


    public static Session openSession(){
    return factory.openSession();
    }
    }

    Session接口

    session :服务器 与 数据库之间会话,相当于 Connection

    session单线程,存在线程并发问题,线程不安全。 

    注意:session必须关闭,session.close();

    Transaction 

    开启事物:session.beginTransaction();

    提交事物:session.commit();

    回滚事物:session.rollback();

    @Test
    public void demo01(){
    //01.获取session
    Session session = H3Utils.openSession();
    Transaction transaction = null;
    try {
    //#1开启事物
    transaction = session.beginTransaction();

    //操作:。。。。


    //#2提交
    transaction.commit();
    } catch (HibernateException e) {
    // TODO Auto-generated catch block
    if(transaction != null){
    //#3回滚
    transaction.rollback();
    }
    e.printStackTrace();
    }
    }

  • 相关阅读:
    开发流程
    团队模式
    android studio 中点击button加1或者减1
    登录注册界面的测试点
    用在线工具processOn画UML的用例图和时序图
    android studio中R文件丢失了
    第一次迭代任务
    WBS(work Breakdown Structure)
    #“速达” app NABCD分析
    “速达”app电梯演说
  • 原文地址:https://www.cnblogs.com/MisterLiu/p/6933498.html
Copyright © 2011-2022 走看看