自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chho的专栏

对于整个世界我微不足道,但是我对于自己确是全部

  • 博客(37)
  • 收藏
  • 关注

原创 Hibernate入门 29 - 乐观锁定

入门 29 - 乐观锁定  悲观锁定假定任何时刻存取数据时,都可能有另一个客户也正在存取同一笔数据,因而对数据采取了数据库层次的锁定状态,在锁定的时间内其它的客户不能对资 料进行存取,对于单机或小系统而言,这并不成问题,然而如果是在网络上的系统,同时间会有许多联机,如果每一次读取数据都造成锁定,其后继的存取就必须等待,这将造成效能上的问题,造成后继使用者的长时间等待。 乐观锁定(optimis

2005-01-27 20:53:00 1545

原创 Hibernate入门28 - 悲观锁定

入门 28 - 悲观锁定  在多个客户端可能读取同一笔数据或同时更新一笔数据的情况下,必须要有访问控制的手段,防止同一个数据被修改而造成混乱,最简单的手段就是对数据进行锁定,在自己进行数据读取或更新等动作时,锁定其它客户端不能对同一笔数据进行任何的动作。 悲观锁定(Pessimistic Locking)一如其名称所示,悲观的认定每次资料存取时,其它的客户端也会存取同一笔数据,因此对该笔数据进

2005-01-27 20:52:00 1312

原创 Hibernate入门27 - 事务管理

入门 27 - 事务管理  事务是一组原子操作(一组SQL执行)的工作单元,这个工作单元中的所有原子操作在进行期间,与其它事务隔离,免于数据源的交相更新而发生混乱,事务中的所有原子操作,要嘛全部执行成功,要嘛全部失败(即使只有一个失败,所有的原子操作也要全部撤消)。 在JDBC中,可以用Connection来管理事务,可以将Connection的AutoCommit设定为false,在下达一连

2005-01-27 20:49:00 1561

原创 Hibernate入门26 - Criteria 查询

入门 26 - Criteria 查询  Hibernate支持一种符合Java撰写习惯的查询API,使用Session建立一个net.sf.hibernate.Criteria,您可以在不使用SQL甚至HQL的情况下进行对数据库的查询。 我们以之前所练习过的第一个Hibernate程序完成的结果为例:入门 02 - 第一个Hibernate程序 如果要使用Criteria来查询所有的User

2005-01-27 20:47:00 1639

原创 Hibernate入门25 - Session 管理

入门 25 - Session 管理  Session是Hibernate运作的中心,对象的生命周期、事务的管理、数据库的存取,都与 Session息息相关,就如同在编写JDBC时需关心Connection的管理,以有效的方法创建、利用与回收Connection,以减少资源的消耗,增加系统执行效能一样,有效的Session管理,也是Hibernate应用时需关注的焦点。 Session是由Se

2005-01-27 20:45:00 1539

原创 Hibernate入门24 - 延迟初始 Lazy Initialization

入门 24 - 延迟初始 Lazy Initialization  首先我们来看看这个主题:入门 11 - Set 映射 依这个主题所完成的例子,请将Hibernate的show_sql设定为true,当我们使用下面的程序时,观看控制台所使用的SQL: HibernateTest.javaimport onlyfun.caterpillar.*;import net.sf.hibe

2005-01-27 20:42:00 1330

原创 Hibernate入门23 - 多对多实体映像

入门 23 - 多对多实体映像  假设现在有User与Server两个类别,一个User可以被授权使用多台Server,而在Server上也记录授权使用它的使用者,就User与Server两者而言即使多对多的关系。 在程序设计时,基本上是不建议直接在User与Server之间建立多对多关系,这会使得User与Server相互依赖,通常会透过一个中介类别来维护两者之间的多对多关系,避免两者的相互

2005-01-27 20:39:00 1236

原创 Hibernate入门22 - 一对一实体映像

入门 22 - 一对一实体映像  假设我们之前范例的User与Room是一对一的关系,也就是每一个人分配一个房间,先看看这两个类别: User.javapackage onlyfun.caterpillar; public class User {    private long id;    private String name;    private Room

2005-01-27 20:36:00 1597

原创 Hibernate入门21 - 双向关联与inverse设定

入门 21 - 双向关联与inverse设定  之前我们对User与Room作了单向的多对一以及反过来的一对多关联,我们也可以让User与Room彼此参考,形成双向关联,就User与Room对象,具体来说,就是将程序如下设计: User.javapackage onlyfun.caterpillar; public class User {    private long

2005-01-27 20:32:00 1543

原创 Hibernate入门20 - cascade持久化

入门 20 - cascade持久化  在Java程序中,对象与对象之间会透过某些关系互相参考,如果有一个对象已经是持久化对象,被它参考的对象直觉上也应该要持久化,以维持对象之间关联的完整性,这是藉由可达性完成持久化(Persistence by reachability)的基本概念。 如果将对象之间的关联想象为一个树形图,从某一个持久化物件为树根出发,父节点若是持久化对象,则被父节点参考到的

2005-01-27 20:28:00 1378

原创 Hibernate入门19 - 一对多实体映像

入门 19 - 一对多实体映像  在前一个主题中,User对Room是多对一,反过来看,Room对User是一对多,一个Room可以给多个User住宿使用,我们的User类别这次设计如下: User.javapackage onlyfun.caterpillar; public class User {    private long id;    private St

2005-01-27 20:24:00 1316

原创 Hibernate入门18 - 多对一实体映像

入门 18 - 多对一实体映像 一个实体简单的说就是在数据库中拥有一个表格的对象,并拥有自已的数据库识别(database identity),之前介绍的Component对象并不是实体,它没有自已的数据库识别,具体的话,它没有id属性,Hibernate并不会赋予它id值。 实体与实体之间的关系有:一对一、多对一、一对多、多对多。其中多对一算是最常见的实体关系,举个简单的例子,假设您在撰写一

2005-01-27 20:19:00 1416

原创 Hibernate入门17 - 实作equals和hashCode

入门 17 - 实作equals和hashCode  Hibernate并不保证不同时间所取得的数据对象,其是否参考至内存的同一位置,使用==来比较两个对象的数据是否代表数据库中的同一笔数据是不可行的,而Object预设的equals()本身即比较对象的内存参考,如果您要有必要比较透过查询后两个对象的数据是否相同(例如当对象被储存至 Set时)您必须实作equals()与hashCode()。

2005-01-27 20:15:00 1875

原创 Hibernate入门16 - 对象状态与识别

入门 16 - 对象状态与识别  在之前的主题大致了解Hibernate的基本操作与ORM之后,我们来重新探讨一些Hibernate底层的一些机制,首先从Hibernate的对象状态开始讨论。 Hibernate中的对象可以分为三种状态:暂存(Transient)对象、持久(Persistent)对象、分离(Detached)对象。 暂存对象指的是在Java程序流程中,直接使用new制作出之对

2005-01-27 20:12:00 2090 2

原创 Hibernate入门15 - Component的集合映像

入门 15 - Component的集合映像 先前所介绍的集合映像都只使用了String属性表示一个数据库字段的内容,在之前的一个主题中我们看过,我们可以将一个字段的内容映像至一个Component对象:入门 10 - Component 映射如果我们想要将Component对象储存至集合对象中,例如将Email对象储存至HashSet中,在映像时只需要将 标签改为,并指定映像的类别,举个实际

2005-01-27 20:10:00 978

原创 Hibernate入门14 - Set与Map的排序

入门 14 - Set与Map的排序 在查询对象的Set或Map成员时,您可以对其进行排序,排序可以在两个层次进行,一个是在Java执行环境中进行,一个是利用数据库本身的排序功能。如果要在Java执行环境中进行排序,可以映像文件中设定sort属性,例如若为Set,则如下设定:                 藉由指定sort为natural,Hibernate在加载数据库的

2005-01-27 20:03:00 1327

原创 Hibernate入门13 - Map 映射

入门 13 - Map 映射 假设您现在要设计一个在线档案管理,每一个使用者可以上载自己的档案,并为档案加上描述,我们可以使用Map型态对象来记录上传的档案,以档案描述作为键(key),以文件名称作为值(value),我们的User类别设计如下: User.javapackage onlyfun.caterpillar; import java.util.*; publ

2005-01-27 20:00:00 987

原创 Hibernate入门12 - List 映射

入门 12 - List 映射  这边介绍如果对象中包括List型态的属性时如何进行映像,首先我们假设我们要制作一个在线档案管理,使用者上载的文件名称可能是重复的、具有相同名称,之前使用的Set不允许有重复的内容,所以这次我们改用List,我们的User类别撰写如下: User.javapackage onlyfun.caterpillar; import java.util.

2005-01-27 19:56:00 1021

原创 Hibernate入门11 - Set 映射

入门 11 - Set 映射  这个主题介绍如果在对象中包括集合对象,像是使用HashSet来包括其它对象时,该如何进行对象与数据表的映像,像Set这样的集合,可以包括所有的Java对象,这边先介绍当Set中包括的对象没有实体(Entiy)时的映像方式。 (简单的说,也就是所包括的对象没有对象识别(identity)值,没有数据库层次上的识别值之表格与之对应的对象,只是纯綷的值型态(value

2005-01-27 19:53:00 1176

原创 Struts Validator验证器使用指南

验证器:从0.5版,验证器在一些form中就已经实现了,他最初包含在开发人员包中,后来核心代码挪到Jakarta Commons包中和Struts特别扩展中作为 Struts 1.1的一部分。许多开发者为方便一直使用struts验证器,这篇文档首先概述验证器的核心功能性,然后大概介绍在 struts1.1中的变化和新增功能。如果你配置好验证器插件,你应该扩展ValidatorForm而不是

2005-01-25 14:46:00 1273

原创 Hibernate入门10 - Component 映射

入门 10 - Component 映射  考虑这么一个对象类别: User.javapackage onlyfun.caterpillar; public class User {    private String id;    private String name;    private char sex;    private int age;  

2005-01-15 15:52:00 1126

原创 Hibernate入门09 - 继承映射2

入门 09 - 继承映射2  接续上一个主题,我们来看看继承关系映像的第三种方式,我们给予父类别与每个子类别一个表格,与第一个方法不同的是,父类别映像的表格与子类别映像的表 格共享相同的主键值,父类别表格只记录本身的属性,如果要查询的是子类别,则透过外键参考从父类别表格中取得继承而来的属性数据。 直接以图片说明会比较容易理解,我们使用前一个主题中的User、PowerUser与GuestUse

2005-01-15 15:49:00 1006

原创 Hibernate入门08 - 继承映射1

入门 08 - 继承映射1  如果应用程序中的对象有继承的关系,我们可以有三种策略将这种关系映像至数据表上。 最简单的方式就是给每个对象一个表格,如果父类别User中有field1、field2两个属性,其表格USER有FIELD1、FIELD2与之对 应,而子类别SubUser若继承了父类别的field1、field2属性,表格中SUBUSER中也要拥有FIELD1、FIELD2与之对应,这

2005-01-15 15:41:00 1103

原创 Hibernate入门07 - 更新,删除数据

入门 07 - 更新,删除数据  如果您是在同一个Session中取出数据并想要马上进行更新,则只要先查询并取出对象,透过setXXX()方法设定好新的值,然后呼叫session.flush()即可在同一个Session中更新指定的数据,例如: HibernateTest.javaimport onlyfun.caterpillar.*;import net.sf.hibernat

2005-01-15 15:31:00 1858

原创 Hibernate入门06 - Query接口

入门 06 - Query接口  除了直接使用find()方法并配合HQL来进行查询之外,我们还可以透过 net.sf.hibernate.Query接口的实例来进行查询,透过Query接口,您可以先设定查询参数,之后透过setXXX()等方法,将指定的参数值填入,而不用每次都撰写完整的HQL,直接来看个例子: Query query = session.createQuery("sele

2005-01-15 15:02:00 2240

原创 Hibernate入门05 - 基本数据查询

入门 05 - 基本数据查询  使用Hibernate进行数据查询是一件简单的事,Java程序设计人员可以使用对象操作的方式来进行数据查询,查询时使用一种类似SQL的HQL (Hibernate Query Language)来设定查询的条件,与SQL不同的是,HQL是具备对象导向的继承、多型等特性的语言。 直接使用范例来看看如何使用Hibernate进行数据库查询,在这之前,请先照之前介绍过

2005-01-15 14:42:00 1571 1

原创 Hibernate入门04 - 提供JDBC连接

入门 04 - 提供JDBC连接 如果需要的话,您可以自行提供JDBC连接对象给Hibernate使用,而无需透过配置文件设定JDBC来源,一个最简单的例子如下: Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/HibernateTest?user=root&passwor

2005-01-15 14:33:00 2096

原创 Hibernate入门03 - 配置文件

入门 03 - 配置文件  Hibernate可以使用XML或属性档案来配置SessionFactory,预设的配置文件名称为hibernate.cfg.xml或hibernate.properties。 上一个主题中所示范的为使用XML文件的方式,一个XML文件的例子如下: hibernate.cfg.xml    PUBLIC "-//Hibernate/Hibernate

2005-01-15 14:26:00 1243

原创 Hibernate入门02 - 第一个Hibernate程序

入门 02 - 第一个Hibernate程序  这边以一个简单的单机程序来示范Hibernate的配置与功能,在这个例子中的一些操作,实际上会使用一些自动化工具来完成,而不一定亲自手动操作设定,这边完全手动的原因,在于让您可以知道Hibernate实际上会作那些动作,在进行范例之前,请先确定前一个主题中的相关jar档案都已经设定在 CLASSPATH中。 我们先作数据库的准备工作,在MySQL

2005-01-15 14:03:00 1500

原创 Hibernate入门01-Hibernate所需类库

入门 01 - Hibernate所需类别库Hibernate是ORM的解决方案,其底层对数据库的操作依赖于JDBC,所以您必须先取得JDBC驱动程序,在这边我们使用的是MySQL,所以您必须至以下网址先取得MySQL的JDBC驱动程序:JDBC驱动程序  接下来取得Hibernate,在撰写此文的同时,Hibernate最后的稳定版本是2.1.6,而3.0版还在测试阶段,这边的介绍将以2.1

2005-01-15 13:51:00 1819

原创 Eclipse的CDT配置(for Windows)

CDT是在eclipse中编写C++程序的插件,虽然还不是很完美,但是是在windows中编写linux下C++程序(GNU C++)的一个好途径。 按照eclipse的官方网站的要求,要下载如下的东东:1.eclipse(http://www.eclipse.org/downloads/index.php),我下的是3.0,也有更高一点的版本,如果想要有中文帮助的,可以下载2.1.2

2005-01-14 10:19:00 3106

原创 Eclipse启动参数

-arch architecture 定义 Eclipse 平台在其上运行的处理器体系结构。Eclipse 平台通常使用  Java os.arch 属性的常用值来计算最佳设置。如果在此处指定该项,则这是 Eclipse 平台使用的值。此处指定的值可作为  BootLoader.getOSArch() 用于插件。示例值有:“x86”、“sparc”、“PA-RISC”和“ppc”。 2.0 

2005-01-14 09:47:00 861

原创 Linux下的常用工具软件

网络工具    上网用自带的Mozilla。    收发邮件用自带的Evolution套件,这个咚咚就跟Outlook一样强大,但却要简洁很多,收发邮件,日程管理,联系人管理等等。   聊天用LumaQQ,一个牛人猜测腾讯的加密协议,用Java写了一个开源的跨平台的QQ。    MSN用webmessenger,地址在webmessenger.msn.com,随时随地都可以上MSN了。不过能上MS

2005-01-12 17:28:00 1162

原创 用ant来执行hibernate所自带sechmaExport的工具

既然在eclipse环境下工作,最好所有相关的工作都能在它里面完成。hibernate自带了一个工具schemaExport,可以让你从map文件产生数据库的ddl。在eclipse project中新建一个目录,schemae,然后新建两个文件。schemae.xml,schema.properties。schema.properties的内容:neededClassPath=c:/hi

2005-01-08 11:27:00 1192

原创 Mysql中没用InnoDB实现外键约束的例子(DDL)

# ---------------------------------------# Host     : localhost# Port     : 3306# Database : chhoSET FOREIGN_KEY_CHECKS=0;DROP DATABASE IF EXISTS `chho`;CREATE DATABASE `chho`;USE `chho`;##

2005-01-07 11:44:00 1449

原创 Mysql InnoDB介绍

InnoDB 是 MySQL 上第一个提供外键约束的引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中最有效率的。 InnoDB 是一套放在 MySQL 后台的完整数据库系统,

2005-01-07 11:18:00 13247

原创 unsaved-value的经典解释

当你显式的使用session.save()或者session.update()操作一个对象的时候,实际上是用不到unsaved-value的。某些情况下(父子表关联保存),当你在程序中并没有显式的使用save或者update一个持久对象,那么Hibernate需要判断被操作的对象究竟是一个已经持久化过的持久对象,是一个尚未被持久化过的内存临时对象。例如: java代码: 

2005-01-05 16:41:00 1211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除