Goingmm

  BlogJava :: 首页 :: 新随笔 ::  :: 聚合  :: 管理 ::
  82 随笔 :: 15 文章 :: 452 评论 :: 0 Trackbacks

#

     摘要:           周末和 MIKE 吃饭的时候,他询问,上次提说的问题,什么时候能写出来。“对Session和Transaction的处理,最好单独实现一个模板类来统一做”   温故 居于常规的Hibernate的DAO代码。例子做一个Create操作  1public&nb...  阅读全文
posted @ 2005-12-07 13:55 Goingmm 阅读(1682) | 评论 (11)编辑 收藏

------------------------------------------------------------------------------------
      NEW OFFICE   AT  2005-12-05
----------------------------------------------------------------------------------------------

换了新的环境,
新办公室 很大,很新,
大得大家坐一间屋子里,稍微远点就看不清楚摸样了
新得连地毯,空调都没得。

昏暗的灯光下。感觉像手工作坊的织衣车间
楼顶横七竖八的管道和吊灯,有点像学校的洗澡堂

可能,设计师要的就是这份简洁,
... 似乎在向我们诠释,节约

大老远从城市中出来,
找的,就是这刻回归自然的感觉

荒凉?
一个连吃饭都紧张的地方。
明天打算自己带盒饭过来试试


2005-12-05 New Office




posted @ 2005-12-05 17:47 Goingmm 阅读(291) | 评论 (3)编辑 收藏


   最近,用各种算是流行的方法写了些Hibernate的例子(基于测试)。上次打算写两篇文章。① Hibernate 常用工具的配置和使用。② Hibernate 比较简单的,基于单表操作的例子。写了80%吧。越想越感觉意义不大。现在网上很多这方面的文章。我自己也没有理由,自私的所谓备份。占用Blogjava的硬盘空间。就成了后来的 “冰 冻 闲 聊
  
上个星期五,因为公司停电。所以休息了三天。一年前,这个数字可能会感觉太短。但是现在却是突然觉得连续三天不上班。不知道该干什么好。
  
难道是对这种“月光”族的生活上瘾拉? 这样的话题,等以后想明白了再说吧!~
  
接着说这个周末吧!因为无聊,翻翻,去年用过的一些散乱的笔记。越看越搞笑,字迹潦草,还好基本上是一些技术痕迹。找不到从前那些“少年不知愁滋味”的感觉。
  
因为我一直不是很喜欢看书。现在的书,写得好的不多,但是价钱蛮贵的。所以,有时候就会把一些疑惑的问题写在一张纸上。然后去网上先收集一些资料,再阅读总结。
  
这里,我发现了一条有趣的问题。2004123 Hibernate使用JDBCJTA管理事务有什么区别?傻傻的问题。不如今天就聊聊这个话题吧!可能,现在也会有人对这个问题感觉疑惑的。

 

打开hibernate.cfg.xml看看具体的JDBCTransaction JTATransaction 配置:

 11)
 2<property name="hibernate.transaction.factory_class">
 3org.hibernate.transaction.JDBCTransactionFactory
 4</property>
 5
 62)   
 7<property name="hibernate.transaction.factory_class">
 8org.hibernate.transaction.JTATransactionFactory
 9</property>
10


可能你还会问:“除了这两种还有其他的选择吗?到底选择那一种好呢?在一个应用中能混合使用吗?”等等问题

分析和解答:
第一个问题
   可以选择其他的事务管理方式。不过都是JTA的不同实现版本。这个目录下面有罗列出来hibernate-3.0\src\org\hibernate\transaction。比如:

1<property name="hibernate.transaction.manager_lookup_class">
2org.hibernate.transaction.WeblogicTransactionManagerLookup
3</property>
4


第二个问题
  
概念事务:事务就是能以整体的原子操作形式完成的一系列操作。

   是不是感觉有些饶口?简单的说,事务 就是一个逻辑工作单元。其中包括一系列的操作。
至于事务为什么会产生?有什么基本特性?等等。。这些问题今天不就详细的罗列了。网络上有写得很好的文章。
Hibernate JDBC的轻量级封装。他本身并不具备事物管理的能力。事务的管理和调度将委托给JDBC或者JTA去做。


    先说,他默认的事务处理机制[ JDBC Transaction ],这的确是最简单的处理方式,因为Hibernate只是对JDBC事物做了一层简单
的封装。JDBC事务由Connection管理。事务周期局限于Connection的生命周期之内。在Hibernate中这种事务周期也就局限于一个Session之内。做个比较吧!

Connection conn =     ;      <---   session = sf.openSession();// 初始化数据库连接,

setAutoCommit= false;

conn.setAutoCommit(false);     <---   tx = session.beginTransactioin(); 会再次确认setAutoCommit是否是false

调用业务方法                   <---   调用业务方法

conn.commit();                 <---   tx.commit(); (对应左边的两句) 这里很关键,关掉自动commit。自己就必须做commit。否则数据是不会被持久到数据库

conn.setAutoCommit(true);

conn.close();                  <---   session.close();

 

简单吧!如果你对JDBC有了解,看到这里可能会坏笑,NND就这么简单,我也会封装有兴趣的话可以直接去看看具体的源代码。

 
看看第二种[JTA Transaction]有什么神奇的地方吧!

   JTA 提供了跨Session的事务管理能力。JTA的事务是要容器支持的,即JTS,用来分布式的要求比较多一些,比如像银行这种大系统,处理多个事务源的这些的。
  
JTA事务管理则是由JTA容器实现。事务的生命周期完全由容器来维护。容器中可以有很多Connection。按照执行的顺序,因该是串联的一条JDBC Connection事务链。所以JTA的事务周期可以跨多个JDBC Connection的生命周期。在Hibernate中这种事务周期也就可以跨越多个Session
  
所以。JTA事务的Connection不能对事务管理进行干涉。意思就是,假如使用了JTA就不应该再重复调用HibernateTransaction功能。这里涉及到一种事务模型(嵌套式事务模型)的问题。这里也不详细的介绍具体的几种事务模型了。在EJB2.0规范里面也不支持这种事务处理模型。
  
例如

1class A 有一个方法 savePerson()
2class B 有一个方法 saveAddress()
3// Call A.savePerson() and B.saveAddress() Used JTATransaction
4class C 有一个方法 saveAll() 
5UserTransaction tx = (UserTransaction)(new InitialContext.lookup(“…”))
6A.savePerson();
7B.saveAddress();
8tx.commit();
9

 

那么下面这段代码

1Transaction tx = session.beginTransaction();
2tx.commit();
3


就不能在class A class B 中出现。

原因:session.beginTransaction()也同样执行了InitialContext.lookup方法来获UserTransaction的实例,tx.commit()也同样调用了UserTransaction.commit().这样做就会形成嵌套式的事务。在Hibernate里面是不被允许的。会导致运行期错误

 

谈到这里,不难看出,他们都有着自己鲜明的特点和基本的联系。回到开头的问题,在实际项目中该选用谁好呢?

这就需要分情况而定了。

1) 如果项目有用到Sessionbean.可能你会疑问?这时候由谁来管理事务呢?

答案:用SessionBean来管理。使用JTA会很方便。因为你完全没有必要去理会Transaction。直接在SessionBean的部署描述符里面声明事务就行了。

2) 自己实现一个Service类,来统一调用持久层的方法。这样也能做到前后台的松耦合。但是这时候你对sessionTransaction的处理就需要小心了。如果系统考虑分布式就使用JTA否则就JDBC足夷。但还是有必要考虑系统的升级,变迁什么的。对sessionTransaction的处理,最好不要放在DAO里面做。单独实现一个模板类来统一做。具体的原因和做法,以后有时间再写出来。

 

第三个问题

由于SessionFactory是线程安全的,他的创建过程非常复杂,代价极其昂贵。一个应用中最好只有一个SessionFactory。事务管理类型的选择是在SessionFactory的属性里面配置的。这里只能选择一种事务管理方式。

当然,你可以说还有特殊的情况,假如,这个应用需要连接到两台数据库服务器,就必须为他创建另一个SessionFactory。那么就可以选用另一种事务管理方式。表面上看这种情况是可以的。居于两种事务的性能考虑。混和用的意义不是很大。假设这样用+面对考虑不周全的DAO,也违背了设计原则,想想,这样的话,因为数据库的变动,还得回去修改DAO的代码吗?(可能会产生嵌套问题)

所以关于这个问题的结论就是:

在一个SessionFactory中只能选用一种事务管理

面对多个SessionFactory的时候,可以混合用,但是不推荐

2005-11-28 CTU OFFICE GOINGMM

posted @ 2005-11-28 12:00 Goingmm 阅读(1870) | 评论 (3)编辑 收藏

遗憾昨天晚上的比赛没有看。补时4分钟?是不是裁判知道尤文又赢了,认为AC 必须得赢球啊!

这种眼神很长时间没见着了


                      yzj.jpg

附上:舍甫琴科  上一场的4个进球,如果单纯的是为了酣畅淋漓。让你提前垫付了未来三场的运气,
             有些不划算哦

                           spqk-4.jpg


2005-11-28 CTU OFFICE


posted @ 2005-11-28 11:24 Goingmm 阅读(257) | 评论 (1)编辑 收藏

很久没有回来了。大家好
今年的成都可真够冷的。想..想...想.. 还没有发饷,想什么都虚幻
闲来无聊,写些无聊的东西。本来想放Blog上,但是太杂乱,所以这篇Blog写了80%后我就停下了。
结果,变成了几行无聊的文字


 

posted @ 2005-11-24 18:26 Goingmm 阅读(344) | 评论 (5)编辑 收藏

航班日期:2005年11月15日

航班号:CA422

起飞/到达时间:13:00/15:30


    完成我的使命。该回家了。明天就要离开这个城市。离开一起战斗了26个日日夜夜的项目组。项目和团队全局意义的胜利,还需要一些时间去考验。祝福他们在剩下的日子里能做得更好。
   
北京,今年来了两次。工作原因,使我顶多算一个匆匆的看客。一直没有机会去真正了解这个Master城市。为什么叫他Master城市呢?因为我们平时看到的很多机构在这里就是总部。外表其实也就那样。但是权力却是Master的。背负着沉重的历史,注定这座城市不会给我们太多华丽和浮华的外表。想想儿时向往的天安门,其实就一座二层老房子。近看我还是觉得单薄了一点。没什么气势。尤其是两边的看台。比大学足球场的看台还简单。可能这只是鞭策中国人的一种象征物吧。
   
要让我拿北京和成都做个比较的话。可能要明天在路上边走边看,才会有些感觉。但是我不大可能在飞机上给大家发Blog吧。随便说一些生活上的感觉。这边上班时间比成都要早(830)。但是因为离得不是太远,而且每天上下班打车。这方面,的确方便了很多。累了一天后很容易恢复。这样早上会睡得好一点。北京很大,大得五环外也会经常塞车。据说今年北京是暖冬,带了很多衣服过来都还没机会穿。而且家里有暖气。想想在成都这几天不敢穿着短裤趴窗台上上网吧!~ 遗憾我还没有能看到北方的雪,和沙尘暴。只是每天回家灰尘挺吓人的。 干燥的气候,随时都会被静电袭击的危险。所以我的手基本还好,但是衣服的袖子就可怜了。刚开始,不理解的北京人,还以为我是怕他们的地方脏。幸好好奇的问了我,不然成天大的误会了。
   
这次过来基本没有出去玩。北京的朋友还有老同学些。真是对不住了,没有去看你们。有机会咱们成都见。那里才有正宗的水煮鱼,夫妻肺片北京的饮食比较实在。贵但是量足。北京人自豪的烤鸭不好吃。说不出有什么特色。基本上我都不会吃偏甜的东西。还好这次找到一家,川菜做得不错。


     停一下 刚才抓拍了几张照片。全当是这次生活的一个缩影送给大家

     parlor.JPG
     PSTwins.JPG
     Leo.JPG
     windowsill.JPG
     living room.JPG

    
   最后,我不得不感谢 “听涛小区长期稳定的无限网络” 虽然也不知道是谁家的,而且只发射到我的窗台上。但是这种共享精神充分体现了北方人,为人淳朴 豪爽 耿直 的特点。我会把你们的这种精神带回南方,不过,得等我有无限网络的那一天.

2005-11-14夜 听涛 窗台

posted @ 2005-11-14 23:11 Goingmm 阅读(432) | 评论 (5)编辑 收藏

------------------------------------------------------------------------------------------------
   Eclipse Platform
Version: 3.1.0 Build id: I20050219-1500

   
  Junit Version:
3.8.1

------------------------------------------------------------------------------------------------

EclipseJunit 大家应该都很熟悉了。这里我也不打算去讲为什么需要做这样的组合。为什么需要测试。为什么测试还有那么多讲究和学问。用一个最简单的例子,让还没有使用过的朋友,有一个简单的认识。主要是发图玩玩

 

1)看看完成后的效果图
Project.JPG

2)      
运行Eclipse。新建一个workplace项目,点击 file->new->project,选择Java项目,点击下一步。写一个项目名称,例如UseJUnit。点击Finish。这样就完成新项目的建立。再来配置一下Eclipse,在构建路径中添加JUnit类库。在工具条上点击项目->属性,选择Java Build Path,Libraries,选择 Add external JARs,浏览Junit被存储的目录,选择junit.jar,点击打开。你将会看见JUnit出现在库的列表中。点击确定,让Eclipse重建路径。
addJar.JPG

         

3)新建一个Class Person
Person.JPG

4) 新建一个Test Class TestCaseWithJunit
newJunit.JPG

代码如下:public void testSay() 方法是我自己加进去的

TestCaseWithJunit.JPG

5) Run Test case
   runJunit.JPG

6) 看看测试结果
      result-1.JPG

7)修改一下测试代码
   modifiedcode.JPG

8)再看测试结果
result-2.JPG

result-3.JPG



呵呵! 第一次发图。如果上面的过程描述有什么不清楚的地方。请与我联系

2005-11-13  听涛 窗台


posted @ 2005-11-13 13:45 Goingmm 阅读(375) | 评论 (1)编辑 收藏

-------------------------------------------------------------------------------------------------
   MySQL-Front  V3.2 Build 6.25

   MySQL           V4.1

-------------------------------------------------------------------------------------------------

      
从名字看双胞胎一般的他们俩。是绝配吗?我也不知道,有时候,MySQL-Front会告诉我:“我不认识MySQL”。不要以为我和他有啥子关系。这就是我今天要谈到的问题。因为刚用MySQL一段时间。不知道还有没有更好的组合式用法。

1)用[MySQL Command Line Client]进入MySQL cmd操作模式

drop database dbName;

create database dbName;

use dbName;

2) 数据库建立好以后开始建立表

   drop table person;

      create table person (

         person_name varchar(16) not null primary key,

         person_pass varchar(32) not null,

         person_sex int(1) default '0' ,

         person_email varchar(30) default null,

         person_lastLogTime dateTime,

         active_status int(1) default '0'

);

3)  现在你可以插入一些数据

insert into person  values('goingmm','***','', 'todogoingmm@163.com', '2005-11-5',1);

…………...........

4)  OK 现在可以查询出来看了

select * from person

 

突然感觉老在这里操作很是不方便。于是想起了MySQL-Front。打开看看,咦!没有找到数据库dbName。努力了1个小时。原因猜完,办法想尽。MySQL-Front还是说我认识他,你不要搞我拉!~果然,再搞 MySQL-Front死掉拉。有个性。

后来把刚才做的1234)全部回滚。就是删掉数据库。在MySQL-Front里面先建立一个数据库。然后去cmd建立表,插入数据。最后回到MySQL-Front。哈哈,这回看到刚刚建立的数据库了。

不知道大家有没有遇到过这个问题。是MySQL-Frontbug吗?还有一些MySQL-Front很弱智的问题,比如SQL编辑器。希望他的下一个版本不要这么粗糙。毕竟MySQL 5.0


2005年11月5日

-----------------------------------------------------------------------------------------

posted @ 2005-11-05 14:43 Goingmm 阅读(2444) | 评论 (10)编辑 收藏


很不好意思,前三篇都还是概念。

其一: 我想归纳下来,给自己以后看做一个备份
其二: 现在真没时间去写代码

项目做完,回到成都,在后面的文章中,我会抽空写一些实际的例子


---------------------------------------------------------------------------------------------------------------------
   概念Hibernate中的接口
---------------------------------------------------------------------------------------------------------------------

大致分类:

     被用户的应用程序调用的,用来完成基本的创建、读取、更新、删除操作以及查询操作的接口。这些接口是Hibernate实现用户程序的商业逻辑的主要接口,它们包括SessionTransactionQuery

     Hibernate用来读取诸如映射表这类配置文件的接口,典型的代表有Configuration

     回调(Callback)接口。它允许应用程序能对一些事件的发生作出相应的操作,例如InterceptorLifecycleValidatable都是这一类接口

     一些可以用来扩展Hibernate的映射机制的接口,例如UserTypeCompositeUserTypeIdentifierGenerator。如果你确认有必要的话这些接口可由用户程序来实现。

 

Session接口

       Session接口对于Hibernate开发人员来说是一个最重要的接口。然而在Hibernate中,实例化的Session是一个轻量级的类,创建和销毁它都不会占用很多资源。这在实际项目中确实很重要,因为在客户程序中,可能会不断地创建以及销毁Session对象,如果Session的开销太大,会给系统带来不良影响。但值得注意的是Session对象是非线程安全的,因此在你的设计中,最好是一个线程只创建一个Session对象。

       Hibernate的设计者将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区,Hibernate能检测到这些持久对象的改变,并及时刷新数据库。我们有时也称Session是一个持久层管理器,因为它包含这一些持久层相关的操作,诸如存储持久对象至数据库,以及从数据库从获得它们。请注意,Hibernate session不同于JSP应用中的HttpSession。我们通常会将HttpSesion对象称为用户Session

 

SessionFactory 接口

       他用到了一个设计模式[工厂模式],用户程序从工厂类SessionFactory中取得Session的实例。

       但是请记住,SessionFactory并不是轻量级的!实际上它的设计者的意图是让它能在整个应用中共享。典型地来说,一个项目通常只需要一个SessionFactory就够了,但是当你的项目要操作多个数据库时,那你必须为每个数据库指定一个SessionFactory

 

Configuration 接口

       Configuration接口的作用是对Hibernate进行配置,以及对它进行启动。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。

 

Transaction 接口

       Transaction接口是一个可选的API,你可以选择不使用这个接口,取而代之的是Hibernate的设计者自己写的底层事务处理代码。 Transaction接口是对实际事务实现的一个抽象,这些实现包括JDBC的事务、JTA中的UserTransaction、甚至可以是CORBA事务。
为什么要这样设计呢?因为这样使开发者能够使用一个统一事务的操作界面,使得自己的项目可以在不同的环境和容器之间方便地移值。

 

QueryCriteria接口

       Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作

 

Callback 接口

       当一些有用的事件发生时。例如持久对象的载入、存储、删除时,Callback接口会通知Hibernate去接收一个通知消息。一般而言,Callback接口在用户程序中并不是必须的,但你要在你的项目中创建审计日志时,你可能会用到它。


2005年11月3日 夜  阴天 温度偏低

听涛[601]室 窗台

posted @ 2005-11-03 23:16 Goingmm 阅读(716) | 评论 (21)编辑 收藏

    我这里是北京时间2005-10-31 晚上22:10。还有一个时辰大家都关心的“星期一”就要过去了。今天到底发生了什么?项目组是怎么挺过来的?我们还能继续往前走吗?

现在项目组的核心开发小组,DBA,服务器管理,报表组,Domain还有一些协调的工作人员都集中在信心中心。我们就下到医院流程现场。

核心开发小组:这组基本上是新加坡,马来西亚过来的同事。他们负责解决系统随时出现的紧急情况。

DBA:这个小组主要负责继续做移植数据的效验,和紧急的数据patch,最主要的还是负责数据库压力监控和调优。

服务器管理组:他们负责看好四台Web服务器(有两台是备用的),一台应用服务器。还有其他的测试服务器。

报表组:这组人员现在的压力可不小。各个部门的流程单据,还有PA的财务报表,那可是用户眼见为实的东西。他们的    从容, 总算让我了解ShuaiYu同志去年拿那么多奖金背后的故事拉。

Domain

协调的同事组:他们也挺辛苦的,杂乱的工作。该怎么去阅读他们,我想自己尝试过后都能理解。

 

大家可能会疑惑,goingmm你娃在说啥子哦!半天说不到主题,大伙张着嘴巴呼吸在等现场镜头呢!!

 

没有伏笔,没有漂亮的引词.我们直接去住院处看看吧!

早上800准点到达现场。大厅挤满了人,和大家念书的时候去学校财务处交钱是差不多的。大家都生怕自己手上的钱交不掉似的。这次单枪匹马杀过来的。打心里还是有一点不塌实的感觉。还没有按上门铃人家已经热情的开门叫我进去拉。还没打完招呼做完自我介绍,他们领导说话了:“快,小伙子830就开始录入拉,我们还有两员工是第一次使用系统,赶快带他们过一次”。当场晕忽忽的怎么还有这回事啊。没办法啊,我们出来混,上面明确要求不能对用户说“不”。

830到了,全部窗口打开,那可是钞票进,发票出的场面。站在里面的我看着心里挺爽的。时间过了大概一个小时,系统开始有异常的情况出现了。最先暴露的就是大家熟悉的查询。我横着一看四台机器全部显示请等待。紧接着就是标准的北京腔调的疑问,“小伙子,你得给我看看,这是怎么拉。半天没动静,你叫我怎么办啊?”稳住他们,立马电话连通信息中心,“喂请帮我查一下,为什么系统现在特别慢,住院处已经没法继续拉”。还没有收到电话里面的回复。信息中心已经有人赶到现场,通知用户赶快把系统切换到103(另一台web服务器)。结果出人意料,切换到103的用户登陆后,页面错误频频。用户操作一半失败了。眼睛帖着屏幕仔细一看内存不严重不足。NND一直惊风火扯的Error Page 这回算是看过瘾了。四台电脑同时Show给我看,

住院处的领导们还是见过大场面的。临场指挥,果断坚决。帖一纸条“手工办理”上窗户。指挥着,“大家体谅一下,现在系统正在升级,难免出现问题。紧急的用户可以先到这边来,我们帮你们做手工录入,呆会系统好了,录进去把条子给你们送过去。”

我也没有傻呆着,组织起两台客户机器,再试一试101(住院处主服务器)。TNND这回就更加不可接受了。服务器直接down掉。我看到的是IBM字样的提示信息了。“IBM”啊,我们把你们的硬件软件一起放在那间神圣的机房里面。门口得刷卡进去。其他得连灰尘也没让它靠近你。就差点上几根香,搁一大盘子放点苹果橘子把你供起来拉!就这样回报我们啊???

NND不会吧?才一个小时就玩完拉?这时候信息中心果断的重起了一次服务器,虽然没有通知我们。但是我还是很感谢他们及时的处理。NND再进页面状态入初,那种感觉就像是早上起床推开那玻璃窗户。多爽啊!后来,103也重启好拉,这回通知拉,主要给住院处用。我又指挥着,大家都确认进103吧。这次切换还算满意,一直到病人录入完毕都没有发生问题(四台一起工作)。在住院处守侯了一天,看着他们不时拿出全部发票,钞票,数着算着,最后打开报表核对,呵呵!他们也怕钱不够。还好,平均每个人核对过3次。精确到小数点后面两位数。都能对上。

中午回研发室吃盒饭。正好碰上老大在给蔡总汇报情况。挺实在的,包括问题,出现原因,现在的解决办法。从系统设置,到硬件,那可是都说到点子上拉。“就好比公司说要让他们动起来每人发5000先用着吧。” 话语中我能感觉到明天早上的压力会比今天小。不管能小多少,能不断进步就好。听得入神拉,难吃的盒饭,快吃完才感觉出来难吃死老。这回还真对得起这10块钱。

看到这里,我想大家,还会为我明天早上的遭遇,捏一把汗。总结一下:“问题会延续... 时间不确定;压力依然在,时间不确定;”可能这个时间越短,我们能学到的越多。

2005年10月31日  听涛 601室 窗台

posted @ 2005-10-31 23:35 Goingmm 阅读(590) | 评论 (24)编辑 收藏


    闭上眼睛,回首
23年来的经历。真的能看见眼前快速闪过的画面。使劲的想扎进去看清楚一点。那里有童趣,幼稚,天真,有梦想,还有坚持。是会意的傻笑把我拉回了现实。奇怪没有找到1029这个时间戳。书上说:“人是聪明的动物。他们只会把对自己有意义的东西,深深的勾画在脑海中。”

的确,眼前的经历注定了1029是这一辈子再也难忘的日子。快两年的心血终于开始有了收获。我现在我还不敢贸然提说“胜利”这两个字。开发团队的稳重,成熟和冷静告诉我“考验才刚刚开始”。

在这里留下这些杂乱的文字,遥寄在远方默默支持我们的成都团队全体同事。让我们一起来分享这美妙时刻。我大致能体会你们此时难以描述的心情。担心担心系统承受的压力,担心前方的开发人员面临的难题。自豪自豪一天内系统几乎没有大的问题,自豪自己就是开发团队的一员。喔!说什么哦!都说难以描述拉真想把你们每一个人都写的活灵活现,可怜我没那样的文笔,还是到现场去看看吧!

 

镜头一

2005-10-29日凌晨1 按照项目组的安排这个时候我们应该进入梦境。为上线做好最后的准备。可能是由于第一次有这样的经历,内心有些亢奋,也可能是平时没有这么早睡的习惯。差不多2点才睡着。早上530起床去医院研发室。等待数据移植。

 

镜头二

       由于数据移植推迟了一点时间。早上730左右完成数据移植,同时启动了应用服务器

这时候,DBA+Shuaiyu)全然忘记自己是通宵到现在,还在不知疲惫的检查验证数据,做数据库优化。这时候问题出现了。由于昨天晚上5.4(老系统)的收银机没有完全关闭。Patch进去的补丁会产生问题。这边报表服务器也进不去了,还有谁改了我们熟悉的iHIS的密码。管理员登陆不了拉。那边电话里面传过来的消息说:“用户已经迫不及待的登陆进了系统”说到这里场面已经有一点混乱了。

老板此时的脸上看不出笑容,找不到慌乱,可能是他的坚持还强撑着极限中的自信和宽容。这是一个需要英雄的时刻,但说实话,我什么忙也帮不上。经过大家的努力,密码问题轻松搞定,收银机的Patch也有惊无险。报表组拼尽全力,依然毫无头绪。平时做100次也没有问题,偏偏今天

我们在住院处接到通知,应用服务器需要重新启动。感觉怪怪的,后来才知道。正是这次重启解决了报表问题(报表在服务器启动的时候会到一个MSTR表去load数据,但是今天先启动了服务器,然后才把这些数据PatchMSTR表中,造成了几个小时的“报表问题”)

 

镜头三

       应用程序问题解决了,住院用户吹着病人等不急拉,我们得赶快下住院部去。时间:1007分,Baijie(北京测试老大)带领我们赶到住院处,协助他们开始做病人的住院登记以及住院费用处理。

去之前听说这个部门压力很大,四个窗口平时都忙不过来。心里还憷着呢!还好,到现场一打听,今天是周末没有那么多人。平时挤满人的大厅几乎是空荡荡的,外面看感觉和去银行取钱的场景很相似。进去以后发现有一个很逗的老头,不间断的和我们开着玩笑。怀揣着北方人的幽默。可能是他的热情和老练,让我感觉北京话听着还蛮淳朴的。

大概在1130的时候出了点小状况。俩女患者(都还挺漂亮的)过来办理出院。系统打印出的单据上显示:住院6天,但是床位费用收了7天。我们的第一反映就是希望患者能留下电话或者其他联系方式。做好最后的确认再通知她们过来。就是这样一个折中的意见惹火了其中一个。大咧着嗓子说:我们住的是400一天的病房。系统打印不是6天吗?凭什么收7天的钱?承不承认是你们系统错了?

无意间,我看到Baijie无奈的抿了一下嘴,但还是自信的说:“我们马上检查”系统没有这个问题。面对这么裸感的质问,我真的感觉心酸这一次算是给我留下了深深的烙印。以后每写一行代码的时候可能都会想起

10分钟后,问题终于有了答案。是昨天的数据移植把收费日期给弄错了(27日)应该是28日。所以每一个用户都多算了一天的床位费用。这个改动很快就被patch到数据库

在这里的几个小时,我总结了一下

1)    用户需要快速准确的业务过程(还真碰上了非常急迫的用户,为了赶飞机该补50掏出100等不急找钱退卡就要走)

2)    我们的需求,和第一线用户的想法还有差距,他们的想法更加实用。对系统现在新功能的认可和中肯意见都让人佩服

3)    这里的一线用户都表现了良好的素质和风度。包含着对我们现状的宽容和理解

 

镜头四

       时间已经是下午200多了,回到信息中心,一些同事在啃面包,吃盒饭,打电话,改程序,页面测试,数据效验这时候的我只想找根烟去厕所享受一下。路过研发室,隐约听见里面讨论和不时的笑声。项目组的老大们和用户在里面进行上线后的第一次沟通汇报会议。

 

镜头五

       这个镜头可能有些偏离物理视线。我们今天大概在2000离开医院。到这个时候仍然看不到一点笑容,听不到到一点笑声,偷偷的几乎都没有。不得不承认这真是一只成熟的团队。这里没有浮躁,没有侥幸,没有自负因为每一个人都清楚的知道,真正的考验应该是下周一。这个时候才是对系统承受压力的真正考验。在这之前,DBA和负责应用服务器的同事得充分估计,做好最后的优化工作。

镜头六

          哎!写不完,还有很多….比如:Leo和欢哥的故事,经典得很。

我不敢想象,一天之内能有这么丰富的经历。时间对于每一个人真的是公平的。

 

真心的希望我们能一路走好!

posted @ 2005-10-29 23:16 Goingmm 阅读(368) | 评论 (14)编辑 收藏

      
       微软最近每天都在走人,他们到底有多少人?走完了怎么办?呵呵!这些不是我们能关心的问题。
       到底是利益冲突,还是微软的企业文化真的混不下去了?
       其实每次看到这样的消息都会有些感伤。熟不知,“天下无不散之筵席”,离开可能是逃避...可能是更好的开始...
也可能是一种解脱... 但是我觉得求变的心是勇敢的。因为全世界的人都还在关注着他们
       
       新浪科技讯:美国当地时间10月25日(北京时间10月26日)消息,据国外媒体报道,微软发言人卢-盖洛斯(Lou Gellos)对外表示,MSN门户总经理哈蒂-帕托维(Hadi Partovi)已向公司提出辞呈,并计划离职后自己创业
       盖洛斯表示,在微软找到继任者之前,帕托维今后数周内仍将替微软工作。此前微软出台了部门重组计划,其中包括将MSN业务并入Windows部门。在微软与Netscape进行的浏览器大战过程中,帕托维曾扮演了重要角色。此后他于1999年离开微软并创办Tellme通信公司。2002年帕托维重返微软,并参与创办MSN Music等新兴业务。
       最近数周内,已有数名高管离开了微软。如wikis发明人Ward Cunningham已离开微软,加盟一家非盈利性开放源代码软件公司。在微软宣布重组计划后,Windows产品负责人Jim Allchin也宣布了自己的退休计划。此前有传闻称,微软Office开发者之一Don Gagne计划于今年12月离职。对此微软和Don Gagne尚未发表评论。(明月) 
                                                                                                                  
摘录地址:http://tech.sina.com.cn/i/2005-10-26/0715748233.shtml
posted @ 2005-10-26 23:05 Goingmm 阅读(240) | 评论 (5)编辑 收藏

今天已经星期二了吗?几乎都忘记了...

我们作为现场支持的项目就快要上线了。说不紧张是假的。至少,每一个人都不希望自己手上的模块down在客户的
业务流程中。这么大的项目,控制起来的确需要一些功力。能亲身经历也能从中收获蛮多。想写出来,但是这会儿整个人
感觉很累。而且我觉得写在这个时候有些不合适宜。希望这段时间过了,我还会有兴趣来写下曾经的这份经历。

       对了。刚才和一个新加坡同事聊天,发现一个奇怪的问题。新加坡应该是用的北京时间。但是QQ的时候我们彼此的
时间显示都不正确。这是为什么呢?

 

Xxx: 12:32:21

电视天天都在采访新的CEO。。。。

todo.goingmm 21:31:09

SCS 新的CEO

Xxx: 12:33:31

嗯。。。陈东海

todo.goingmm 21:31:42

新加坡人

Xxx: 12:33:50

问他咱个扭亏为盈。

todo.goingmm 21:31:52

能听出他有什么策略吗?

Xxx: 12:33:59

应该是

Xxx: 12:34:20

他都说些套话。。。

todo.goingmm 21:32:35

他提到  xXXX 没有呢

Xxx:  12:34:58

他问成都的人工那么便宜,为啥子这些项目拖这么久了都不叫成都做。。。

Xxx:  12:35:10

你看现在疯狂的从成都调人过来。。。。

todo.goingmm 22:00:24

不过你机器的时间有问题

Xxx: 13:02:47

没的问题哦

todo.goingmm 22:00:54

 12:35:10

todo.goingmm 22:00:56

你看嘛

Xxx: 13:03:37

我这里是2203

Xxx: 13:04:21

我看你的才7点过呢

todo.goingmm 22:02:23

QQ的时间处理有问题

posted @ 2005-10-25 22:29 Goingmm 阅读(189) | 评论 (1)编辑 收藏

都说 夜里的“听涛”丰富多彩,天上人间,凡人俗事,颠覆睡眠….每天晚上等到凌晨2点,早上睡到天完全变蓝。不知道是因为疲倦睡得太死,还是外面真的鸦雀无声。感觉这边比成都好睡。我才知道我被骗了

今天已经是第四天了。准确的说起床时间已经是23号下午。坐在窗台前一边吃早餐一边找寻无线网络。对面那排空房(几天了都没见亮过灯),刺眼的阳光。楼下偶尔能见送水的小工潜意识中想冲出去,要逃离

在这里的生活其实和坐牢一样,星期一到星期六出去干活,周末留一天在家里睡觉。能在网络上遇上两个朋友,寒暄两句。有人探视的感觉,美妙

呵呵!~ 太灰暗了点。 推开玻璃窗,呼吸点新鲜空气,这种感觉全无了。准备出去找个地方把中午饭解决了。

posted @ 2005-10-23 13:27 Goingmm 阅读(252) | 评论 (3)编辑 收藏


    学习Hibernate之前,需要理解 对象持续性和对象-关系映射 的核心问题

  【概念】
        1)Hibernate是一个面向java环境的对象/关系数据库映射(ORM)工具。
        2)ORM 表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型中去。

  【目标】 
       对于开发者通常的数据持久化的编程任务。解放其中的95%,成为Java管理持续性数据问题的一种完整的解决方案
 
  【体现】
      他协调应用与关系数据库的交互,让开发者解放出来专注于手中的业务问题。他是一种非强迫性的解决方案

  【运行Hibernate需要的第三方库】
       dom4j (必需):   Hibernate在解析XML配置和XML映射元文件时需要使用dom4j。
       CGLIB (必需):  Hibernate在运行时使用这个代码生成库强化类(与Java反射机制联合使用)。 
       Commons Collections and Commons Logging (必需): Hibernat使用Apache Jakarta Commons项目提供的多个工具类库
       ODMG4 (必需) : Hibernate提供了一个可选的ODMG兼容持久化管理界面。如果你需要映射集合,你就需要这个类库,
                                     就算你不是为了使用ODMG API (注意:为什么在Hibernate 3.0 就没有这个jar了?)
       Log4j (可选):Log4j 是一款优秀的Debug工具,具体使用方式网络上有很多介绍

posted @ 2005-10-22 22:11 Goingmm 阅读(249) | 评论 (1)编辑 收藏

仅列出标题
共6页: 上一页 1 2 3 4 5 6 下一页