Hibernate框架的讲解

一、ORM技术

ORM:Obejict Relation Mapping,对象关系映射。ORM技术可以建立对象与数据库之间的关系。它可以通过对象来访问数据库。目前市场有:Hibernate、MyBateis、TopLink、EJB等等

二、Hibernate框架

Hibernate是目前市场上最流行的ORM框架之一。

它的优点

1)Hibernate使用面向对象的方式来访问数据库;

2)Hibernate的查询性能更好;

3)Hibernate可以在不同的数据库之间进行切换,因此可移植性更强;

在实际使用中,Hibernate是属于Dao层技术。

2.1Hibernate的下载和安装

Hibernate的官网:http://www.sourceforge.net

下载完成后直接压缩。它的目录结果:

documention:保存Hibernate的API文档;

lib:保存Hibernate相关的jar包

project:保存Hibernate项目的源文件

2.2第一个Hibernate例子

第一步:导入jar包

把lib/required目录下所有jar包复制到工程中。除此以外,还要把数据库的驱动包复制到工程中。

第二步:创建表

 1 CREATE TABLE `cst_customer` (
 2   `cust_id` BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT ‘客户编号(主键)‘,
 3   `cust_name` VARCHAR(32) NOT NULL COMMENT ‘客户名称(公司名称)‘,
 4   `cust_source` VARCHAR(32) DEFAULT NULL COMMENT ‘客户信息来源‘,
 5   `cust_industry` VARCHAR(32) DEFAULT NULL COMMENT ‘客户所属行业‘,
 6   `cust_level` VARCHAR(32) DEFAULT NULL COMMENT ‘客户级别‘,
 7   `cust_address` VARCHAR(128) DEFAULT NULL COMMENT ‘客户联系地址‘,
 8   `cust_phone` VARCHAR(64) DEFAULT NULL COMMENT ‘客户联系电话‘,
 9   PRIMARY KEY (`cust_id`)
10 ) ENGINE=INNODB DEFAULT CHARSET=utf8;

第三步:创建实体类

实体类就是符合JavaBeen的规范的类

编写JavaBeen的规范

1)把成员属性私有化;

2)为每个成员属性提供setter和getter方法

3)提供无参的构造函数;

4)建议实现Serializable接口;

public class Customer implements Serializable {

    private Integer custId;//客户编号
    private String custName;//客户名称
    private String source;//客户信息的来源
    private String industry;//客户所在的行业;
    private String level;//客户的等级
    private String address;//联系地址
    private String phone;//联系电话
    public Integer getCustId() {
        return custId;
    }
    public void setCustId(Integer custId) {
        this.custId = custId;
    }
    public String getCustName() {
        return custName;
    }
    public void setCustName(String custName) {
        this.custName = custName;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public String getIndustry() {
        return industry;
    }
    public void setIndustry(String industry) {
        this.industry = industry;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
}

第四步:配置实体类与数据库表的映射关系

在实体类所在包下新建一个Customer.hbm.xml的映射文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 <!-- package属性:指定实体类的包名 -->
 6 <hibernate-mapping package="com.enter.dome">
 7   <!-- class用来配置实体类与数据库表的映射关系
 8      name:类名
 9      table:实体类所对应的表
10   -->
11   <class name="Customer" table="cst_customer">
12     <!-- 配置实体类的ID与主键的映射关系
13         name:实体类的属性名
14         column:表的子段名
15      -->
16      <id name="custId" column="cust_id">
17        <!-- 主键的自增方式 -->
18        <generator class="identity"/>
19      </id>
20      <!-- 配置实体类成员属性与字段的关系 -->
21      <property name="custName" column="cust_name"/>
22      <property name="source" column="cust_source"/>
23      <property name="industry" column="cust_industry"/>
24      <property name="level" column="cust_level"/>
25      <property name="address" column="cust_address"/>
26      <property name="phone" column="cust_phone"/>
27   </class>
28
29 </hibernate-mapping>

第五步:创建Hibernate核心配置文件

把hibernate/project/etc目录下的hibernate.cfg.xml拷贝项目的src目录下。

然后修改文件,设置hibernate的配置信息。详细的配置信息可以参考hibernate.properties文件中的配置。

 1 <!--
 2   ~ Hibernate, Relational Persistence for Idiomatic Java
 3   ~
 4   ~ License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 5   ~ See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 6   -->
 7 <!DOCTYPE hibernate-configuration PUBLIC
 8     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 9     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
10
11 <hibernate-configuration>
12     <session-factory>
13          <!-- 配置数据库的方言 -->
14          <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
15          <!-- 配置数据库的驱动 -->
16          <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
17          <!-- 数据库驱动 -->
18          <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jun1</property>
19          <!-- 用户名 -->
20          <property name="hibernate.connection.username">root</property>
21          <!-- 密码 -->
22          <property name="hibernate.connection.password">entor</property>
23          <!-- 是否显示SQL语句 -->
24         <property name="show_sql">true</property>
25         <!-- 指定映射文件的位置
26         <mapping resource="com/entor/doction/Customer.hbm.xml"/>-->
27         <mapping class="com.enter.dome.Customer"/>
28     </session-factory>
29 </hibernate-configuration>

第六步:使用Hibernate提供的API访问数据库

Session:提供了一些访问数据库的方法。例如:save()、update()、delete() 、get()等等。每次访问数据库都应该创建一个Session。

SessionFactory:Session的工厂类,它负责产生Session对象。当服务器启动的时候创建该对象即可。也就是说,该只需要创建一次。

Configuration:代表Hibernate的配置。它的作用:1)加载配置文件;2)创建SessionFactory对象

 1 public class HelloWorld {
 2     public static void main(String[] args) {
 3         Configuration configuration=new Configuration();
 4         configuration.configure();
 5         SessionFactory factory=configuration.buildSessionFactory();
 6         Session session=factory.openSession();
 7         Customer customer=new Customer();
 8         //Transaction tx=session.beginTransaction();
 9
10         customer.setCustName("陈骏金111");
11         session.save(customer);
12         //tx.commit();
13         session.close();
14         /*Transaction tx=session.beginTransaction();
15         customer.setCustId(1);
16         customer.setCustName("陈骏金11");
17         session.update(customer);
18         tx.commit();
19         session.close();*/
20     }
21
22 }

原文地址:https://www.cnblogs.com/chenjunjin/p/8536024.html

时间: 2024-11-08 22:50:53

Hibernate框架的讲解的相关文章

Hibernate框架简介

面试被问及了Hibernate框架,虽然问的很少,很简单,但是还是简单的总结一下吧,以备以后不时之需. 什么是Hibernate框架? 百科定义:Hibernate框架式一个开源的对象关系映射(ORM)框架,是对JDBC的轻量级的对象封装,使java程序员可以使用对象思维来操纵DB. 白话版:在Hibernate之前,我们是如何操作DB的?JDBC,需要在程序中嵌入SQL语句.效率低下,不能忍啊.但是Hibernate的出现,让我们无需再操纵SQL语句了,每个表实例被实例化为一个java对象,操

ORM进阶:Hibernate框架搭建及开发

本节将开始,使用hibernate搭建持久层.当然在决定用不用之前,还请斟酌一下是否使用.了解一下Hibernate的优缺点. Hibernate优劣对比 Hibernate是一个持久的ORM框架,首先要简历一个Java Project  这个就不用多说了吧.之后,我们来搭建Hibernate框架. 第一步:引入相关Jar包.包含两部分,核心jar包(Hibernate_Home/hibernate3.jar)和相关包(Hibernate_Home/lib/*.jar) 如上图. 如果没有,请去

(转)Hibernate框架基础——一对多关联关系映射

http://blog.csdn.net/yerenyuan_pku/article/details/52746413 上一篇文章Hibernate框架基础——映射集合属性详细讲解的是值类型的集合(即集合元素是普通类型).现在从本文开始我们就要介绍实体类型的集合(即集合元素是另一个实体)了. 一对多关联关系映射 我们还是以一个活生生的例子来详解一对多关联关系映射吧!就以部门和员工的关系为例. 单向关联:仅仅建立从Employee到Department的多对一关联,即仅仅在Employee类中定义

搭建基于全注解的Spring+Spring MVC+Hibernate框架

以实例讲解Spring+Spring MVC+Hibernate框架搭建步骤: 一.配置web.xml Xml代码   <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XML

(转)Hibernate框架基础——Hibernate API及Hibernate主配置文件

Hibernate的学习路线图 Hibernate API简介 Configuration Configuration类负责管理Hibernate的配置信息,包括如下内容: Hibernate运行的底层信息:数据库的URL.用户名.密码.JDBC驱动类,数据库Dialect,数据库连接池等(对应hibernate.cfg.xml文件). 持久化类与数据表的映射关系(*.hbm.xml文件). 创建Configuration的两种方式: 属性文件(hibernate.properties) Con

Hibernate框架进阶(中篇)之多表关系

导读 Hibernate进阶主要分为上中下三篇,本文是中篇,主要讲解Hibernate框架中多表关系的实现.我们知道多表关系有一对一.一对多(多对一)和多对多三种关系.而1对1关系一般合并为一个表处理,所以本文主要讲解1对多和多对多关系的实现. 一.一对多关系 一对多的关系很多,比如人和籍贯就是一对多的关系,下面就用人和籍贯这个实例来展开说明. 1.数据库的实现 对于一对多关系的建立,我们通常是使用外键(foreign key)来表示.外键列添加在一对多的"多"这一方.这里用perso

【Hibernate】hibernate框架的搭建

1, Hibernate 是什么 Hibernate框架简化了java应用程序与数据库交互的开发. Hibernate是一个开源,轻量级的ORM(对象关系映射)工具. 2,Hibernate框架的优点 Hibernate框架有很多优点.它们分别如下: 开源和轻量级: Hibernate框架是根据LGPL许可证和轻量级的开源工具. 快速性能: Hibernate框架的性能很快,因为缓存在Hibernate框架内部使用. hibernate框架中有两种类型的缓存:一级缓存和二级缓存.一级缓存默认是启

hibernate 框架的简单使用

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <

SSH(Struts2+Spring+Hibernate)框架搭建流程&lt;注解的方式创建Bean&gt;

此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblogs.com/wkrbky/p/5912810.html 一.Hibernate(数据层)的搭建: 实现流程 二.Spring(注入实例)的使用: 实现流程 三.Struts2(MVC)的搭建: 实现流程 这里注意一点问题: Struts2与Hibernate在一起搭建,antlr包,有冲突.MyE