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配置时,具体的配置如下

 <!-- addressSet属性,Set集合
table属性:集合表的名称
key子元素:集合外键的列名
element子元素:存放集合元素的列的信息
sort属性:"unsorted|natural|comparatorClass"
默认为:unsorted
order-by属性:写的是order by 子句,是SQL语句,是操作的集合表。
这是在查询数据时指定orderby子句。
-->
<set name="addressSet" table="user_addressSet" order-by="address ASC">
<key column="userId"></key>
<element type="string" column="address"></element>
</set> <!-- addressList属性,List集合
list-index:用于存放索引的列
-->
<list name="addressList" table="user_addressList">
<key column="userId"></key>
<list-index column="idx"></list-index>
<element type="string" column="address"></element>
</list> <!-- addressArray属性,数组。与List的映射基本一致 -->
<array name="addressArray" table="user_addressArray">
<key column="userId"></key>
<list-index column="idx"></list-index>
<element type="string" column="address"></element>
</array> <!-- addressMap属性,Map集合 -->
<map name="addressMap" table="user_addressMap">
<key column="userId"></key>
<map-key type="string" column="key_"></map-key>
<element type="string" column="address"></element>
</map> <!-- addressBag属性,Bag集合:无序,可重复。与Set集合的映射基本一致 -->
<bag name="addressBag" table="user_addressBag">
<key column="userId"></key>
<element type="string" column="address"></element>
</bag>

hbm.xml集合配置

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

7,映射关联关系

多对一关系

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

多对一关系,存在于hbm.xml文件中

一对多关系

         <!-- employees属性,Set集合,表达的是本类与Employee的一对多
class属性:关联的实体类型
key子元素:对方表中的外键列(多方的那个表) inverse属性:
默认为false,表示本方维护关联关系。
如果为true,表示本方不维护关联关系。
只是影响是否能设置外键列的值(设成有效值或是null值),对获取信息没有影响。 cascade属性:
默认为none,代表不级联。
级联是指操作主对象时,对关联的对象也做相同的操作。
可设为:delete, save-update, all, none ...
<set name="employees" cascade="all">
<key column="departmentId"></key>
<one-to-many class="Employee"/>
</set>

一对多,存在于hbm.xml文件中

  多对多关系

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

多对多关系,存在于hbm.xml文件中

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=""/>

Hibernate总结2 API和配置文件的更多相关文章

  1. hibernate系列笔记(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  2. hibernate框架(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  3. 分享知识-快乐自己:Hibernate框架常用API详解

    1):Configuration配置对象 Configuration用于加载配置文件. 1): 调用configure()方法,加载src下的hibernate.cfg.xml文件 Configura ...

  4. 二、hibernate的常用API

    hibernate的调用过程 public class demo01 { @Test public void test(){ // 1.加载hibernate核心配置文件 Configuration ...

  5. MyEclipse10中自动生成Hibernate的实体和xml配置文件

    前提:1.在项目中添加Hibernate支持 2.MyEclipse中已经创建好数据库连接 3.表已经建好并且有主键 步骤如下: 1.在DB Browser窗口的已打开连接节点中选中用户创建的所有的表 ...

  6. Routing in ASP.NET Web API和配置文件的设定读取

    Routing Tables In ASP.NET Web API, a controller is a class that handles HTTP requests. The public me ...

  7. Hibernate的核心API

    Configuration:负责管理Hibernate的配置信息 1.加载核心配置文件 核心配置有两种: hibernate.properties 加载:Configuration configura ...

  8. Lua,Lua API,配置文件

    想像一个场景:你的c程序须要有一个窗体,你想让用户能够自己定义窗体大小.方法非常多.比方使用环境变量,或键值对的文件. 无论如何,你须要解析它. 使用lua配置文件是个不错的选择. 首先,你能够定义例 ...

  9. Hibernate查询之API查询

    Hibernate在检索数据上,可以使用SQL.HQL和官方API进行查询,本人主要利用API进行相关查询的小demo. 话不多少直接上demo. demo1:基本查询 /** * 默认不加任何条件的 ...

随机推荐

  1. 转:查看sql语句执行时间/测试sql语句性能

    原文出处:http://www.cnblogs.com/qanholas/archive/2011/05/06/2038543.html 写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务 ...

  2. mvc 开发razor模式注意事项

    1 情景为:mvc模式开发的.cshtml画面,里面有@if语句,if语句里面还有其他的代码,画面总是报错:if模块中没有对应的"}",什么问题 跟踪了之后,判定cs语句没问题,那 ...

  3. linux 学习随笔-磁盘管理

    1:df 用于查看已挂载磁盘的容量信息 -i 查看inodes使用情况 -h 以合适的单位显示 -k -m 分别以k M单位显示 2:du 查看某个文件或者目录占用的空间 du [-abckmsh] ...

  4. 最受欢迎的Java第三方库

    前言 翻译自programcreek: 典型的Java项目通常会依赖一些第三方库,本文总结了一些最受欢迎的Java库,这些类库在各种应用程序中被广泛使用: 当然,Java SDK是最广泛使用的Java ...

  5. hibernate 实现分页查询语句、单条查询语句、多条查询语句、修改、删除语句

    package com.hanqi.test; import java.util.Date; import java.util.List; import org.hibernate.Query; im ...

  6. pt-diskstats 报错 Can't locate Time/HiRes.pm in @INC

    调用 pt-diskstats 时报错如下Can't locate Time/HiRes.pm in @INC [root@localhost ~]# pt-diskstats Can't locat ...

  7. SQL Server调优系列基础篇(子查询运算总结)

    前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...

  8. MySQL基础学习(一) 命令行命令

    1. 命令行登录 mysql -uroot -p 按照提示输入密码 常用登录选项 -u 指定用户 -p 密码 -h 数据库所在主机 -P 端口 -D 指定数据库 2.命令行退出 exit quit \ ...

  9. sizeof和strlen()区别

    sizeof关键字和strlen()标准函数都可以用来测试字符串的长度,但是两者有很大的不同 sizeof只能在本函数内, 使用""和不指定长度的字符数组中才能测出字符串的真实长度 ...

  10. java运算优先级

    列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目 ( ) 圆括号 从左到右   [ ] 方括号 从左到右   2 + 正号 从右到左 单目 - 负号 从右到左 单目 ++ ...