hibernate笔记(一)
一、主配置文件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笔记(一)的更多相关文章
- 框架Hibernate笔记系列 基础Session
标题:框架Hibernate笔记 资料地址: 1. www.icoolxue.com 孔浩 1.背景简介 Hibenate是JBoss公司的产品.它是数据持久化的框架.Usually,我们使用JDBC ...
- hibernate笔记--cascade级联以及inverse属性
cascade : 不管是单向多对一还是一对多,或者是双向的一对多关系,在一的一端映射文件中有一个set标签,在多的一端有many-to-one标签,拿前几篇笔记里讲的Grade和Student举例, ...
- Hibernate 笔记 HQL查询 条件查询,聚集函数,子查询,导航查询
在hibernate中进行多表查询,每个表中各取几个字段,也就是说查询出来的结果集并没有一个实体类与之对应,如何解决这个问题? 解决方案一,按照Object[]数据取出数据,然后自己组bean 解决方 ...
- Hibernate笔记一
背景 jdbc的优缺点 A:直接操作底层,提供了简单,便捷的访问数据库方法,跨平台比较强,灵活,可以写很多赋值的SQL语句:是最底层的数据库操作,所以效率比较高,Sql语句可以自己选择写,采用效率最高 ...
- hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
二级缓存(sessionFactory): Hibernate的二级缓存由SessionFactory对象管理,是应用级别的缓存.它可以缓存整个应用的持久化对象,所以又称为“SessionFactor ...
- hibernate笔记--缓存机制之 一级缓存(session缓存)
一级缓存: 又称为session缓存,它和session生命周期相同,周期非常短.是事务级别的缓存: 还是以Book和Category这两个表为例,我们用代码观察一个缓存的存在: 假设现在我要去查询i ...
- hibernate笔记--使用注解(annotation)方式配置单(双)向多对一的映射关系
前面几篇都是介绍的用配置文件来实现实体类到数据库表的映射,这种方式是比较麻烦的,每一个pojo类都需要写一个相应的*.hbm.xml,无疑增加了很多代码量,不过也有优点就是利于维护,为了方便开发,Hi ...
- hibernate笔记--继承映射关系的三种实现方式
单表继承映射(一张表): 假设我们现在有三个类,关系如下: Person类有两个子类Student和Teacher,并且子类都具有自己独有的属性.这种实体关系在hibernate中可以使用单表的继承映 ...
- hibernate笔记--单(双)向的多对多映射关系
在讲单向的多对多的映射关系的案例时,我们假设我们有两张表,一张角色表Role,一张权限表Function,我们知道一个角色或者说一个用户,可能有多个操作权限,而一种操作权限同时被多个用户所拥有,假如我 ...
- hibernate笔记--基于主键的单(双)向的一对一映射关系
上一节介绍的基于外键的一对一映射关系中,在Person表中有一个外键列idCard_id,对应的idCard表的主键id,至于基于主键的一对一映射关系,就是指Person表中抛弃了idcard_id这 ...
随机推荐
- photoshop使用注意事项
CMYK 与 RGB 任何网络图片都会以RGB模式显示图片: 数码图片以RGB模式被捕捉,因此应在RGB模式下编辑: 大部分工具和滤镜只能在RGB模式下使用: RGB模式和CMYK模式之间不能实现无损 ...
- FreeCodeCamp:Return Largest Numbers in Arrays
要求: 右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组. 提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素. 结果: l ...
- Windows下搭建objective C开发环境
摘自:http://blog.csdn.net/zhanghefu/article/details/18320827 最近打算针对iPhone.iPod touch和iPad开发一些应用,所以,需要开 ...
- python成长之路10
断点续传 python2.7 多继承 py35多继承 socketserver源码 支持并发处理socket i/o多路复用 上节回顾 socket ...
- 安装duetdisplay遇到的问题
1.报错failed to correctly acquire vcredist_x64.exe ifle:CRC error 已经确认了 和墙有关系,通过FQ可以正常安装了. 2.在PAD屏幕上面播 ...
- poj 2661 Factstone Benchmark
/** 大意: 求m!用2进制表示有多少位 m! = 2^n 两边同时取对数 log2(m!) = n 即 log2(1) + log2(2)+log2(3)+log2(4)...+log2(m) = ...
- 解决sqlite删除数据后,文件大小不变问题(VACUUM)
删除表格的全部数据: DELETE FROM [Name] 当在sqlite中删除了大量数据后,数据库文件的大小还是那样,没有变.原因是:从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的” ...
- 解读Google分布式锁服务
解读Google分布式锁服务 背景介绍 在2010年4月,Google的网页索引更新实现了实时更新,在今年的OSDI大会上,Google首次公布了有关这一技术的论文. 在此之前,Google的索引更 ...
- Windows XP硬盘安装Ubuntu 12.04双系统图文详解
Windows XP硬盘安装Ubuntu 12.04双系统图文详解 Ubuntu 12.04 LTS版本于2012年4月26日发布,趁着五一放假,赶紧在自己的Windows XP的电脑上安装下Ubun ...
- FZU 1686 神龙的难题 DLX反复覆盖
DLX反复覆盖: 须要一个A*函数剪支 Problem 1686 神龙的难题 Accept: 462 Submit: 1401 Time Limit: 1000 mSec Memory L ...