一、Hibernate简介

hibernate是一个开源的,轻量级的,持久成ORM框架。

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命 意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为VO(value -object)或dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。

二、实体类和配置文件

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入门----配置文件的更多相关文章

  1. Hibernate入门核心配置文件和orm元数据配置文件详解

    框架是什么? 框架是用来提高开发效率的 封装了一些功能,我们需要使用这些功能时,调用即可,不用手动实现 所以框架可以理解为一个半成品的项目,只要懂得如何使用这些功能即可 Hibernate是完全面向对 ...

  2. Hibernate入门案例及增删改查

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  3. Hibernate入门案例 增删改

    一.Hibernate入门案例剖析: ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private I ...

  4. Hibernate入门4.核心技能

    Hibernate入门4.核心技能 20131128 代码下载 链接: http://pan.baidu.com/s/1Ccuup 密码: vqlv 前言: 前面学习了Hibernate3的基本知识, ...

  5. Hibernate入门3.配置映射文件深入

    Hibernate入门3.配置映射文件深入 2013.11.27 前言: 之前的两节是在Java项目中如何使用hibernate,并且通过一个简单地项目实践,期间有很多的错误,一般都是因为配置包的问题 ...

  6. Hibernate入门(1)-第一个Hibernate程序

    Hibernate入门(1)-第一个Hibernate程序 Hibernate是最著名的ORM工具之一,本系列文章主要学习Hibernate的用法,不涉及Hibernate的原理.本文介绍第一个Hib ...

  7. hibernate入门之person表

    下面的hibernate入门person表指的是:根据mysql数据库中的test表和其中的元素-->建立映射表==>进而创建持久化类的顺序来操作了,下面为步骤 1.配置MySQL驱动程序 ...

  8. Hibernate(一)之Hibernate入门

    一.Hibernate入门 ssh框架体系结构 1.1.ORM框架 Hibernate是一个数据持久化层的ORM框架. Object:对象,java对象,此处特指JavaBean Relational ...

  9. Hibernate入门这一篇就够了

    前言 本博文主要讲解介绍Hibernate框架,ORM的概念和Hibernate入门,相信你们看了就会使用Hibernate了! 什么是Hibernate框架? Hibernate是一种ORM框架,全 ...

随机推荐

  1. linux设备和驱动加载的先后顺序

    点击打开链接 Linux驱动先注册总线,总线上可以先挂device,也可以先挂driver,那么究竟怎么控制先后的顺序呢. Linux系统使用两种方式去加载系统中的模块:动态和静态. 静态加载:将所有 ...

  2. ANDROID 中设计模式的采用--行为模式

     1 职责链模式 职责链模式的意图为:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止.使多个对象都有 ...

  3. 【Linux 操作系统】阿里云服务器 操作实战 部署C语言开发环境(vim配置,gcc) 部署J2EE网站(jdk,tomcat)

    . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 博客总结 : 设置SecureCRT ...

  4. Xcode中iOS模拟器程序中的plist路径

    Xcode6.4里写了个简单的iOS程序在模拟器中跑. 其中用到了NSUserDefaults来保存属性文件plist,那么这个文件实际路径在哪里呢?在网上搜了一下,发现几种说法(*表示当前用户名): ...

  5. JQuery UI - resizable

     ·概述 resizable插件可以让选中的元素具有改变尺寸的功能. 官方示例地址:http://jqueryui.com/demos/resizable/ 所有的事件回调函数都有两个参数:eve ...

  6. C++模板总结

    在编写含有模板的程序的时候,我还是按照一个头文件声明,一个源文件的方法来组织,结果编译的时候总出现一些很奇怪的语法问题,但程序明明是没有问题的.后来经过查阅才知道原来是因为C++编译器不支持对模板的分 ...

  7. java--加强之 类加载器,动态代理

    转载请申明出处:http://blog.csdn.net/xmxkf/article/details/9944561 ***************************************** ...

  8. android DialogFragment 实现Dialog展示扫二维码图片展示

    近期开发项目,做个按钮点击弹出展示微信二维码关注微信公众号的展示框,于是想到DialogFragment,期间对Dialog的title的底框字体颜色做出相关设置,记录如下: 下面是 DialogFr ...

  9. Spring Cloud入门教程-Ribbon实现客户端负载均衡

    简介 我们继续以之前博客的代码为基础,增加Ribbon组件来提供客户端负载均衡.负载均衡是实现高并发.高性能.可伸缩服务的重要组成部分,它可以把请求分散到一个集群中不同的服务器中,以减轻每个服务器的负 ...

  10. 《MySQL必知必会》读书笔记_2

    通配符:(尾空格可能会干扰通配符匹配) % 匹配任意字符 _ 匹配任意单个字符 正则表达式:REGEXP 用法就是替换掉LIKE的位置,后面配合正则表达式. 默认不区分大小写,如果区分的话添加关键字B ...