摘要: 国庆就快要到了,心中不免一些悲凉; 我们这个项目要10月20号投标.据说还有很多工作要做,我想也是; 上周工作计划出来了,我负责数据WebServer的回写.可是到今天数据表还么有找到.我不知道我的工作在节前能不能完成.以前都是上面的安排比自己的计划害要紧,而现在倒是自己手上没有事做感到焦虑. 我不知道我是否还应该在这样的公司待下去,但是待下去肯定是没有什么前途的; 这几天两个朋友都告诉我在学习英语了忽然才发现自己又迷失了方向好长一段时间了; 阅读全文
posted @ 2006-09-27 10:22 fhway 阅读(113) 评论(0) 推荐(0)
摘要: 14.从映像文件生成数据表在您撰写好*.hbm.xml映射文件之后,您可以使用org.hibernate.tool.hbm2ddl.SchemaExport来自动建立数据库表格,假设您的User.hbm.xml如下:User.hbm.xml<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate 阅读全文
posted @ 2006-09-27 09:53 fhway 阅读(163) 评论(0) 推荐(0)
摘要: 12.LockingHibernate 透过两种 Locking 机制来保证数据在操作过程中不会被干扰。12.1悲观锁定(Pessimistic Locking)在多个客户端可能读取同一笔数据或同时更新一笔数据的情况下,必须要有访问控制的手段,防止同一个数据被修改而造成混乱,最简单的手段就是对数据进行锁定,在自己进行数据读取或更新等动作时,锁定其它客户端不能对同一笔数据进行任何的动作。 悲观锁定(Pessimistic Locking)一如其名称所示,悲观的认定每次资料存取时,其它的客户端也会存取同一笔数据,因此对该笔数据进行锁定,直到自己操作完成后解除锁定。 悲观锁定通常透过系统或数据库本身 阅读全文
posted @ 2006-09-27 09:52 fhway 阅读(222) 评论(0) 推荐(0)
摘要: 11.快取二级快取可以跨越 Session 生命周期,Hibernate 透过第三方来实现二级快取,这边也来看看 Query 的快取。 11.1二级快取(Second-level)Hibernate的[Session level 快取]随着Session生命周期起始与消灭。以第一个 Hibernate中的范例来说,在未使用二级快取的情况下,如果使用以下的程序片段来查询数据:Session session = sessionFactory.openSession();User user1 = (User) session.load(User.class, new Integer(1));user 阅读全文
posted @ 2006-09-27 09:50 fhway 阅读(144) 评论(0) 推荐(0)
摘要: 10.关系映射来看看实体与实体之间的多对一、一对多、一对一、多对多如何与Java对象之间进行映像10.1多对一一个实体简单的说就是在数据库中拥有一个表格,并拥有自已的数据库识别(Database identity)。一个简单的实体与实体间之关系为多对一的关系,例如在学校宿舍中,使用者与房间的关系就是多对一的关系,多个使用者可以居住于一个房间。如上图所示的,可以藉由room_id让使用者与房间产生关联,您可以如下建立user与room表格:CREATE TABLE user ( id INT(11) NOT NULL auto_increment PRIMARY KEY, name VARCHA 阅读全文
posted @ 2006-09-27 09:48 fhway 阅读(126) 评论(0) 推荐(0)
摘要: 9.容器映射容器常用来储存对象,这边来了解一下如何将容器的关系映像至表格。9.1 Set关于Set的特性,您可以先参考 HashSet、TreeSet 这两篇文件的介绍,这边先介绍当Set中包括的对象为非实体(Entiy)时的映射方式,简单的说,也就是所包括的对象没有对象识别(Identity),只是纯綷的值型态(Value type)对象)。假设您有一个User类别,当中除了名称属性之外,另一个就是使用者的电子邮件地址,同一个使用者可能有多个不同的邮件地址,所以在User类别中使用 Set对象来加以记录,在这边使用String来记录每一笔邮件地址,为了不允许重复的邮件地址记录,所以使用Set 阅读全文
posted @ 2006-09-27 09:45 fhway 阅读(124) 评论(0) 推荐(0)
摘要: 8.继承映射在对象导向设计中,继承关系是很常见的,但继承与关系型数据库有着先天上的差异,继承关系至表格的设计上有三种方式。8.1继承 - Table per concrete class如果您采取的是对象模型的方式来设计程序,那么继承关系可能就会在您的程序设计中出现,然而关系型数据库的关联模型与对象模型并不匹配,为了映像对象模型 与关联模型,您可以采取三种策略,这边先介绍最简单的一种:Table per concrete class,也就是每一个类别就对应一个表格。以实例来说明,如果您的程序中有以下的继承关系:以Table per concrete class的方式在关系型数据库中设计表格以作 阅读全文
posted @ 2006-09-27 09:43 fhway 阅读(126) 评论(0) 推荐(0)
摘要: 6.映射基础议题一边是对象,一边是数据表格,两者在映像时有一些过渡的基础议题必须了解。6.1实体对象生命周期Hibernate中的实体对象可以分为三种状态:Transient、Persistent、Detached。 Transient 当您直接使用new创建出对象,例如在之前的例子中,User类别所衍生出之对象,在还没有使用save()之前都是暂存对象,这些对象还没有与数据库发生任何的关系,不对应于数据库中的任一笔数据。 Persistent 当对象与数据库中的数据有对应关系,并且与Session实例有关联而Session 实例尚未关闭(close),则它是在Persisten... 阅读全文
posted @ 2006-09-27 09:41 fhway 阅读(171) 评论(0) 推荐(1)
摘要: 4. HQL(Hibernate Query Language)这是 Hibernate 官方所推荐的查询语言,接近 SQL 的语法,并提供更多的特性与封装。 4.1基本查询使用HQL查询最简单的例子,就是查询指定类别对应表格的所有数据,例如:Session session = sessionFactory.openSession();Query query = session.createQuery("from User");List names = query.list();Iterator iterator = names.iterator();while(itera 阅读全文
posted @ 2006-09-27 09:39 fhway 阅读(119) 评论(0) 推荐(0)
摘要: 3. 基本 API了解一下 Hibernate 常使用的几个类别之基本使用方式。3.1 SessionHibernate在对数据库进行操作之前,必须先取得Session实例,相当于JDBC在对数据库操作之前,必须先取得Connection实例, Session是Hibernate操作的基础,它不是设计为执行绪安全(Thread-safe),一个Session由一个执行绪来使用。Session实例由SessionFactory开启获得,例如:Configuration config = new Configuration().configure();SessionFactory sessionF 阅读全文
posted @ 2006-09-27 09:37 fhway 阅读(130) 评论(0) 推荐(0)