Hibernate 介绍及其 环境搭建
介绍
数据持久化概念
数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如:文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、xml、二进制流等。
xml:可扩展指标语言。
1、hibernate框架及orm
hibernate:是数据持久化工具,是一个开放源代码的对象关系映射框架。
orm:(obiect/relational/mapping)即对象/关系映射,是一种数据持久化技术。(作用:有了orm程序员就不需要再使用sql语句操作数据库中的表,使用API直接操作javabean对象就可以实现数据的存储、查询、更改和删除等操作)
2、hibernate优点:
(1)hibernate功能强大,是java应用与关系数据库之间的桥梁,较之JDBC方式操作数据库,代码量大大减少,提高了持久化代码开发速度,降低了维护成本。
(2)支持许多面向对象的特性,如组合,继承,多态等,使得 开发人员不必在面向业务领域的对象模型和面向数据库模型之间来回切换,方便开发人员进行领域驱动的面向对象设计与开发。
(3)可移植性好。系统不会绑定在某个特定的关系型数据库上,对于系统更换数据库,通常只需要修改Hibernate 配置文件即可正常运行。
(4) Hibernate 框架开源免费,可以在需要时研究源代码,改写源代码,进行功能的定制,具有可扩展性。
Hibernate 适用于大中型项目。
3、hibernate缺点:
(1)不适合以数据为中心大量使用存储过程的应用。
(2)大规模的批量插入、修改和删除不适合用Hibernate。
Hibernate 不适用于小型项目; 也不适用于关系模型设计不合理、不规范的系统。
Hibernate环境搭建
过程:

1,下载需要的jar包
推荐下载:hibernate-distribution-3.3.2.GA-dist.zip 解压后目录结构如图:

在根目录中存放着hibernate3.jar,hibernate的接口和类就在这个jar包中,所以它是必不可少的。

hibernate会使用一些第三方类库,这些类库放在lib\required目录下,如下图

以上具体架包不再详细说明
2.部署jar包具体步骤如下
(1)将下好的hibernate3.jar 包和lib\required 目录下的jar 包及Oracle数据库驱动jar包复制到建好的工程WEB-INF 下的lib 目录中。

(2)通过MyEclipse导入上述的包。在MyEclipse中的工程上游记,选择“Build Path”-->“Configure Build Path”选项,如图所示:

在弹出的窗体中单击“Add JARs”按钮,如下:

在弹出的在弹出的“JAR Selection”窗体中选择lib 下刚刚复制的jar 包,如图所示,单击“OK”按钮。
这时在工程中加入了所选的jar 包,如图所示。
3.创建hibernate配置文件 hibernate.cfg.xml
hibernate 配置文件只要用于配置数据库连接和hibernate运行时所需的各种特性
在工程的src目录下添加hibernate配置文件,如下

默认文件名为hibernate.cfg.xml。该文件需要配置数据库连接信息和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"> <hibernate-configuration> <session-factory> <!-- Database connection settings -->
<!-- 数据库jdbc驱动 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDialect</property>
<!-- 数据库URL -->
<property name="connection.url">jdbc:oracle:thin:@127.0.0.1.:1521:orcl</property>
<!-- 数据库用户名 -->
<property name="connection.username">scott</property>
<!-- 数据库密码 -->
<property name="connection.password">123456</property> <!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property> <!-- SQL dialect -->
<!-- 每个数据库都有其对应的Dialect以匹配其平台特性 -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> <!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property> <!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
<!-- 映射文件地址 -->
<mapping resource="src/com/entity/hibernate.hbm.xml"/> </session-factory> </hibernate-configuration>
(1)connection.url:表示数据库URL。jdbc:oracle:thin:@127.10.0.1:1251:orcl,是数据库URL。其中,jdbc:oracle:thin:@是固定写法,127.10.0.1是IP地址,1521是端口号,orcl是数据库实例名。
(2)connection.username:表示数据库用户名
(3)connection.password:表示数据库用户密码
(4)connection.driver_class:表示数据库驱动。oracle.jdbc.driver.OracleDriver 是数据库的驱动类。
(5)dialect:用于配置Hibernate 使用的数据库类型。Hibernate支持几乎所有的主流数据库,包括Oracle,DB2,MS SQL Server和MYSQL等。
org.hibernate.dialect.Oracle10gDialect制定当前数据库类型是oracle.
(6)show_sql: 参数为true,则程序运行时在控制台输出SQL 语句。
(7)format_sql: 参数为true,则程序运行时在控制台输出格式化后的SQL 语句。
(8)mapping:映射文件地址
4,创建持久化类和映射文件(两者之间相互映射)
首先根据一张数据库表创建持久化类,它是指其实例状态需要被Hibernate持久化到数据库中的类,要求持久化类必须具有一个无参的构造方法。
下面我们以现有数据库中的dept表在做示范:
//创建持久化类
package src.com.entity; public class dept {//和数据库表明一致
private int deptno;//类型也和数据库表数据类型一致
private String dname;
private String dpwd;
//进行set/get构造
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getDpwd() {
return dpwd;
}
public void setDpwd(String dpwd) {
this.dpwd = dpwd;
} }
dept持久化类有一个deptno属性,用来唯一标识dept类的每个对象。deptno属性又称id属性。在Hibernate中,这个id属性被称为对象标识符OID。一个dept对象和dept表中的一条对象对应。
创建持久化类后,还需要告诉Hibernate,持久化类dept映射到数据库中哪个表,以及哪个属性对应到数据库的 哪个字段,这些都要在映射文件dept.hbm.xml中配置,接下来演示映射文件的代码:
在Hibernate中,映射文件通常以.hbm.xml作为后缀:
代码如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<!-- name值是持久化类的地址 table值是数据库表名 -->
<class name="src.com.entity.dept" table="dept">
<!-- id代表的是主键
nanme是持久化类属性的名称
column是数据库表列名 -->
<id name="deptno" column="deptno">
<!-- 主键生成策略 -->
<generator class="assigned"/>
</id>
<property name="dname" column="dname"/>
<property name="dpwd" column="dpwd"/>
</class>
</hibernate-mapping>
hibernate.hbm.xml是dept类到数据库表dept的映射,其中各元素的含义如下:
class:定义一个持久化类的映射信息
- name:表示持久化类的全限定名
- table:表示持久化对应的数据库表名
- schema:表示oracle数据库实例中的用户
id:表示持久化类的OID和表的主键的映射
- name:表示持久化类属性的名称
- type:表示持久化属性的类型
- column:表示持久化属性对应的数据库表字段名称。
grnerator:id元素的子元素,用于指定主键生成策略
- class:用来指定具体主键生成策略
- param:用来传递参数。上述中使用的主键生成策略是:assigned,不需要配置param元素
注意,因为持久化类与映射文件两者之间相互映射所以在主配置文件中还需要声明:
<?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"> <hibernate-configuration> <session-factory>
<!--省略其他配置 -->
<!--映射文件配置,注意配置文件名必须包含其相对classpath的全路径,且是用/分开-->
<mapping resource="src/com/entity/hibernate.hbm.xml"/> </session-factory> </hibernate-configuration>
以上是hibernate的介绍和环境配置。
Hibernate 介绍及其 环境搭建的更多相关文章
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...
- hibernate介绍及环境搭建
1.前言 hibernate与mybatis的位置一样,都是属于DAO层的框架,代替我们原来的JDBC操作数据库,属于ORM(object relationg mapping. 对象关系映射)框架.O ...
- 最新版ssh hibernate spring struts2环境搭建
最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...
- Python介绍及环境搭建
摘自http://www.cnblogs.com/sanzangTst/p/7278337.html Python零基础学习系列之二--Python介绍及环境搭建 1-1.Python简介: Py ...
- Django 01 django基本介绍及环境搭建
Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...
- [springboot 开发单体web shop] 1. 前言介绍和环境搭建
前言介绍和环境搭建 简述 springboot 本身是为了做服务化用的,我们为什么要反其道使用它来开发一份单体web应用呢? 在我们现实的开发工作中,还有大量的业务系统使用的是单体应用,特别是对于中小 ...
- App自动化测试-1.App自动化介绍和环境搭建
App自动化测试-1.App自动化介绍和环境搭建 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-b ...
- Maven介绍及环境搭建
Maven介绍及环境搭建 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. 下载Maven boot:类加载器框架,Maven使用它加在自 ...
- Maven快速入门(一)Maven介绍及环境搭建
做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...
随机推荐
- NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)
摘录自:CIPS2016 中文信息处理报告<第一章 词法和句法分析研究进展.现状及趋势>P4 CIPS2016 中文信息处理报告下载链接:http://cips-upload.bj.bce ...
- Caffe︱构建lmdb数据集、binaryproto均值文件及各类难辨的文件路径名设置细解
Lmdb生成的过程简述 1.整理并约束尺寸,文件夹.图片放在不同的文件夹之下,注意图片的size需要规约到统一的格式,不然计算均值文件的时候会报错. 2.将内容生成列表放入txt文件中.两个txt文件 ...
- R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)
要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 终于开始攻克并行这一块了,有点小兴 ...
- FusionCharts封装-Value
Data.java: /** * @Title:Data.java * @Package:com.fusionchart.model * @Description:FusionCharts 封装dat ...
- 图像处理------透明混合 - Alpha Blending效果
基本原理: 图像的透明混合有个专属名词– Alpha Blending 对任意两张图像可以合成为一张图像,合成图像的像素取值根据数学公式: RGB3 = (1- a) * RGB1 + a * RGB ...
- freemarker自定义标签报错(四)
freemarker自定义标签 1.错误描述 六月 05, 2014 11:31:35 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严 ...
- VxWorks操作系统shell命令与调试方法总结
VxWorks下的调试手段 主要介绍在Tornado集成开发环境下的调试方法,和利用支撑定位问题的步骤.思路. 1 Tornado的调试工具 嵌入式实时操作系统VxWorks和集成开发 ...
- template.process(root, out)的用法(shiro项目中来的九)
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8" ...
- table问题汇总
平时要使用 table 的次数说多不多,说少不少,但每次使用必定会被几个问题"坑"一下,所以这篇博客用来记录下table那些"小坑".但 table 也会有很多 ...
- 【国家集训队2010】小Z的袜子(莫队)
题面 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把 ...