Hibernate入门----配置文件
一、Hibernate简介
hibernate是一个开源的,轻量级的,持久成ORM框架。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
二、实体类和配置文件
2.1实体类
2.1.1客户的实体类
public class Customer {
private Long cust_id;
private String cust_name;
private String cust_source;
// 联系人的集合:一个客户对应多个联系人linkman
private Set<LinkMan> linkMans = new HashSet<LinkMan>();
//提供上述属性的get和set方法, 此处为节省版面而略去
}
2.1.2联系人实体类
public class LinkMan {
private Long lkm_id;
private String lkm_name;
private String lkm_gender;
private String lkm_phone;
private String lkm_mobile;
private String lkm_email;
private String lkm_qq;
private String lkm_position;
private String lkm_memo;
// private Long lkm_cust_id;
private Customer customer;// 联系人对应的客户的对象
//生成上述属性的get个set方法,此处为节省版面而忽略没写
}
2.2实体类Customer对应的Customer.hbm.xml映射配置文件
2.2.1客户Customer的映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- ORM:Object Relational Mapping,将实体类O和数据库的表R 建立映射关系 -->
<class name="com.itheima.hibernate.domain.Customer" table="cst_customer">
<!-- 类中的属性与表中的主键对应 -->
<!--
id标签中的属性:name,column, length, type
name:实体类中oid的名称,(必须)
column:数据库表中主键字段;(非必须, 实体类中oid与表中主键字段名一致时, 可以省略column属性)
length:字段长度, hibernate自动建表时用到(非必须);
type:数据类型(非必须)
java的数据类型 ----> type="java.lang.String"
hibernate的数据类型 ----> type="String"
sql的数据类型 ----> type="varchar(32)"
-->
<id name="cust_id" column="cust_id">
<!--hibernate中的主键生成策略:increment, identity, sequence, native, uuid, assigned
-->
<generator class="native"/>
</id>
<!-- 类中的属性与表中的字段对应 -->
<!--如果类中属性名, 与数据库中标的字段名相同时, column可以省略-->
<!--
property标签中字段名与id标签中的一样:name(必须),column(非必须), length(非必须), type(非必须)
-->
<property name="cust_name" column="cust_name"/>
<property name="cust_source" column="cust_source"/>
<!-- 配置一对多的关联映射 -->
<!--
set标签:用来描述一的一方存放的多的一方的集合
* name:多的一方的集合属性名称
-->
<set name="linkMans">
<!--
key标签:
*
column多的一方的外键的名称
-->
<key
column="lkm_cust_id"/>
<!--
one-to-many标签:描述一对多的关系
*
class:多的一方的类的全路径
-->
<one-to-many
class="com.itheima.hibernate.domain.LinkMan"/>
</set>
</class>
</hibernate-mapping>
2.2.2联系人linkman的映射文件
<?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.itheima.hibernate.domain.LinkMan"
table="cst_linkman">
<id name="lkm_id">
<generator class="native"></generator>
</id>
<property name="lkm_name"/>
<property name="lkm_gender"/>
<property name="lkm_phone"/>
<property name="lkm_mobile"/>
<property name="lkm_email"/>
<property name="lkm_qq"/>
<property name="lkm_position"/>
<property name="lkm_memo"/>
<!-- 在多的一方配置many-to-one
-->
<!--
many-to-one标签:用来描述多对一的关系配置。
*
name :一的一方的对象的属性名称。
*
class :一的一方的类的全路径
*
column :外键的名称
-->
<many-to-one
name="customer" class="com.rodge.hibernate.domain.Customer"
column="lkm_cust_id"/>
</class>
</hibernate-mapping>
三、hibernate的核心配置文件hibernate.cfg.xml
(在ssh整合的时候,hibernate的核心配置文件可以写入spring的配置文件中)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 连接数据库的信息 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123</property>
<!-- 数据库的方言:根据底层的数据库生成不同的SQL -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 配置显示SQL -->
<property name="hibernate.show_sql">true</property>
<!-- 配置格式化SQL -->
<property name="hibernate.format_sql">true</property>
<!-- 配置hbm2ddl -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置C3P0连接池 -->
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!--在连接池中可用的数据库连接的最少数目 -->
<property name="c3p0.min_size">5</property>
<!--在连接池中所有数据库连接的最大数目 -->
<property name="c3p0.max_size">20</property>
<!--设定数据库连接的过期时间,以秒为单位,
如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
<property name="c3p0.timeout">120</property>
<!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
<property name="c3p0.idle_test_period">3000</property>
<!-- 加载映射文件 -->
<mapping resource="com/rodge/hibernate/domain/Customer.hbm.xml"/>
<mapping resource="com/rodge/hibernate/domain/LinkMan.hbm.xml"/>
</session-factory>
</hibernate-configuration>
<!-- 在多的一方配置many-to-one
-->
<!--
many-to-one标签:用来描述多对一的关系配置。
*
name :一的一方的对象的属性名称。
*
class :一的一方的类的全路径
*
column :外键的名称
-->
<many-to-one
name="customer" class="com.itheima.hibernate.domain.Customer"
column="lkm_cust_id"/>
Hibernate入门----配置文件的更多相关文章
- Hibernate入门核心配置文件和orm元数据配置文件详解
框架是什么? 框架是用来提高开发效率的 封装了一些功能,我们需要使用这些功能时,调用即可,不用手动实现 所以框架可以理解为一个半成品的项目,只要懂得如何使用这些功能即可 Hibernate是完全面向对 ...
- Hibernate入门案例及增删改查
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- Hibernate入门案例 增删改
一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...
- Hibernate入门4.核心技能
Hibernate入门4.核心技能 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate3的基本知识, ...
- Hibernate入门3.配置映射文件深入
Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...
- Hibernate入门(1)-第一个Hibernate程序
Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...
- hibernate入门之person表
下面的hibernate入门person表指的是:根据mysql数据库中的test表和其中的元素-->建立映射表==>进而创建持久化类的顺序来操作了,下面为步骤 1.配置MySQL驱动程序 ...
- Hibernate(一)之Hibernate入门
一.Hibernate入门 ssh框架体系结构 1.1.ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational ...
- Hibernate入门这一篇就够了
前言 本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么是Hibernate框架? Hibernate是一种ORM框架,全 ...
随机推荐
- 将studio项目 转换为eclipse项目
总会有些奇怪的事情,比如,有的人就有将studio项目 转换为eclipse项目的需求 首先,不要因为编译原因而放弃.studio项目是完全可以转换成eclipse的 本站的开源代码板块有很多项目都是 ...
- MFC中使用SDL播放音频没有声音的解决方法
本文所说的音频是指的纯音频,不包含视频的那种. 在控制台中使用SDL播放音频,一般情况下不会有问题. 但是在MFC中使用SDL播放音频的时候,会出现没有声音的情况.经过长时间探索,没有找到特别好的解决 ...
- 【面试笔试算法】Program 6: 字符消除(hiho题库)
时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1) ...
- Gradle 1.12用户指南翻译——第二十六章. War 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- 如何在Eclipse CDT中编译含有多个main函数的项目
最近在杭电ACM上做题,使用的C++工具是Eclipse,但是Eclipse CDT不能同时存在多个main函数的文件,上网也搜了很多资料,但是按他们的步骤来,还是不能实现自己想要的效果.经过一下午的 ...
- netsh自动配置网络
工作需要经常在多个网络中切换,每次都要配置ip等,写个脚本一键完成配置: netsh interface ip set address "本地连接" static "ip ...
- 如何安装Pycharm官方统计代码行插件
最近一直想统计Pycharm的总计代码行数,找到了官方的统计行数插件,发现效果还不错. 官方代码统计插件指导: https://plugins.jetbrains.com/plugin/4509-st ...
- 学习MQ(二)基本概念
学习MQ(二)基本概念 这次简单罗列一下MQ的基本概念,还有我对它们的理解 1.queue manager 队列管理器,这是MQ系统中最上层的一个概念.每一个queue manager都有一个侦听器, ...
- JVM的运行原理以及JDK 7增加的新特性(一)
虚拟机(Virtual Machine) JRE是由Java API和JVM组成的.JVM的主要作用是通过Class Loader来加载Java程序,并且按照Java API来执行加载的程序. 虚拟机 ...
- go 实现struct转map
从python转golang大约一个月了,对struct的使用还算顺手,但是很多时候还是会想念python的便捷.比如同时遍历两个字典,python使用for (x, y) in zip(map1, ...