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_PopupWindow提示框
    视图字段对应属性列表
    odoo 关系字段(关联关系)
    odoo字段属性
    odoo xml中添加数据的数字代表含义
    odoo 常用模型的简写
    odoo标识符
    odoo 权限文件说明
    Odoo的菜单项
    Odoo的 数据添加修改删除代码和对应的方式
  • 原文地址:https://www.cnblogs.com/MisterLiu/p/6933498.html
Copyright © 2011-2022 走看看