随笔分类 -  Hibernate

摘要:我的一个web系统是采用WIN + ORACLE9 + WEBLOGIC815 采用的JAVA技术框架为SPRING1.2 + HIBERNATE3.0 + SERVLET.我在WIN部署没有出现任何问题.我JSP叶面采用GBK编码,SEEVLET里面request.setCharacterEncoding("ISO8859_1"),其他要处理中文的地方用了一个专用的转码类!因此WIN下的编码问题可以说得到了完美的解决.但是,我将我的这么系统完全迁移到LINUX的时候数据显示没有出现乱码,然而提交的数据全部变成了????.我的数据库编码为ZHS16GBK,所以不存在编码的问 阅读全文
posted @ 2007-08-12 12:32 fhway 阅读(204) 评论(0) 推荐(0)
摘要:Hibernate对多个表进行查询时,查询结果是多个表的笛卡尔积,或者称为“交叉”连接。例如:from Student, Bookfrom Student as stu, Book as boofrom Student stu, Book boo注意:让查询中的Student和Book均是表student和book对应的类名,它的名字一定要和类的名字相同,包括字母的大小写。别名应该服从首字母小写的规则是一个好习惯,这和Java对局部变量的命名规范是一致的。建议通过MyEclipse进行生成这样就不会出太多的错注意表名要与类名同名下面列举一个完整的例子来说明Hibernate对多个表进行关联查询 阅读全文
posted @ 2007-03-29 14:54 fhway 阅读(655) 评论(0) 推荐(0)
摘要:(以下来自 robbin 的http://www.javaeye.com/topic/2712)先来点概念:在Hibernate中,最核心的概念就是对PO的状态管理。一个PO有三种状态:1、未被持久化的VO 此时就是一个内存对象VO,由JVM管理生命周期2、已被持久化的PO,并且在Session生命周期内此时映射数据库数据,由数据库管理生命周期3、曾被持久化过,但现在和Session已经detached了,以VO的身份在运行 这种和Session已经detached的PO还能够进入另一个Session,继续进行PO状态管理,此时它就成为PO的第二种状态了。这种PO实际上是跨了Session进行 阅读全文
posted @ 2006-12-11 17:17 fhway 阅读(1288) 评论(0) 推荐(0)
摘要:老实说, 要做到在JDBC查询之前决定哪些数据需要从JDBC来还是CACHE来不是件容易事. 但是HIBERNATE还是很好地完成了这个任务. QueryCache用来缓存查询语句, 及查询结果集中对象的Identifier与Type. 当再次使用已缓存的Query时, 就可以通过对象的Identifier与Type在SECOND LEVEL CACHE中查找实际的对象.使用QueryCache时需要在hibernate配置文件中设置如下属性: 代码<property name="cache.provider_class"> org.hibernate.cach 阅读全文
posted @ 2006-12-11 17:11 fhway 阅读(223) 评论(0) 推荐(0)
摘要:hibernate的配置文件<session-factory><!--Databaseconnectionsettings--><propertyname="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property><propertyname="hibernate.proxool.pool_alias">Proxool-DBPool</property& 阅读全文
posted @ 2006-11-03 17:33 fhway 阅读(905) 评论(0) 推荐(0)
摘要:怎样使用hibernate上传和更新图片在我的另一篇文章有所介绍,请参看http://blog.csdn.net/fhway/archive/2006/11/01/1359482.aspx在这里讲的是如何查询得到结果的问题1.在jsp页面里输出,通常的做法是建立一个servlet的方式,我要讲的也是这个方法;代码如下;/***//****/packagecom.sclh.hibernate.servlet;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.sql.B 阅读全文
posted @ 2006-11-03 09:48 fhway 阅读(727) 评论(0) 推荐(0)
摘要:1. 对于java的一个开源框架的不熟悉和技术支持跟不上有可能导致项目的失败.我虽然学习好久的hibernate,但是一直实在demo的阶段,这次搞的一个西藏的犯罪人员信息系统终于可以排上用场了,因为是一个人搞定这个项目,所以在框架选择上的随意性很大.但是我毅然选择了hibernate.到现在终于觉得自己的选择没有错;2.hibernate的联接池真的不敢恭维.co3也不怎么样.session不能自动关闭出了很多麻烦;3.据说Weblogic与hibernate的JNDI工作不是很好,我看了很多文章,说有解决的办法.我没有试,有时间的话,我一定试做一下;4.驱动的问题;开始以为用10i的驱动一 阅读全文
posted @ 2006-11-01 00:48 fhway 阅读(134) 评论(0) 推荐(0)
摘要:看了N多的文档,都是一样的,不理解,完全是网络转载,一点不负责任.所以我把我的完整代码贴如下: sql: ============================================create table T_ZP( ID NUMBER not null, RYBH VARCHAR2(21), ZPXH NUMBER, PIC BLOB, OPTIME DATE not null, DELFLAG CHAR(1) not null)============================================bea和hbm.xml就不用写了吧!先看DAO方法: pack 阅读全文
posted @ 2006-11-01 00:31 fhway 阅读(600) 评论(1) 推荐(0)
摘要:一.单向关系建表脚本:CREATE TABLE user ( id INT(11) NOT NULL auto_increment PRIMARY KEY, name VARCHAR(100) NOT NULL default '', room_id INT(11));CREATE TABLE room ( id INT(11) NOT NULL auto_increment PRIMARY KEY, address VARCHAR(100) NOT NULL default '');1.1多对一User.javapublic class User { priv 阅读全文
posted @ 2006-09-30 15:30 fhway 阅读(259) 评论(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 阅读(223) 评论(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 阅读(145) 评论(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 阅读(127) 评论(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)