介绍

数据持久化概念

数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如:文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、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包

网址:http://www.hibernate.org

推荐下载: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 介绍及其 环境搭建的更多相关文章

  1. Hibernate 系列 02 - Hibernate介绍及其环境搭建

    引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...

  2. hibernate介绍及环境搭建

    1.前言 hibernate与mybatis的位置一样,都是属于DAO层的框架,代替我们原来的JDBC操作数据库,属于ORM(object relationg mapping. 对象关系映射)框架.O ...

  3. 最新版ssh hibernate spring struts2环境搭建

    最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...

  4. Python介绍及环境搭建

    摘自http://www.cnblogs.com/sanzangTst/p/7278337.html Python零基础学习系列之二--Python介绍及环境搭建   1-1.Python简介: Py ...

  5. Django 01 django基本介绍及环境搭建

    Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...

  6. [springboot 开发单体web shop] 1. 前言介绍和环境搭建

    前言介绍和环境搭建 简述 springboot 本身是为了做服务化用的,我们为什么要反其道使用它来开发一份单体web应用呢? 在我们现实的开发工作中,还有大量的业务系统使用的是单体应用,特别是对于中小 ...

  7. App自动化测试-1.App自动化介绍和环境搭建

    App自动化测试-1.App自动化介绍和环境搭建 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-b ...

  8. Maven介绍及环境搭建

    Maven介绍及环境搭建 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. 下载Maven boot:类加载器框架,Maven使用它加在自 ...

  9. Maven快速入门(一)Maven介绍及环境搭建

    做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...

随机推荐

  1. Java之split()方法

    Java之split()方法 1.方法介绍 (1)public String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串 (2)public String[] s ...

  2. Caused by: java.sql.SQLException: Field 'id' doesn't have a default value

    1.错误描述 org.hibernate.exception.GenericJDBCException: error executing work at org.hibernate.exception ...

  3. java.lang.IllegalArgumentException: Document base E:\Eclipse\workspace\.metadata\.plugins\org.eclips

    1.错误描述 四月 13, 2015 5:56:55 下午 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based A ...

  4. RAPIDIO高速串行协议

    RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能. 低引脚数. 基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一种开放式互连技术标准.RapidI ...

  5. vue的ajax请求之axios

    axios.get(this.apiUrl+'good/info',{params:{'goodsid':'sp441153'}}) .then(function(response){ console ...

  6. C#图解教程 第二十二章 异常

    异常 什么是异常try语句 处理异常 异常类catch 子句使用特定catch子句的示例catch子句段finally块为异常寻找处理程序更进一步搜索 一般法则搜索调用栈的示例 抛出异常不带异常对象的 ...

  7. VS Visual Studio 入门技巧

    0.在VS常用快捷键 F1:    调出当前光标所在处关键字的帮助文档 F5:    编译及运行 Ctrl+F5:    编译及运行(不调试) F6:    生成解决方案,用来检查语法错误 F7:   ...

  8. 360加固apk并自动签名

    我们知道Android加混淆之后,代码的安全性得到了提高,即使你hook,反编译得到的也是乱码的,对于阅读性造成了影响,为了增强代码的破解难度,我们通常退对apk进行加固,常见的有腾讯,360,爱加密 ...

  9. IDEA的配置

    一.使用配置 转自:http://blog.csdn.net/qq_27093465/article/details/52918873 setting: 设置外观和字体: 设置编辑器快捷键:   自动 ...

  10. vmstat结果在不同操作系统上的解释

    vmstat是各种unix上的通用工具,但在不同系统上,结果的解释却不同,最容易混淆的是结果的memory部分: 1.linux: vmstat输出结果中: memory: swapd:已用swap区 ...