文档库 最新最全的文档下载
当前位置:文档库 › hibernate

hibernate

hibernate

基本部分

ormapping的概念

o:object

r:ralationship

mapping:映射

把一个关系型的数据库描述成一个对象,通过映射的方式

jdbc的缺点

1、代码比较繁琐

2、sql语句平台的移植性不是很强

3、没有data pool(数据缓存)

4、当jdbc调用mysql的存储过程的时候,存储过程本身移植性比较差

5、没有做到面向对象开发

hibernate优点

1、面向对象的编程

2、缓存

重点

一级缓存二级缓存查询缓存

如果数据量不是特别大

hibernate缓存

oscache不支持分布式缓存

ehcache不支持分布式缓存

redis分布式缓存

memorycache分布式缓存

3、代码操作比较简单

4、平台的移植性比较强

hibernate的缺点

如果该项目对sql的优化要求特别高,不适合用hibernate

如果数据库的数据量特别大,也不适合用hibernate

如果表与表之间的关系比较复杂,也不能用hibernate来做

hibenate使用的场合

中小型企业:

表的关系不是很复杂

数据量不是很大

完成crud的操作

导入jar包

hibernate.cfg.xml

持久化类和映射文件

客户端

1、产生表

2、save操作

3、查询操作

4、查询其中的一条数据

5、修改

6、删除

说明

源代码的路径

hibernate-distribution-3.5.6-Final-dist/hibernate-distribution-3.5.6-Final/project/core 加载配置文件的方式

1、

2、

配置文件与映射文件的关系

hbm2ddl.auto

sessionFactory

session

1、crud操作都是由session来完成的

2、Session是一个接口,实现类是SessionImpl

3、在创建sessionImpl的时候,传递一个参数为Connection,所以在hibernate编程

的时候,创建session相当于打开了一个连接

4、当关闭session的时候,相当于关闭了一个连接

transaction

1、事务是由session来产生的

2、事务默认是关闭的,必须手动开启

3、session.beginTransaction是对Connection.setAutoCommit(false)进行了封装

4、https://www.wendangku.net/doc/899272340.html,mit()的内部执行了https://www.wendangku.net/doc/899272340.html,mit()代码hibernate的反向工程

由表生成持久化类和映射文件

图1

图2

图3

图4

图5

图6

图7

主键产生器

increment

即便在程序中设置了主键的值,也不起作用

assigned

identity

uuid

uuid是由hibernate内部生成的sequences

类型

hibernate类型

java类型

java中的类型这种类型效果高

hibernate的加载流程

hibernate的内部执行流程

对象的状态

临时状态和脱管状态:

临时状态的对象肯定是从new创建来的

脱管状态的对象肯定是从持久化状态转化过来的状态转换图

对session.update方法的一个分析

持久化状态的对象

可以通过session.save/update/get方法把一个对象变成持久化对象变成持久化状态的对象只说明该对象进入了hibernate的区域

和数据库没有关系,和数据库有关系的只有事务

脱管状态的对象

可以通过session.close/evic/clear方法

副本

flush方法

说明:

当执行session.flush方法的时候,hibernate内部会检查所有的持久化对象

会判断该对象和数据库有没有对应的数据(根据标示符id),如果没有

则发出insert语句,如果有,则再让该对象和副本进行对比,如果和副本一样,则

什么都不做,如果不一样,则发出update语句

session.flush的时候,只不过是向数据库发送了sql语句,但是值在数据库中并不

存在。

一级缓存

概念:私有缓存

事务级别的缓存

线程级别的缓存

缓存的类型

对象缓存

把对象的标示符作为key值,把对象本身作为value值数据缓存

可以把sql语句作为key值,把结果作为value值

操作

get

update

evict

clear

close

Hibernate3.6(开发必看)

1.Java对象持久化概述 1.1.应用程序的分层体系结构 1.1.1.基于B/S的典型三层架构 说明: 1,展现层:提供与用户交互的界面。 2,业务逻辑层:实现各种业务逻辑。 3,数据访问层:负责存放和管理应用程序的持久化业务数据。 1.1. 2.数据访问层与Hibernate在Java应用程序中的 角色 数据访问层(持久化层)封装了数据访问的细节,为业务逻辑层提供了面向对象的API。完善的持久化层应该达到的目标: 1,代码重用性高,可完成所有的数据访问操作。 2,如果需要的话,能够支持多种数据库平台。 3,具有相对独立性,当持久化层变化时,不会影响上层实现。 在数据访问层(持久化层)中可以使用Hibernate框架以实现要求,如下图所示:

1.2.软件模型 1.2.1.各种模型的说明 概念模型: 模拟问题域中的真实实体。描述每个实体的概念和属性及实体间关系。不描述实体行为。实体间的关系有一对一、一对多和多对多。。 关系数据模型: 在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构。有以下内容组成:1,若干表 2,表的所有索引 3,视图 4,触发器 5,表与表之间的参照完整性

域模型: 在软件的分析阶段创建概念模型,在软件设计阶段创建域模型。 组成部分: 1,具有状态和行为的域对象。 2,域对象之间的关联。 域对象(domain object): 构成域模型的基本元素就是域对象。对真实世界的实体的软件抽象,也叫做业务对象(Business Object,BO)。域对象可代表业务领域中的人、地点、事物或概念。 域对象分为以下几种: 1,实体域对象:通常是指业务领域中的名词。(plain old java object,简单Java 对象)。 2,过程域对象:应用中的业务逻辑或流程。依赖于实体域对象,业务领域中的动词。如发出订单、登陆等。 3,事件域对象:应用中的一些事件(警告、异常)。 1.2.2.域对象间的关系 关联: 类间的引用关系。以属性定义的方式表现。

hibernate架构图

.Hibernate 架构图 Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了非常轻量级的对象封装,使得Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate 可以应用在任何使用JDBC 的场合,既可以在Java 的客户端程序使用,也可以在Servlet/JSP 的Web 应用中使用,最具革命意义的是,Hibernate 可以在应用EJB 的J2EE 架构中取代CMP ,完成数据持久化的重任。 Hibernate 的核心接口一共有5 个,分别为:Session 、SessionFactory、Transaction 、Query 和Configuration 。这5 个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。 ·Session 接口:Session 接口负责执行被持久化对象的CRUD 操作(CRUD 的任务是完成与数据库的交流,包含了很多常见的SQL 语句。) 。但需要注意的是Session 对象是非线程安全的。同时,Hibernate 的session 不同于JSP 应用中的HttpSession 。这里当使用session 这个术语时,其实指的是Hibernate 中的session ,而以后会将HttpSesion 对象称为用户session 。 ·SessionFactory 接口:SessionFactory 接口负责初始化Hibernate 。它充当数据存储源的代理,并负责创建Session 对象。这里用到了工厂模式。需要注意的是SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory 。

hibernate练习题

1.下面创建Criteria对象的语句中正确的是 单选 A、Criteria c = query.createCriteria(); B、Criteria c = query.addCriteria(); C、Criteria c = session.createCriteria(); D、Criteria c = session.createCriteria(User.class); 2. Query对象执行查询结论正确的是 多选 A、list()方法返回结果为List对象,数据总量为0到多条 B、uniqueResut()方法返回结果为对象或对象数组,数据总量为0到1条数据 C、HQL:select userName from UserModel可以使用list()方法进行查询结果的获取 D、HQL:select userName from UserModel可以使用uniqueResut()方法进行查询结果的获取 3Hibernate实体对象制作规范不包含下列哪条规则 单选 A、声明无参公共的构造方法 B、提供用于作为OID的标识属性 C、为所有属性提供getter与setter方法 D、声明为最终类(final修饰) 4在HQL语句的参数查询中,执行以下代码,下列选项能够为参数正确赋值的操作是Query query = s.createQuery("from Customer o where https://www.wendangku.net/doc/899272340.html,=?"); 单选 A、query.setParameter(1, "Tom"); B、query.setParameter(0, "Tom"); C、query.setString(0,Tom); D、query.setInteger (0,Tom); 5有关Hibernate瞬时对象状态说法错误的是 多选 A、瞬时状态的对象具有OID,与Session对象关联 B、瞬时状态的对象具有OID,不与Session对象关联 C、瞬时状态的对象不具有OID,与Session对象关联 D、瞬时状态的对象不具有OID,不与Session对象关联 6有关QBC查询短语,下列说法正确的 多选 A、Restrictions.between表示范围比对 B、Restrictions.eq表示等比对 C、Restrictions.le表示小于等于比对 D、Restrictions.ge表示大于等于比对 7下列操作对一级缓存的影响描述错误的是

Hibernate学习入门教程

Hibernate学习入门教程 开发环境搭建 [日期:2015-08-11] 来源:Linux社区作者:doctorJoe [字体:大中小] 其实一两个月前就在了解Hibernate方面的知识了,但一直以来,都没有好好的总结,而且一直使用的是myeclipse,感觉有些傻瓜式的操作就可以搭建起Hibernate的开发环境,但这样一点都不好,没有理解到Hibernate到底是怎么配置的,所以你今天特使用Eclipse来一步一步搭建Hibernate的开发环境,下面,正式进入正题。 在Hibernate中开启日志https://www.wendangku.net/doc/899272340.html,/Linux/2015-07/120499.htm Hibernate+JUnit测试实体类生成数据库表https://www.wendangku.net/doc/899272340.html,/Linux/2015-07/120161. htm Hibernate整体理解https://www.wendangku.net/doc/899272340.html,/Linux/2014-07/104405.htm Hibernate的映射机制https://www.wendangku.net/doc/899272340.html,/Linux/2014-12/110265.htm 新建一个web项目,名字就随便吧,你喜欢什么名字就什么吧,这是我的截图。

引入hibernate的依赖jar包,我使用的是hibernate-release-4.3.10.Final,下载好后解压,打开压缩包下的lib目录下的require文件夹,这是hibernate的所以来的必须的jar包,接下来,在刚才新建的项目里新建一个libs文件夹,将刚才的所说的jar包copy进去,另外,由于我们需要连接MySQL数据库以及使用JUnit测试,将所需的mysql-connector-java-5.0.8-bin.jar和junit-4.5.jar两个jar包引用进去,关于这些jar包,可以在网上搜索。接下来,就是把这些jar 包添加到编译环境中去,选中libs下的jar包,右击选择Build Path –>Add to Build Path,这样就把依赖jar包成功添加进去了。 继续往下,我们需要配置最重要的hibernate配置文件hibernate.cfg.xml以及进行日志处理的log4j.properties属性文件:打开上一步解压后的hibernate文件夹,打开project—>etc文件夹,将该文件夹下的hibernate.cfg.xml和log4j.properties文件拷贝到项目的src文件夹下,打开hibernate.cfg.xml文件,将session-factory标签中的内容替换成如下的内容: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql:///hibernatedemo root yzp140103 这样就配置好了。 接下来,要做的就是做开发测试了:在项目的src目录下新建一个实体类包com.joe.entity,在该包下新建一个实体类Student,代码如下: package com.joe.entity; import java.io.Serializable;

MyEclipse+Hibernate+快速入门+中文版

提纲 1前言2准备工作3介绍4Hibernate 一览5创建HibernateDemo 项目 5创建HibernateDemo Java Project 5555使用模版调整生成更好的代码55编辑映射文件 6使用HQL 编辑器 7测试HibernateDemo 应用 8使用示例HibernateDemo 项目 9 总结1.前言 本文档基于以下环境编写:Sun JDK 1.5,Eclipse 3.2和MyEclipse 5.0.所有的截屏基于Eclipse,MyEclipse Enterprise Workbench,和Windows XP 的默认用户界面设置.如果你对本文档的介绍有阅读上的困难,请阅读用户反馈部分来了解如何向MyEclipse 文档团队提交反馈. 2.准备工作 下面是这个快速入门的准备工作列表: Java 2SDK,Standard Edition 1.4或者更高版本(参考来了解下载地址) Eclipse 3.2SDK (参考资源来了解下载地址) MyEclipse 5.0(参考资源来了解下载地址) 选择以下可以被Hibernate 和MyEclipse Database Explorer 所支持的数据库服务器列表中的一个 : MyEclipse Hibernate 快速入门中 文版

3.介绍 这个快速入门展示了使用MyEclipse Enterprise Workbench 开发Hibernate 的基本功能,概念和技术.我们将全程带领你来开发一个非常简单的Java Hibernate 应用.对于这个教程没有包含到的问题和概念,我们推荐你去参考资源部分列出的Hibernate 资源. 这个文档展示了如何进行下列工作: 为Java 项目添加MyEclipse Hibernate 支持 在项目中创建Hibernate 配置文件 如何使用自定义的Session Factory 从Database Explorer 的表定义中生成Java 类和Hibernate 数据库映射文件(.hbm ) ?使用HQL 编辑器 创建使用Hibernate 的小测试应用注意:在使用本教程时建议您事先阅读了Database Explorer 快速入门这个教程来了解如何创建连接和元数据功能. 4.Hibernate 一览 Hibernate 是一个非常流行的开源的易于配置和运行的基于Java 的对象-关系映射(JORM)引擎.它提供了很丰富的功能包括: 多种映射策略 可迁移的持久化 单个对象映射到多个表 支持集合 多态关联可自定义的SQL 查询 Axion Hypersonic DB InstantDB Interclient Firebird ODBC Bridge jTDS Mckoi Microsoft SQL Server Mimer SQL MySQL Oracle Pointbase PostgresQL SAPDB Sunopsis XML Sybase ThinkSQL

整合SSH三大框架介绍

一.在MyEclipse里先建立一个Web project 的项目,选最新版本的java ee。 二.添加struts2框架支持 1.引入struts2必须得几个jar包,放在WebRoot->WEB-INF->lib 目录下。 2.将WEB应用部署到tomcat服务器上:找到tomacat的安装目录Tomcat6.x\apache-tomcat-6.0.33\conf,打开其中的server.xml文件,在文件末尾上面加入例如 这样的句子,其中path的值为你需要访问网站的上下文,docBase的值为该web项目的WebRoot所在的目录,最后一个readloadable最好选true。 3.在WebRoot->WEB-INF->web.xml中加入struts2的过滤

器将部署好的应用纳入到struts2的管辖范围类,具体代码如下 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPre pareAndExecuteFilter struts2 /* 4.在web项目的src目录下,建一个struts.xml文件,这里是处理struts整个流程的文件。在其中加入 上面的name随便取,extends绝对不能变。 5.这样以后,启动tomcat服务器看看能不能正常启动,如果正常启动后,在浏览器上访问,http://localhost/上下文/index.jsp看能不能进入,若能进入则表示struts2的框架已经成功加到web项目中了,可以开始下一步了。

Hibernate知识的学习

Hibernate知识的学习 --------------------------------------------------第一章------------------------------------------------ 1、为什么用Hibernate呢? 他属于ORM中的一种;用来解决对象与关系模型不匹配的; ===用来解决对象与关系模型不匹配的{方法有两种:使用JDBC手工来操作;还有就是使用ORM来解决}; 学习Hibernate都要到那些包; Hibernate自动创建表; Hibernate测试类中应该怎样启动hibernate调用(主要是构造一个sessionFactory工厂,通过工厂来产生一个session对象,在通过session对象来对Hibernate操作数据库); --------------------------------------------------第二章------------------------------------------------ Hibernate的开发流程;(三点) Hibernate控制一个JavaBean时,应注意的JavaBean应该满足哪三点? --------------------------------------------------第三章------------------------------------------------ 做了一个简单的Hibernate的实例:其中编写了一个HibernateUtil.java文件来专门创建Session 对象的一个公共组件!Hibernate02实例中 --------------------------------------------------第四章------------------------------------------------ Hibernate中Session是最核心的接口,现在我们来学习一下: 通过session对象来完成增、删、改、查、的主要操作! 1.session对象的常用方法: save():添加一个对象,对应到表也就是添加一个信息; delete():删除一个对象,对应到表也就是删除一条信息; update():修改数据库信息,注意一点,当数据库没有信息时,会报出异常; get():根据id查询信息,会立刻访问数据库;【查询数据库时可以不打开事务操作】; Load():根据id查询信息,(返回的是代理,不会立即访问数据库【所以先不产生sql语句,而是当你真正的使用通过Load方法从数据库中去到的记录对象时才输出sql语句】也就是使用了懒加载机制 .如果在使用了Load方法了后,千万不要试图判断去到的对象是否为空值,因为load在这里将会产生出一个对应表JavaBean实体类的子类来处理的,相当于一个代理类的意味;通过user.getClass().getName()来获取这个代理类名称); saveOrUpdate()和merge方法:根据id和version的值来确定是save或update),【调用merge你的对象还是托管的】。【托管中用到了】 refresh():将数据重新读取一次! Lock()方法:查出一条数据,再给数据加一道锁【即为:把对象变成持久对象,但不会同步对象状态】 ------------------------------------------------------------------------------------------- 注意: 1、get和load方法获取数据库表中记录的区别; get():根据id查询信息,会立刻访问数据库;【查询数据库时可以不打开事务操作】; Load():根据id查询信息,(返回的是代理,不会立即访问数据库【所以先不产生sql语句,而是当你真正的使用通过Load方法从数据库中去到的记录对象时才输出sql语句】也就是使用了懒加载机制 .如果在使用了Load方法了后,千万不要试图判断去到的对象是否为空值,因为load在这里将会产生出一个对应表JavaBean实体类的子类来处理的,相当于一个代理类的意味;通过user.getClass().getName()来获取这个代理类名称);

hibernate框架必问的面试题

108.为什么要使用 hibernate? hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码。 hibernate 是一个优秀的 ORM 实现,很多程度上简化了 DAO 层的编码功能。 可以很方便的进行数据库的移植工作。 提供了缓存机制,是程序执行更改的高效。 109.什么是 ORM 框架? ORM(Object Relation Mapping)对象关系映射,是把数据库中的关系数据映射成为程序中的对象。 使用 ORM 的优点:提高了开发效率降低了开发成本、开发更简单更对象化、可移植更强。 115.hibernate 中如何在控制台查看打印的 SQL 语句? 在 Config 里面把 hibernate. show_SQL 设置为 true 就可以。但不建议开启,开启之后会降低程序的运行效率。 116.hibernate 有几种查询方式? 三种:hql、原生 SQL、条件查询 Criteria。 117.hibernate 实体类可以被定义为 final 吗? 实体类可以定义为 final 类,但这样的话就不能使用 hibernate 代理模式下的延迟关联提供性能了,所以不建议定义实体类为 final。 118.在 hibernate 中使用 Integer 和 int 做映射有什么区别? Integer 类型为对象,它的值允许为 null,而 int 属于基础数据类型,值不能为 null。 119.hibernate 是如何工作的? 读取并解析配置文件。 读取并解析映射文件,创建 SessionFactory。 打开 Session。 创建事务。 进行持久化操作。 提交事务。 关闭 Session。 关闭 SessionFactory。 120.get()和 load()的区别? 数据查询时,没有 OID 指定的对象,get() 返回 null;load() 返回一个代理对象。 load()支持延迟加载;get() 不支持延迟加载。

使用Hibernate开发租房系统+(笔记)

第一章Hibernate入门 本章技能目标 理解持久化的概念 理解ORM的概念 了解Hibernate的基本原理 学会编写实体映射文件 学会使用hibernate完成数据增删改操作 学会在项目中使用Hibernate 本章单词 Hibernate:对象关系映射框架。Object:对象。Relational:关系模型。Mapping:映射。Get:得到。Load:加载。Transient:瞬时。Persistent:持久化。Detached:分离 本章简介 对象——关系映射。框架:hibernate Hibernate 的优势 是一个优秀的Java持久化层解决方案,主流的对象——关系映射工具。简化了JDBC繁琐的编码。Hibernate将数据库的连接信息都存放在配置文件中。 持久化与ORM ORM(Object Relational Mapping ,对象关系映射). 当程序退出后,这些数据就不复存在,所以,我们称这些数据的状态为瞬时的(Transient) 有些数据,在程序退出后,还以文件等形式保存在存储设备中,我们称这些数据的状态是持久的(Persistent) 在编写程序的时候,以面向对象的方式处理数据,保存数据的时候,却以关系型数据库的方式存储,所以,客观上我们需要一宗能在两者间进行转换的机制,这样的机制就是ORM(对象关系映射) 准备Hibernate 1.下载需要的jar包 2.部署jar包 3.创建Hibernate配置文件 4.创建实体类和实体映射文件 Hibernate.cfg.xml配置内容: Dialect:参数:用于配置Hibernate使用的不同数据库类型。 Connection.dirver_class参数:表示数据库驱动。 https://www.wendangku.net/doc/899272340.html,ername参数:表示数据库用户名。 Connection.password参数:表示数据库用户秘密。 Connection.url参数:表示数据库URL。 Current_session_context_class参数:指定当前Session范围和上下文。 Show_sql参数:参数为true,则程序运行时在控制台输出SQL语句。 配置好Hibernate的配置文件,就要实现数据库表和实体对象之间的映射,映射信息在映射文件中。 一个实体类到数据库表??(表名)映射的配置,???.hbm.xml其中各元素的含义如下: Class元素:定义一个实体类的映射信息 常用属性如下: Name表示对象实体类的全限定名。Table表示对应的数据库表名。 Id元素:定义该属性到数据库表主键字段的映射。 常用属性如下: Name表示实体类属性的名字。Type表示实体类属性的类型。Column表示数据库表字段的名字,也可在子元素column 指定。 Generator元素:id元素的子元素用于指定主键的生成策略。 常用属性及子元素如下: Class用来指定具体主键生成策略。Param元素用来传递参数。 常用主键的生成策略如下:increment,identity,native。。。。 Property元素:定义实体类中属性和数据库中表的字段的对应关系。 常用属性如下: Name表示实体类属性的名字。Type表示实体类属性的类型。Column表示数据库表字段的名字,也可在子元素column

SSH框架概述

SSH框架 Ssh为struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和 hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate 的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。 业务流程 系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)将 ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。 采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。 框架结构 Struts1 Struts对Model,View和Controller都提供了对应的组件。 ActionServlet,这个类是Struts1的核心控制器,负责拦截来自用户的请求。

Eclipse从入门到精通(第二版)_ch37

第37章 在Eclipse中使用Hibernate 本章将把Hibernate应用到myweb项目中,对数据库层的代码进行改造,同时还会介绍一些Hibernate工具的使用。 37.1 概述 37.1.1 持久化框架产生的背景和现状 什么叫持久化?数据在内存中,关机后就会丢失。而如果把数据保存到后台的数据库中,就能达到“持久”保存数据的目的。而持久化框架的目的就是为了帮助用户更好地使用数据库。 在Java数据库项目中,由于数据库是关系型而非面向对象的。很多时候,用面向对象方法完成了前期的设计和分析,到了数据库层编程时就会变得很别扭,其中最痛苦的就是写面向过程的SQL语句。 J2EE开发主要由JSP、Servlet、JavaBean和EJB 4部分组成。其中EJB是J2EE中一个比较重要的部分,它提供了企业级开发所需的分布式支持。但现实中的大部分项目都是单服务器的轻量级项目,一般都不会涉及分布式的开发环境,这时用EJB就像大炮打蚊子,蚊子没打到,房子却被打破个洞。EJB的笨重和复杂一直让开发者很不满,其中EJB中Entity Bean受到的批评最多,现实项目中鲜有使用Entity Bean的成功范例。 开发者急切地需要一种符合Java编程习惯的、适合轻量级开发的、易于使用的数据库持久化解决方案。在这个背景下就产生了轻量级的数据库持久化技术,其中最主要的就是Hibernate、JDO。 Hibernate是一个民间开源项目,有点像一个草莽英雄,但Hibernate从实用出发的设计思路,使得它脱颖而出成为最流行的持久化技术。Hibernate的作者Gavin King也一举成名,现已成为EJB 3.0专家组的成员,并且在EJB 3.0的Entity Bean部分,将采用和Hibernate 类似的设计方案。因此,Hibernate是开发者学习和使用持久化技术的一个比较好的选择,即使以后EJB 3.0一统天下,所学的Hibernate知识也不会浪费。 JDO 2.0是经JCP(Java规范管理委员会,由SUN、IBM、Oracle等共同参与)承认的一个正式规范,所以也受到了开发者很大的关注。估计未来3年内,持久化技术将以EJB 3.0、Hibernate和JDO 2.0为主,成三足鼎立之势。

Struts+Spring+Hibernate框架搭建

整合SSH框架 整合框架版本:hibernate-distribution-3.6.0.Final-dist + spring-framework-2.5.6.SEC01-with-dependencies + struts-2.1.8.1 一、搭建工具 Windows 、Tomcat 6.0+ 、MyEclipse、SQLServer2008 R2 、Google 二、创建工程 新建WEB项目工程(MyEclipse),包含web.xml配置文件。 三、添加框架环境Junit4 右击新建的项目,选择Build Path —> Add Library —> Junit —> 选择Junit4 —> 确定完成单元测试的添加。 四、添加框架环境Struts2 1.解压struts- 2.1.8.1 ,如下图所示: 可在apps文件里,随机选择一个.war文件解压,到WEB-INF→lib下的基础jar文件:

复制黏贴添加到项目工程的lib下。也可将lib下的全部jar(71个)都复制到项目中来,不过很多用不到。我们崇尚即用即加的原则…… 2. 配置struts.xml和web.xml文件,如下: web.xml: ItcastOA struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndE xecuteFilter struts2 /* index.html index.htm index.jsp default.html default.htm default.jsp struts.xml:

通过hibernate操作oracle的clob类型数据

1问题描述 当我们需要操作大于4000字节的数据(字段)时,我们就需要用到oracle的CLOB数据类型。在对其进行操作时主要有以下三种方案:采用传统的jbdc方式、把clob以string方式处理和直接使用CLOB类型三种方案,下面分别作简要介绍。 2对CLOB数据类型的操作 2.1 方式一传统的jdbc方式 写入Blob/Clob字段和写入其它类型字段的方式非常不同,因为Blob/Clob自身有一个cursor,必须使用cursor对Blob/Club进行操作,因而在写入Blob/Club之前,必须获得cursor才能进行写入,那就需要先插入一个empty的Blob/Club,这将创建一个Blob/Club的cursor,然后再把这个empty的Blob/Club的cursor用select查询出来,这样通过两步操作,就获得了Blob/Club的cursor,可以真正的写入Blob/Club数据了。这种方式比较麻烦,读写都要增加不少工作量。有关此方法的具体实现代码请参照示例一。 2.2 方式二把CLOB以String方式处理 此方法主要是通过继承net.sf.hibernate.type.ImmutableType类或https://www.wendangku.net/doc/899272340.html,erType类来创建一个新的类如:StringClobType,然后在相应的配置文件里面,把该字段映射为StringClobType类型,即可正常操作。此方法的优点主要体现在具体实现操作的代码较为简单,但在第一步的映射问题上,较难理解。有关此方法的具体实现代码请参照示例二。 2.3 方式三直接使用CLOB类型 第三种方法是直接使用clob类型,它主要是在实体中增加一个clobString字段,通过对该字段的读写,在DAOImpl层进行特殊处理后,转换为真正的clob类型,从而实现clob类型字段的CRUD操作。此方法主要优点体现在配置文件的映射类型上,只需要像映射其它基本类型一样,直接写上type="clob" 就OK了。这对初次遇到这种问题的人来说入门相对容易。 2.3.1使用方法 下面以文章(只考虑文章标题和文章内容)为例介绍其使用方法。

SpringData概述

Spring Data JPA 致正在路上行走的程序员: 人生只有一条路不能选择——那就是放弃的路;人生只有一条路不能拒绝——那就是成长的路 一.什么是SpringDataJPA? SpringData项目的目的是为了简化构建基于spring框架应用的数据访问技术,包括非关系型数据库,另外还包括对关系型数据库的访问支持。对于拥有海量的项目,可以用Spring Data来简化项目的开发,就如Spring Framework对JDBC、ORM的支持一样,Spring Data会让数据的访问变得更加方便。 二.Spring Data JPA有什么咋们主要来看看Spring Data JPA 提供的接口,也是Spring Data JPA的核心概念: 1.Repository:最顶层的接口,是一个空的接口,目的是为了统一所有 Repository的类型,且能让组件扫描的时候自动识别。 2:CrudRepository :是Repository的子接口,提供CRUD的功能。 3:PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能。 4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。 5:JpaSpecificationExecutor:用来做负责查询的接口 6:Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可 三.接下来.咋们来学习一下如何使用Spring Data JPA 1.需要先下载Spring Data JPA的发布包(需要同时下载Spring Data Commons和Spring Data JPA两个发布包,Commons是Spring Data的公共基础包),并把相关的依赖 JAR 文件加入到CLASSPATH 中。 2.让持久层接口Dao(以OrderRepository)继JpaRepository 接口,(该 接口使用了泛型,需要为其提供两个类型,第一个为该接口处理的域对象类型,第二个为该域对象的主键类型)

实验 五 Hibernate基础实验

实验五Hibernate基础实验 Part one Hibernate对表的添加 实验目的:掌握Hibernate的基本功能和基本用法 实验要求:通过Hibernate将一个Java对象插入到数据库表中 实验原理: (1)Hibernate是一个面向Java环境的对象/关系数据库映射工具,Hibernate不仅管理Java类型到数据库表的映射,还提供查询数据 和操作数据的OO方法。 (2)Hibernate对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲地使用OO编程思想来处理数据库。 (3)Hibernate采用映射元数据来描述对象-关系的映射细节,元数据通常采用XML。 (4)关系数据库中的元组通过ORM转换成应用程序中的对象;反之,应用程序中的对象通过ORM持久化成关系数据库中的元组。 (5)可以利用Hibernate框架根据配置和类及映射文件生成数据库表结构,反过来,也可以根据数据库表结构生成持久化类和映射文 件。 实验准备: 安装SQL Server20XY(如果是Windows XP上的SQL Server2000版,需要加补丁程序SP3)。 实验步骤: 一.创建Java Project TestH3_2 二.创建数据库及数据源 1.在test数据库中创建表News Use test CREATE TABLE news ( id int IDENTITY (1, 1) primary key ,

title varchar (20) NOT NULL , content text ) Go context的长度在Hibernate中可能闲长,不能插入,需改成较短的类型!设计表结构的图形界面如图5-1所示。 图5-1 设计News表结构的图形化界面 2.打开MyEclipse的Database Explore透视图,如图5-2所示。 图5-2 打开Database Explore透视图 3.创建数据库连接驱动,如图5-3所示。找到jtds-1.2.jar包所在位置。点击Add JARS,把该包包含进去即可。注意:SQL Server的Driver template 选Microsoft SQL Server(jTDS Driver)。

Struts、Spring、Hibernate三大框架的原理和优点

Struts的原理和优点. Struts工作原理 MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图1所示: Struts 是MVC的一种实现,它将Servlet和JSP 标记(属于J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理, 视图:主要由JSP生成页面完成视图,Struts提供丰富的JSP 标签库:Html,Bean,Logic,Template等,这有利于分开表现逻辑和程序逻辑。 控制:在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到Struts的HTTP请求的入口点。它截取和分发这些请求到相应的动作类(这些动作类都是Action类的子类)。另外控制组件也负责用相应的请求参数填充Action From(通常称之为FromBean),并传给动作类(通常称之为ActionBean)。动作类实现核心商业逻辑,它可以访问java bean 或调用EJB。最后动作类把控制权传给后续的JSP 文件,后者生成视图。所有这些控制逻辑利用Struts-config.xml文件来配置。 模型:模型以一个或多个java bean的形式存在。这些bean分为三类:Action Form、Action、JavaBean or EJB。Action Form通常称之为FormBean,封装了来自于Client的用户请求信息,如表单信息。Action通常称之为ActionBean,获取从ActionSevlet传来的FormBean,取出FormBean中的相关信息,并做出相关的处理,一般是调用Java Bean或EJB等。 流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传至指定名称的ActionBean,由ActionBean完成相应的业务操作,如文件操作,数据库操作等。每一个*.do均有对应的FormBean名称和ActionBean名称,这些在Struts-config.xml中配置。 核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。 Struts优缺点 优点: 1.开源软件,能更深入的了解其内部实现机制。 2.Taglib标记库,灵活动用,能大大提高开发效率。 3.页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

相关文档
相关文档 最新文档