zoukankan      html  css  js  c++  java
  • Hibernate学习笔记(4)---hibernate的核心接口

    Configuration类

    该类主要是读取配置文件,启动hibernate,并负责管理hibernate的配置信息,一个程序只创建一个Configuration对象。

    Configuration类操作方法

    创建Configuration类

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

      调用该方法后会自动查找默认hibernate.cfg.xml文件

    如果想指定目录下自定义的

    <!--创建File对象-->
    File file = new File(路径);
    Configuration config =new Configuration().configure(file);
    

      还可以用于创建SessionFactory对象(后面写)

    加载多个XML文件

    Configuration config = new Configuration().addResource(xml文件);//加载多继续写.addResource

      调用setProperty方法实现动态配置属性值

    SessionFactory接口

    hibernate初始化,主要是生成session对象,而且一个程序只有一个SessionFactory

    创建SessionFactory

    Configuration config = new Configuration().getconfigure();
    SessionFactory sessionFactory = config。buildSessionFactory();
    

      SessionFactory相关配置(主要是数据库配置,下面列出一些,也就是hibernate.cfg.xml配置文件)

        <session-factory>
            <!-- 配置数据库方言 -->
            <property name="dialect">
                org.hibernate.dialect.MySQLDialect
            </property>
            <!-- 配置数据库连接URL -->
            <property name="connection.url">
                jdbc:mysql://localhost:3306/user
            </property>
            <!-- 配置数据库用户名 -->
            <property name="connection.username">root</property>
            <!-- 配置数据库密码 -->
            <property name="connection.password">123456</property>
            <!-- 配置数据库JDBC驱动 -->
            <property name="connection.driver_class">
                com.mysql.jdbc.Driver
            </property>
             
            <property name="myeclipse.connection.profile">driver</property>
            <!-- 底部输出sql语句 -->
            <property name="show_sql">true</property>
            <!-- 底部输出sql语句格式化 -->
            <property name="hibernate.format_sql">true</property>
             
            <!-- 把配置文件导入核心文件 ,后面会写到 -->
            <mapping resource="cn/dto/User.hbm.xml" />
     
        </session-factory>
    

      ps:Session是否是线程安全的http://blog.sina.com.cn/s/blog_72c948d701017yb5.html

    Session接口

    创建seesion

    Session session = sessionFacctory.openSession();

    生命周期:以Transaction对象(事务)的事务开始和结束为边界

    seesion对象提供了一系列与持久化相关操作。

    save()方法

       将对象加入缓存中,同时标注为持久态(持久态,托管态,瞬时态)

       根据映射文件中配置信息生成实体类对象的唯一标识

        生成计划执行的insert语句(但并不会执行insert语句,要等事务提交后)

    具体用法:

    User user =new User();
    user.setUsername("durui");        //瞬时态
    Session session = sessionFacctory.openSession();           //托管态
    Transaction tx  = session .beginTransaction();//开启事物
    session.save(user)           //持久态
    tx.commit();//提交事务
    session.close();
    

      update()方法

          将对象加入缓存中,同时标注为持久态

          生成计划执行的update语句

    User user =new User();
    user.setUsername("durui");       
    Session session = sessionFacctory.openSession();          
    Transaction tx  = session .beginTransaction();//开启事物
    session.update(user)           
    tx.commit();//提交事务
    session.close();
    

      saveOrUpdate()方法

    可以根据不同情况对数据库执行insert或者update操作

           delete()对象

    删除实例所对应的数据库记录(必须设置主键)

    User user =new User();
    user.setId("1");       
    Session session = sessionFacctory.openSession();          
    Transaction tx  = session .beginTransaction();//开启事物
    session.delete(user)           
    tx.commit();//提交事务
    session.close();
    

      get()方法

    通过标识符得到指定类的持久化对象,若没有返回空

    Session session = sessionFacctory.openSession();          
    Transaction tx  = session .beginTransaction();//开启事物
    User user = (User)session.get(User.class,"1");//强制转换
    system.out.println(user.getId());
    tx.commit();
    seesion.close();
    

      load()方法

    和get()方法一样,但对象必须存在,否则产生异常

      contains()方法

    判断一个实例是否与当前的session对象相关,也可以判断是否为持久态

      evict()方法

    管理session缓存

      clear()方法

    清空session的缓存

       createQuery()方法(下节)

    用于建立Query查询接口实例

    Query query = session。createQuery();
    

      createCriteria()方法(下节)

    建立Criteria查询接口的实例

    Criteria crit = seesion.createCriteria();
    

      createSQLQuery()方法

    从字面意思就知道是sql查询

    List users = session。createSQLQuery(sql语句)。list();
    

      createFilter()方法

    用于一个持久化集合或者数组特殊查询

  • 相关阅读:
    android界面横屏和竖屏的切换
    google 提供webrtc 的实例使用 turnserver的方式
    如何使官方提供的AppRTCDemo 运行在自己搭建的server(官方提供的apprtc)上(官方的server源码)
    android在全屏下第一次触摸屏幕没有触发事件
    ubuntu常用命令记录集
    python 一个包中的文件调用另外一个包文件 实例
    python-插入排序
    phantomjs submit click
    python socket.error: [Errno 10054] 解决方法
    python-快速排序,两种方法→易理解
  • 原文地址:https://www.cnblogs.com/durui/p/7582574.html
Copyright © 2011-2022 走看看