zoukankan      html  css  js  c++  java
  • Hibernate总结2 API和配置文件

    1,Configuration 配置

    获取config配置文件的方法

    Configuration cfg = new Configuration();

    cfg.下面的方法

      • configure()
      • configure(String resource)

    添加映射文件,映射文件为类名.hbm.xml配置文件,用于配置类的成员变量和表列的相匹配关系

    addResource(String resource) 导入一个指定位置的映射文件

    载入类,根据类.Class来载入类名

    addClass(Class clazz) 导入与指定类同一个包中的以类名为前缀,后缀为.hbm.xml的映射文件

    生成sessionFacotry

    buildSessionFactory()

    2,SessionFactory Session工厂

    获取Session,关闭Session,此关闭session是指将session返还给session工厂

    openSession()
    getCurrentSession()
    close()

    3,Session 很重要的一个对象

    操作对象的方法

      • save(Object)
      • update(Object)
      • delete(Object)

    查询的方法

      • createQuery(String) --> Query
      • createCriteria(Class)

    管理事务的方法

      • beginTransaction() --> Transaction
      • getTransaction() --> Transaction 获取当前Session中关联的事务对象

    其他的方法
    ...

    Transaction 事务

      • commit()
      • rollback()

    Query 查询

      • list() 查询一个结果集合。
      • uniqueResult() 查询一个唯一的结果,如果没有结果,则返回null,如果结果有多个,就抛异常。

    4,Hibernate主配置文件

    1,数据库信息

    <property ...>

    方言、JdbcUrl、驱动、用户名、密码

    2,导入映射文件

    <mapping ...>

    3,其他配置

    <property ...>

    show_sql 显示生成的SQL语句

    format_sql 格式化生成的SQL语句

    hbm2ddl.auto 自动生成表结构

    hibernate.hbm2ddl.auto  自动生成表结构

    5,主键类型

    如果主键是数字的话,类建议使用包装类型,比如说Integer类型来代替int类型

    表中的主键常用<generator class="native" />来作为主键的生成规则,因为这个匹配大部分数据库,包括有自动增长(mssql,mysql)的和无自动增长通过序列的(oracle)

    6,插入集合类型的

    常见的集合有Set(hashset),list(arraylist),array,map(hashmap)等,在xxx.hbm.xml配置时,具体的配置如下

    注意:使用集合属性时,一定要使用接口,而不能声明为具体的实现类。因为经过Session操作后,集合就变成了Hibernate自己的集合实现类。

    7,映射关联关系

    多对一关系

     <!-- department属性,表达的是本类与Department的多对一 
    2             class属性:关联的实体类型
    3             column属性:外键列(引用关联对象的表的主键)
    4         -->
    5         <many-to-one name="department" class="Department" column="departmentId"></many-to-one>

    1         <!-- department属性,表达的是本类与Department的多对一 
    2             class属性:关联的实体类型
    3             column属性:外键列(引用关联对象的表的主键)
    4         -->
    5         <many-to-one name="department" class="Department" column="departmentId"></many-to-one>

    一对多关系

     

       多对多关系

    <!-- name对应于对象中多的那个集合的属性值 ,table对饮两个对对多的表名,inverse对应是否相互通知对方-->
    2         <set name="teachers" table="teacher_student" inverse="true">
    3         <!-- key对应于对象在对应关系表中的主键 -->
    4             <key column="stu_id"></key>
    5             <!-- class对应与多对多另外一方的类名,column对应在多对多表中,另外一个类的主键对应的值 -->
    6             <many-to-many class="Teacher" column="te_id"></many-to-many>
    7         </set>

    复制代码
    1         <!-- name对应于对象中多的那个集合的属性值 ,table对饮两个对对多的表名,inverse对应是否相互通知对方-->
    2         <set name="teachers" table="teacher_student" inverse="true">
    3         <!-- key对应于对象在对应关系表中的主键 -->
    4             <key column="stu_id"></key>
    5             <!-- class对应与多对多另外一方的类名,column对应在多对多表中,另外一个类的主键对应的值 -->
    6             <many-to-many class="Teacher" column="te_id"></many-to-many>
    7         </set>
    复制代码

     8,映射关系简单图鉴

    一对多(Set)
    <Set name="">
    <key column=""/> (写对方类的表达此关系的外键列名)
    <one-to-many class=""/>
    </Set>

    多对一
    <many-to-one name="" class="" column="" />

    多对多<set>
    <set name="" talbe="">
    <key column=""/> (引用自己主键)
    <many-to-many class="" column/>(引用对方主键)
    </set>

    一对一(基于外键的有外键方)
    <many-to-one name="" class="" unique="true" />

    一对一(基于外键的无外键方)
    <one-to-one name="" class="" property-ref=""/>

  • 相关阅读:
    内联汇编的使用
    metamask注记词
    一个简单的增删改查合约
    企业邮箱账号
    压缩包管理
    设计模式
    软硬链接ln
    文件IO-Linux
    静态库和动态库
    gdb调试
  • 原文地址:https://www.cnblogs.com/hoobey/p/5967515.html
Copyright © 2011-2022 走看看