一、主配置文件hibernate.cfg.xml

位置:放在src目录下。

主要包含信息:

一、数据库信息    数据库方言(类的全名) 及 数据库链接信息

1.      数据库方言

2.      数据库连接字符串

3.      数据库驱动类名

4.      数据库名

5.      数据库密码

二、其他配置

比如:

1.	<property name="show_sql">true</property><!-- 是否显示 sql语句-->
2. <property name="format_sql">false</property><!--是否格式化显示sql语句-->
3. <property name="hbm2ddl.auto">update</property><!--创建表的方式-->
<!--
create:在创建前,先删除表
create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
update:一般在项目中使用
validate:带有验证功能
-->

三、导入映像配置文件

<mappingresource="com/xiaohui/hibernate/User.hbm.xml"/>

也可以不用配,在配置文件对象 Configuration 加载主配置文件后通过addClass(Obj.class)方法自动的加载同一目录下的类名.hbm.xml映像配置文件。

示例代码

<session-factory>
<!-- 一、数据库信息 数据库方言(类的全名) 及 数据库链接信息 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="connection.url">jdbc:mysql:///hibernate</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 二、 其他 配置 -->
<property name="show_sql">true</property><!-- 是否显示 sql语句-->
<property name="format_sql">false</property>
<!--
create:在创建前,先删除表
create-drop:启动时创建 程序结束时 删除表在测试不保留数据时 使用
update:一般在项目中使用
validate:带有验证功能
-->
<property name="hbm2ddl.auto">update</property>
<!--三、 导入配置文件
<mapping resource="com/xiaohui/hibernate/User.hbm.xml"/>
-->
</session-factory>

二、映像配置文件 类名.hbm.xml

位置:和对用的类在同一目录下。

信息包含  需要映射的类的全名,以及映射到数据库的表名。类的属性名,表的字段名(不设置默认和类的属性名 一致。当属性名为数据库的关键字时,需要用 ` 反单引号括起来)字段名 包含普通字段(如:int,Integer,String,Date,boolean,byte[]),以及自定义对象。

如:

<hibernate-mapping package="org.hibernate.test.extendshbm">
<class name="com.xiaohi.c_hbm_property.Person" table="person">
<id name="id" type="int" column="id">
<generator class="increment"/>
</id>
<!-- 类属性名 类型小写 对应的表列名 -->
<property name="name" type="string" not-null="true" length="30"/>
<property name="birthday" not-null="true" type="date" />
<property name="gender" not-null="true" type="boolean"/>
<property name="desc" not-null="true" type="text" column="`desc`" length="5000"/>
<property name="photo" not-null="true" type="binary" length="51200"/>
</class>
</hibernate-mapping>

一般主键的配置:

<id name="id">
<!-- identity,使用数据库的自动增长,在保存时会忽略手工指定的主键值而由数据库生成
要求此属性要是数字类型
<generator class="identity"/>
-->
<!-- assigned,手工指定,比如指定UUID
<generator class="assigned"/>
-->
<!-- uuid,由Hibernate生成UUID并指定为主键值,要求此属性要是String型
<generator class="uuid"/>
-->
<!-- hilo,高低位算法生成主键,需要用到一个额外的表,所有的数据库都可以使用这种类型
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
-->
<!-- native,根据底层数据库的能力选择 identity、sequence 或者 hilo 中的一个 -->
<generator class="native"/>
</id>

组合主键的配置:

<!-- 映射联合主键的配置 -->
<composite-id>
<key-property name="firstName" type="string" />
<key-property name="lastName" type="string" />
</composite-id>

当使用组合主键时,javaBean对象需要实现java.io.Serializable接口。并且在获取对象时,使用session.get(obj.class,obj)方法中obj需要设置联合主键的每一个值(单列主键的 一般直接传id值)

public void getTest(){
Session session = sessionFactory.openSession();
session.beginTransaction();
Person p = new Person();
p.setFirstName("古");
p.setLastName("天乐");
Person user = (Person) session.get(Person.class, p);
System.out.println(user.getFirstName()+":"+user.getLastName()+":"+user.getGender());
session.getTransaction().commit();
session.close();
}

组成关系的映射配置:

<class name="com.xiaohui.hibernate.User" table="user">
<id name="id">
<generator class="native"/>
</id>
<property name="name" type="string"/>
<!-- 组成关系映射 -->
<component name="address" class="com.xiaohui.e_component.Address">
<property name="address"/>
<property name="tel"/>
<property name="zipCode"/> </component>
</class>

生成的表为5个字段 。

hibernate笔记(一)的更多相关文章

  1. 框架Hibernate笔记系列 基础Session

    标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...

  2. hibernate笔记--cascade级联以及inverse属性

    cascade : 不管是单向多对一还是一对多,或者是双向的一对多关系,在一的一端映射文件中有一个set标签,在多的一端有many-to-one标签,拿前几篇笔记里讲的Grade和Student举例, ...

  3. Hibernate 笔记 HQL查询 条件查询,聚集函数,子查询,导航查询

    在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题? 解决方案一,按照Object[]数据取出数据,然后自己组bean 解决方 ...

  4. Hibernate笔记一

    背景 jdbc的优缺点 A:直接操作底层,提供了简单,便捷的访问数据库方法,跨平台比较强,灵活,可以写很多赋值的SQL语句:是最底层的数据库操作,所以效率比较高,Sql语句可以自己选择写,采用效率最高 ...

  5. hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存

    二级缓存(sessionFactory): Hibernate的二级缓存由SessionFactory对象管理,是应用级别的缓存.它可以缓存整个应用的持久化对象,所以又称为“SessionFactor ...

  6. hibernate笔记--缓存机制之 一级缓存(session缓存)

    一级缓存: 又称为session缓存,它和session生命周期相同,周期非常短.是事务级别的缓存: 还是以Book和Category这两个表为例,我们用代码观察一个缓存的存在: 假设现在我要去查询i ...

  7. hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系

    前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hi ...

  8. hibernate笔记--继承映射关系的三种实现方式

    单表继承映射(一张表): 假设我们现在有三个类,关系如下: Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映 ...

  9. hibernate笔记--单(双)向的多对多映射关系

    在讲单向的多对多的映射关系的案例时,我们假设我们有两张表,一张角色表Role,一张权限表Function,我们知道一个角色或者说一个用户,可能有多个操作权限,而一种操作权限同时被多个用户所拥有,假如我 ...

  10. hibernate笔记--基于主键的单(双)向的一对一映射关系

    上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这 ...

随机推荐

  1. iOS开发--汉字转成没有声调也没有空格的拼音

     //汉字转成没有声调也没有空格的拼音- (NSString *)transformToPinYin:(NSString *)wordStr {    NSMutableString *mutable ...

  2. json与字符串互转

    1 字符串转JSON var obj=eval('('+str+")') var obj=JSON.parse(str) var obj=str.parseJSON() 2 JSON转字符串 ...

  3. 关于MyEclipse启动时的插件启动(Maven4MyEclipse)

    在myEclipse的应用中有许多插件在开发的时候都用不到,那么,这些插件在启动myEclipse的时候一起启动的越少越好了 Maven4Myeclipse update 每当启动myEclipse的 ...

  4. C#中foreach语句的迭代器实现机制

    C#中的foreach语句可用于循环遍历某个集合中的元素,而所有的只要支持了IEnumerable或IEnumerable<T>泛型接口的类型都是可以 用foreach遍历的.其具体的遍历 ...

  5. Nginx 之五: Nginx服务器的负载均衡、缓存与动静分离功能

    一.负载均衡: 通过反向代理客户端的请求到一个服务器群组,通过某种算法,将客户端的请求按照自定义的有规律的一种调度调度给后端服务器. Nginx的负载均衡使用upstream定义服务器组,后面跟着组名 ...

  6. python实现单向链表

    #Definition for singly-linked list. class ListNode(object): def __init__(self, x): self.val = x self ...

  7. HDU2084:数塔(DP)

    Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...

  8. AsyncQueryHandler处理数据

    参考:http://blog.csdn.net/hfreeman2011/article/details/8555474和http://blog.csdn.net/dragondog/article/ ...

  9. A - Number Sequence(矩阵快速幂或者找周期)

    Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * ...

  10. postgresql文档生成注意事项

    如果要生成中文版的postgresql,目前我所知道的方法见我的一篇博客http://www.cnblogs.com/codeblock/p/4812445.html 里面有详细的介绍,但是生成的文档 ...