Hibernate
文章平均质量分 64
zengbo0710
这个作者很懒,什么都没留下…
展开
-
解决HIbernate分页问题获取表总行数的小Bug
今天上午回来设计了一点新闻发布系统周边的功能,并实现了对新闻进行重新索引的功能。但同时在列出相关新闻的时候遇到了麻烦。就是原本运行好好的分页查询代码,居然有个小虫子跑出来,很是令人不爽。说来也惭愧,Hibernate也用了那么长时间了。可对底层API却很不属性。查了下网络,把自己的一知半解说出来。bug起源。看看代码:return (PageSupport) getHibernateTem转载 2008-08-22 09:38:00 · 1297 阅读 · 0 评论 -
映射对象标识符
Hibernate采用对象标识符,也就是通常我们所说的OID来创建对象和数据库表里记录的对应关系,对象的OID和表里的主键对应,所以说OID是非常重要的,不应该让程序来给它赋值.数据库区分同一表的不同记录是用主键来区分.数据库中的主键最重要的3个基本要素就是不允许为null,不允许有重复值,主键永远不会改变.所以通常我们设计表都会设计主键的值为自动增加,没有业务逻辑含义的一组数字,当然针对每个数转载 2007-05-29 15:15:00 · 673 阅读 · 0 评论 -
Hibernate基础知识
Hibernate基础知识,谈到这里,首先最重要的是应该理解ORM,ORM是什么呢?3个单词的缩写,Object-Relation Mapping,既对象-关系映射的意思.这是一种模式,这种模式在单个组件中负责说有实例业务对象的持久化,封装了数据库访问的细节,这就是Hibernate的核心原理.ORC解决主要的问题就是对象-关系映射.因为项目的业务逻辑模型是面向对象的,而关系型数据模型是面向关系转载 2007-05-29 15:12:00 · 604 阅读 · 0 评论 -
理解Session缓存机制 操纵持久化对象
Hibernate向我们提供的主要的操纵数据库的接口,Session就是其中的一个,它提供了基本的增,删,改,查方法.而且具有一个缓存机制,能够按照某个时间点,按照缓存中的持久化对象属性的变化来更新数据库,着就是Session的缓存清理过程.在Hibernate中对象分为三个状态,临时,持久化,游离.如果我们希望JAVA里的一个对象一直存在,就必须有一个变量一直引用着这个对象.当这个变量没了.对象转载 2007-05-29 15:17:00 · 767 阅读 · 0 评论 -
Hibernate ORM 对象-关系 映射
Hibernate的持久化类使用的是JavaBean的风格,为要被访问的属性提供了一套get和set方法,这两个方法也叫做持久化类的访问方法.记得曾经在接触JavaBean的时候我很迷糊,总觉得提供这两个方法,倒不如把Bean的属性设置public,然后直接调用对象.属性,这样来的方便.但是后来,有一个这样的需求,就是一个人名字可以被查看,但是不可以修改.这个时候如果用set方法的话,只需要转载 2007-05-29 15:14:00 · 559 阅读 · 0 评论 -
Hibernate Tool: hbm2java or hbm2ddl
Hibernate为了简化开发,给我们提供了四种工具,hbm2java,hbm2ddl,XDoclet,Middlegen.其中我觉得hbm2java(根据映射文件生成JAVA源文件),hbm2ddl(根据映射文件生成数据库文件,这两个工具非常实用.还有XDoclet(根据带有XDoclet标记的JAVA源文件生成映射文件).Middlegen(根据数据库文件生成映射文件的工具也不错.不过我没怎么转载 2007-05-29 15:13:00 · 818 阅读 · 1 评论 -
"冬天"快乐,带你进入Hibernate
冬眠温暖,"冬天"快乐,一夜的冬雨在静静中把冬衣轻轻换上,Hibernate,就东面一样,在程序"冬天"里给我们带来一丝温暖,Hibernate的名字真的很优美,当我曾经第一天知道有一种技术叫"冬眠".我就深深的喜欢上了这种技术.所以产生了一种想法,把这种技术以最简单明了的方式记录自己的Blog上,一方面能帮助一些刚刚学习它的朋友,另一方面也能让自己对Hibernate的理解更加深刻.希望大家转载 2007-05-29 15:07:00 · 726 阅读 · 0 评论 -
什么是白盒测试?
白盒测试,也称为结构化测试、基于代码的测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。用白盒测试产生的测试用例能够: 1)保证一个模块中的所有独立路径至少被使用一次; 2)对所有逻辑值均需测试true和false; 3)在上下边界及可操作范围内运行所有循环; 4)检查内部数据结构以确保其有效性。 “我们应该更注重于保证程序需求的实现,为什么要花费时间和精力来担心(转载 2007-05-21 21:51:00 · 2934 阅读 · 0 评论 -
应用Hibernate3的DetachedCriteria实现分页查询
Hibernate3提供了DetachedCriteria,使得我们可以在Web层构造detachedCriteria,然后调用业务层Bean,进行动态条件查询,根据这一功能,我设计了通用的抽象Bean基类和分页类支持,代码来自于Quake Wang的javaeye-core包的相应类,然后又做了很多修改。分页支持类: java 代码 package com.转载 2007-05-14 10:54:00 · 770 阅读 · 0 评论 -
分析Hibernate映射的关联关系
Hibernate的映射关联关系和我们现实世界里事物的关联关系一样.比如在UML语言中,以客户Customer和订单Order的关系为例.一个客户可以发送多个订单,而一个订单只能属于一个客户,这是一对多的关联,因此可以成为单向关联.如果同时包含了两两种关联关系,就成为双向关联.在关系数据库中只有外键参照主键的关系.所以关系数据库实际上至支持一对一,或一对多的单向关系.在类于类之间的关系中.要算多转载 2007-05-29 15:15:00 · 801 阅读 · 0 评论 -
Hibernate缓存讨论与研究
摘要:很长时间以来,笔者就想写写关于Hibernate缓存的一些文字,今天有这个不可多得的机会让我谈谈对它的一些想法。Hibernate缓存机制对Hibernate的性能发挥一直处于一个极其重要的作用,它是持久层性能提升的关键。对很多学习或使用Hibernate的朋友一来,还不一定真正的了解或使用她。现在大家就随我一起看看揭开她神秘面纱那张未知的“脸”。 1:Hibernate缓存概述 首转载 2008-04-11 09:56:00 · 685 阅读 · 0 评论 -
Hibernate+ehcache二级缓存配置
1、首先设置EhCache,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下: <?xml version="1.0" encoding="UTF-8"?> <ehcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" <!--转载 2008-04-11 10:07:00 · 606 阅读 · 0 评论 -
hibernate
具有一个直观的、可扩展的条件查询API是Hibernate的特色。 # # 15.1. 创建一个Criteria 实例 # org.hibernate.Criteria接口表示特定持久类的一个查询。Session是 Criteria实例的工厂。 # # Criteria crit = sess.createCriteria(C转载 2008-08-22 09:17:00 · 662 阅读 · 0 评论 -
hibernate二级缓存攻略
很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下hibernate的二级缓存的,今天终于忍不住了。 我的经验主要来自hibernate2.1版本,基本原理和3.0、3.1是一样的,请原谅我的顽固不化。 hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效转载 2008-04-11 10:06:00 · 608 阅读 · 0 评论 -
SQL Server三种导入导出数据方式比较
当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验、净化和转换时,将会面临很大的挑战。幸好SQL Server为我们提供了强大、丰富的数据导入导出功能,并且在导入导出的同时可以对数据进行灵活的处理。 在SQL Server中主要有三种方式导入导出数据:使用Transact-SQL对数据进行处理;调用命令行工具bcp处理数据;使用数据转载 2008-04-11 16:10:00 · 1205 阅读 · 0 评论 -
学习一下ibatis
ibatis的网站www.ibatis.com上面可以找到很好的文档,再加上有非常不错的例子,所以使用是相当的简单。sourceforge上面的讨论http://swik.net/DAOhttp://www.learntechnology.net/struts-ibatis.dohttp://www.nabble.com/iBATIS-f360.htmlhttp://www.cjsdn.net/p转载 2008-04-11 10:26:00 · 1625 阅读 · 1 评论 -
Hibernate+ehcache二级缓存技术
1、首先设置EhCache,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下: <?xml version="1.0" encoding="UTF-8"?><ehcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxEl转载 2008-04-11 10:24:00 · 626 阅读 · 0 评论 -
浅谈hibernate性能优化的几点建议
1、针对oracle数据库而言,Fetch Size 是设定JDBC的Statement读取数据的时候每次从数据库中取出的记录条数,一般设置为30、50、100。Oracle数据库的JDBC驱动默认的Fetch Size=15,设置Fetch Size设置为:30、50,性能会有明显提升,如果继续增大,超出100,性能提升不明显,反而会消耗内存。 即在hibernate配制文件中进行配制:转载 2008-04-11 10:17:00 · 561 阅读 · 0 评论 -
关于Hibernate3的escape解决方法
不知道大家有没有碰到,还是没有这种需求。就是用like来查询,我们没有用Lucene,Compass这种全文索引的方案,我们只是简单的添加%进行like查询。用户搜索的时候就使用*和?来代表任意和一个。所以要对"%"和"_"进行转义,我们使用的是oracle数据库。sql语句看起来可能是这样的。SELECT * FROM t_user where nickname like %Goo/_D转载 2008-04-11 10:14:00 · 776 阅读 · 1 评论 -
Hibernate Gossip: 二級快取(Second-level)
Hibernate的 Session level 快取 隨著Session生命週期起始與消滅。以 第一個 Hibernate 中的範例來說,在未使用二級快取的情況下,如果使用以下的程式片段來查詢資料: Session session = sessionFactory.openSession();User user转载 2008-04-11 10:09:00 · 766 阅读 · 0 评论 -
[转]Hibernate 3 Annotations 进阶
摘要:这些年来,Hibernate几乎已经成为java世界中数据库持久化方面事实上的标准,它强大灵活并且性能优秀.在这篇文章中,我们来看一下Java 5的注解功能怎么简单地用在你的hibernate代码中让你的持久化层变得更容易. 工具箱本站收藏美味书签投票评分发表评论复制链接这些年来,Hibernate几乎已经成为java世界中数据库持久化方面事实上的标准,它强大转载 2007-05-07 10:50:00 · 569 阅读 · 0 评论 -
struts+hibernate项目debug总结
javax.servlet.ServletException: Cannot retrieve mapping for action /companyNewsstruts-config.xml中没有写相关companyNews的action.============================================在myeclipse增加一个jar包时候,先打开项目prope转载 2007-04-22 00:01:00 · 1230 阅读 · 0 评论 -
彻底明白Hibernate中的Inverse
以前写HBM,用一对多或多对多的时候默认总是加上“inverse=true”。当时想法很简单就是由双方来维护之间的关联关系。今天才终于明白inverse的真正含义了!其实inverse不复杂,但是要真正明白还是要稍微看一下源码。inverse的真正作用就是指定由哪一方来维护之间的关联关系。当一方中指定了“inverse=false”(默认),那么那一方就有责任负责之间的关联关系,说白了就是hi转载 2007-04-16 00:08:00 · 706 阅读 · 0 评论 -
java+mysql中保存图片及显示上传的图片struts+hibernate
早上用Java做了一下在Mysql中上传及显示图片的测试,struts+hibernatejsp页面姓名电话actionForm代码public class DepartmentForm extends ActionForm {/* * Generated fields *//** tel property */private String tel;/** name property */priv转载 2007-03-30 21:48:00 · 1059 阅读 · 0 评论 -
终于搞定关于Hibernte的Blob更新操作
看了N多的文档,都是一样的,不理解,完全是网络转载,一点不负责任.所以我把我的完整代码贴如下: sql: ============================================create table T_ZP( ID NUMBER not null, RYBH VARCHAR2(21), ZPXH NUMBER, PIC BLOB,转载 2007-03-30 21:00:00 · 805 阅读 · 0 评论 -
Using Clobs/Blobs with Oracle and Hibernate
Hibernate 1.2.1 comes with support for Clobs (and Blobs). Just use the clob type in your mapping file and java.sql.Clob in your persistent class.However, due to problems with the Oracle JDBC driver,转载 2007-03-30 20:53:00 · 917 阅读 · 0 评论 -
使用Spring+Hibernate实现Oracle数据库BlOB数据类型的读写
1。Spring配置 xml version="1.0" encoding="ISO-8859-1"?>DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">beans> description>Dragon Frameworkdescript转载 2007-03-30 22:05:00 · 844 阅读 · 0 评论 -
Java对象持久化技术之Hibernate
Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java应用中使用Hibernate包含以下步骤。 (1)创建Hibernate的配置文件。 (2)创建持久化类。 (3)创建对象-关系映射文件。 (4)通过Hibernate转载 2007-03-30 21:54:00 · 525 阅读 · 0 评论 -
使用JDBC和Hibernate来写入Blob型数据到Oracle中
Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据。 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢? 这需要你先插入一个empty的blob,这将创建一个blob的c转载 2007-03-30 21:51:00 · 438 阅读 · 0 评论 -
用Hibernate操作Oracle Blob
1.在HBM里对应CLOB型的字段为:java.sql.Clob,用MyEclipse DataExplorer生成后手动改一下即可,当然POJO也一样啊,如:HBM:hibernate-mapping> class name="com.chinacars.filterdata.beans.TblWapNews2" table="TBL_WAP_NEWS2"> id name="转载 2007-03-30 20:44:00 · 1096 阅读 · 0 评论 -
Hibernate分页
Hibernate分页Hibernate中,通过对不同数据库的统一接口设计,实现了透明化、通用化的分页实现机制。通过Criteria.setFirstResult和Criteria.setFetchSize方法设定分页范围,如:Criteria criteria = session.createCriteria(TUser.class);criteria.add(Expression.转载 2007-03-18 12:31:00 · 1033 阅读 · 0 评论 -
由对BLOB数据的操作所引发的一系列思考
最近经常遇到要对blob或clob类型数据进行处理的,有通过jdbc方式的,也有hibernate方式的,这期间遇到了许多问题也解决了许多问题,由此萌发出就此写点东西的想法。 因为之前没有处理过blob类型数据,只知道是存储文件,图片等二进制数据的。首先遇到的问题就是插入blob数据,在网上查了一些资料,主要有几步操作,首先是插入空的blob数据,然后查找该条记录,得到指向该条记录的指针转载 2007-03-30 22:04:00 · 551 阅读 · 0 评论 -
HQL 语言基本用法
最近正在看Hibernate,,通过学习感觉HQL较为常用..有时间还会谈一谈缓存问题.大家一起交流一下...多提建议...所以从书上总结了一下HQL的用法....能力有限.只能搞到这种程度..呵呵..1.实体查询String hql = " from TUser";执行这条语句会返回TUser以及TUser子类的纪录。hql = "from java.lang.Object"会返回数据库中所有库原创 2007-04-03 19:57:00 · 756 阅读 · 0 评论 -
如何结合hibernate进行复杂的查询功能设计
Hibernate是典型的OPM工具,它将每一个物理表格(Table)映射成为对象(Object),这发挥了面向对象的优势,使设计和开发人员可以从面向对象的角度来进行对数据库的管理。 在设计到多表操作时,Hibernate提供了与数据库表关系相对应的对象映射关系,一对一、一对多和多对多在这里都可以通过Hibernate的对象映射关系(Set等)来实现。这为一般情况下的数据库多表操作提供了便转载 2007-04-05 21:10:00 · 884 阅读 · 0 评论 -
执行几次查询之后就不能查询了,页面不动了
每执行依次查询,控制台就有这样的警告java代码如下: 代码 public class Employee_sortDAOImpl extends HibernateDaoSupport implements Employee_sortDAO { public int getEmployee_sortCount() th转载 2007-04-15 00:20:00 · 1190 阅读 · 0 评论 -
利用ant,hibernate的schemaexport自动生成数据库
先用eclipse新建一个项目student作为示范新建Student类如下:package student;public class Student { private Long id; private String name; private String sex; private String email; public String getEmail() { return email;转载 2007-04-08 13:35:00 · 918 阅读 · 0 评论 -
MiddlegenIDE的使用
最近有朋友发信,说MiddlegenIDE的主页出了点状况,登陆上去显示的内容莫名其妙,给新手使用MiddlegenIDE带来了困难。本座去看了一下,果然是莫名其妙得厉害。下面总结一个MiddlegenIDE的使用教程吧。 MiddleGen for Hibernate加上Hibernate_Extension工具包,其实就是用来方便我们从先有的数据库导出表结构,生成对应的hbm、cfg文件与PO转载 2007-04-06 12:12:00 · 1105 阅读 · 0 评论 -
用PowerDesigner生成Hibernate映射文件的步骤
执行:New->Conceptual Data Model编译完概念模型后执行:Tools->Generate Physical Data Model再选择生成的物理数据模型执行:Tools->Generate Object-Oriented Model在对话框中,选择Dtail,勾选O/R Mapping,点击Enable Transformations,在多出来的选项卡Extended Mod转载 2007-04-08 13:36:00 · 848 阅读 · 0 评论 -
关于Xdoclet生成hibernate映射文件
http://www.blogjava.net/langsheng/archive/2007/04/08/109203.html这次写的也是用之前的那个student例子作为试验,,如果有什么不清楚,,可以参考上面的设置,配置说明,,好,开始来生成我们的映射文件吧,,将类文件修改如下 package student;/** * @hibernate.class table="students"转载 2007-04-08 13:33:00 · 642 阅读 · 0 评论 -
hibernate对clob和blob的操作
static Session session = HibernateSessionFactory.getSession(); public boolean inserted(TUser obj) { Transaction tran = session.beginTransaction(); session.save(obj); session.flush();//调用flush强制原创 2007-04-03 00:31:00 · 880 阅读 · 0 评论