![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hibernate
文章平均质量分 64
royjane
本人最大的优势是动手能力和自学能力强。
性格开朗、大方、谦虚、自信,掌握良好的礼仪知识。
头脑灵活、反应敏捷,能够灵活处理工作中的突发事件。
对工作责任心强、勤恳踏实,有较强的组织、注重团队合作精神和集体观念。
展开
-
Hibernate 开发指南
准备工作1. 下载Ant软件包,解压缩(如C:/ant/)。并将其bin目录(如c:/ant/bin)添加到系统PATH中。 2. 下载Hibernate、Hibernate-Extension和Middlegen-Hibernate软件包的最新版本。 http://prdownloads.sourceforge.net/hibernate/ 构建Hibernate基础代码1.原创 2007-04-12 11:01:00 · 977 阅读 · 2 评论 -
一对一 one-to-one
持久化对象之间一对一的关联关系是通过one-to-one元素定义的。 <one-to-one name="propertyName" class="ClassName" cascade="cascade_style" constrained="true|false" fetch="join|select"原创 2007-11-30 14:16:00 · 991 阅读 · 0 评论 -
自然ID(natural-id)
......我们建议使用代用键(键值不具备实际意义)作为主键,我们仍然应该尝试为所有的实体采用自然的键值作为(附加——译者注)标示。自然键(natural key)是单个或组合属性,他们必须唯一且非空。如果它还是不可变的那就更理想了。在元素中列出自然键的属性。Hibernate会帮你生成必须的唯一键值和非空约束,你的映射会更加的明原创 2007-11-30 14:21:00 · 4114 阅读 · 0 评论 -
悲观锁定(Pessimistic Locking)
用户其实并不需要花很多精力去担心锁定策略的问题。通常情况下,只要为JDBC连接指定一下隔 离级别,然后让数据库去搞定一切就够了。然而,高级用户有时候希望进行一个排它的悲观锁定, 或者在一个新的事务启动的时候,重新进行锁定。 Hibernate总是使用数据库的锁定机制,从不在内存中锁定对象! 类LockMode 定义了Hibernate所需的不同的锁定级别。一个锁定 可以通过以下的机制来设置原创 2007-11-30 14:41:00 · 956 阅读 · 0 评论 -
批量插入(Batch inserts)
如果要将很多对象持久化,你必须通过经常的调用 flush() 以及稍后调用 clear() 来控制第一级缓存的大小。Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Cu原创 2007-11-30 14:43:00 · 1115 阅读 · 0 评论 -
结果集排序
你可以使用org.hibernate.criterion.Order来为查询结果排序。 List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") .addOrder( Order.asc("name") ) .addOrder( Order.desc("age"原创 2007-11-30 14:56:00 · 593 阅读 · 0 评论 -
JDBC连接
通常你希望SessionFactory来为你创建和缓存(pool)JDBC连接. 如果你采用这种方式, 只需要如下例所示那样,打开一个Session: Session session = sessions.openSession(); // open a new Session一旦你需要进行数据访问时, 就会从连接池(connection pool)获得一个JDBC连接. 为了使这种方原创 2007-11-30 12:03:00 · 448 阅读 · 0 评论 -
Hibernate配置属性
<table summary=" Hibernate配置属性 " border="1"> 属性名 用途 hibernate.dialect 一个Hibernate Diale原创 2007-11-30 12:04:00 · 644 阅读 · 0 评论 -
Hibernate JDBC和连接(connection)属性
<table summary=" Hibernate JDBC和连接(connection)属性 " border="1"> 属性名 用途 hibernate.jdbc.fetch_size原创 2007-11-30 12:05:00 · 2058 阅读 · 0 评论 -
hibernate----id
被映射的类必须定义对应数据库表主键字段。大多数类有一个JavaBeans风格的属性, 为每一个实例包含唯一的标识。 元素定义了该属性到数据库表主键字段的映射。 <id name="propertyName" type="typename" column="column_name" unsaved-value="null|原创 2007-11-30 13:40:00 · 423 阅读 · 0 评论 -
Generator
可选的子元素是一个Java类的名字, 用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数, 用元素来传递。 uid_table next_hi_value_column 所有的生成器都实现org.hibernate.id.IdentifierGen原创 2007-11-30 13:42:00 · 715 阅读 · 0 评论 -
timestamp
可选的元素指明了表中包含时间戳数据。 这用来作为版本的替代。时间戳本质上是一种对乐观锁定的一种不是特别安全的实现。当然, 有时候应用程序可能在其他方面使用时间戳。 <timestamp column="timestamp_column" name="propertyName" access="field|property|ClassName原创 2007-11-30 14:11:00 · 871 阅读 · 0 评论 -
多次映射同一个类
对特定的持久化类,映射多次是允许的。这种情形下,你必须指定entity name来区别不同映射实体的对象实例。(默认情况下,实体名字和类名是相同的。) Hibernate在操作持久化对象、编写查询条件,或者把关联映射到指定实体时,允许你指定这个entity name(实体名字)。 <class name="Contract" table="Contracts" entity原创 2007-11-30 14:26:00 · 856 阅读 · 0 评论 -
批量更新(Batch updates)
此方法同样适用于检索和更新数据。此外,在进行会返回很多行数据的查询时, 你需要使用 scroll() 方法以便充分利用服务器端游标所带来的好处。 Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction(); ScrollableResults custome原创 2007-11-30 14:43:00 · 1106 阅读 · 0 评论 -
HQL: Hibernate查询语言--大小写敏感性问题
除了Java类与属性的名称外,查询语句对大小写并不敏感。 所以 SeLeCT 与 sELEct 以及 SELECT 是相同的,但是 org.hibernate.eg.FOO 并不等价于 org.hibernate.eg.Foo 并且 foo.barSet 也不等价于 foo.BARSET。原创 2007-11-30 14:45:00 · 5477 阅读 · 0 评论 -
from子句
Hibernate中最简单的查询语句的形式如下: from eg.Cat该子句简单的返回eg.Cat类的所有实例。 通常我们不需要使用类的全限定名, 因为 auto-import(自动引入) 是缺省的情况。 所以我们几乎只使用如下的简单写法: from Cat大多数情况下, 你需要指定一个别名, 原因是你可能需要 在查询语句的其它部分引用到Cat from Cat as cat原创 2007-11-30 14:46:00 · 783 阅读 · 0 评论 -
命名SQL查询
可以在映射文档中定义查询的名字,然后就可以象调用一个命名的HQL查询一样直接调用命名SQL查询.在这种情况下,我们不 需要调用addEntity()方法. SELECT person.NAME AS {person.name}, person.AGE AS {person.age}, person.SEX AS {pers原创 2007-11-30 15:00:00 · 3696 阅读 · 0 评论 -
使用return-property来明确地指定字段/别名
使用你可以明确的告诉Hibernate使用哪些字段别名,这取代了使用{}-语法 来让Hibernate注入它自己的别名. SELECT person.NAME AS myName, person.AGE AS myAge, person.SEX AS mySex,原创 2007-11-30 15:00:00 · 1020 阅读 · 0 评论 -
composite-id
<composite-id name="propertyName" class="ClassName" mapped="true|false" access="field|property|ClassName" node="element-name|." >原创 2007-11-30 14:04:00 · 6127 阅读 · 0 评论 -
class
使用class元素来定义一个持久化类: <class name="ClassName" table="tableName" discriminator-value="discriminator_value" mutable="true|false" schema="owner" ca原创 2007-11-30 13:24:00 · 669 阅读 · 0 评论 -
Hibernate缓存属性
<table summary=" Hibernate缓存属性 " border="1"> 属性名 用途 hibernate.cache.provider_class 自定义的原创 2007-11-30 12:06:00 · 740 阅读 · 0 评论 -
可编程的配置方式
一个org.hibernate.cfg.Configuration实例代表了一个应用程序中Java类型 到SQL数据库映射的完整集合. Configuration被用来构建一个(不可变的 (immutable))SessionFactory. 映射定义则由不同的XML映射定义文件编译而来. 你可以直接实例化Configuration来获取一个实例,并为它指定XML映射定义 文件. 如果映射定原创 2007-11-30 11:59:00 · 572 阅读 · 0 评论 -
Hibernate事务属性
<table summary=" Hibernate事务属性 " border="1"> 属性名 用途 hibernate.transaction.factory_class原创 2007-11-30 12:07:00 · 733 阅读 · 0 评论 -
Hibernate SQL方言 (hibernate.dialect)
<table summary=" Hibernate SQL方言 (hibernate.dialect) " border="1"> RDBMS 方言 DB2 org.hiber原创 2007-11-30 12:08:00 · 509 阅读 · 0 评论 -
Hibernate日志类别
<table summary=" Hibernate日志类别 " border="1"> 类别 功能 org.hibernate.SQL 在所有SQL DML语句被执行时为它们原创 2007-11-30 12:09:00 · 802 阅读 · 0 评论 -
hibernate-mapping
这个元素包括一些可选的属性。schema和catalog属性, 指明了这个映射所连接(refer)的表所在的schema和/或catalog名称。 假若指定了这个属性,表名会加上所指定的schema和catalog的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。 default-cascade指定了未明确注明cascade属性的Java属性和 集合类Hibernate会采取什么样的默原创 2007-11-30 13:09:00 · 1363 阅读 · 0 评论 -
鉴别器(discriminator)
在"一棵对象继承树对应一个表"的策略中,元素是必需的, 它定义了表的鉴别器字段。鉴别器字段包含标志值,用于告知持久化层应该为某个特定的行创建哪一个子类的实例。 如下这些受到限制的类型可以使用: string, character, integer, byte, short, boolean, yes_no, true_false.<discriminator column="原创 2007-11-30 14:06:00 · 2874 阅读 · 0 评论 -
版本(version)
元素是可选的,表明表中包含附带版本信息的数据。 这在你准备使用 长事务(long transactions)的时候特别有用<version column="version_column" name="propertyName" type="typename" access="field|property|ClassName原创 2007-11-30 14:09:00 · 1166 阅读 · 0 评论 -
property
元素为类定义了一个持久化的,JavaBean风格的属性。<property name="propertyName" column="column_name" type="typename" update="true|false" insert="true|false" formula="原创 2007-11-30 14:13:00 · 867 阅读 · 0 评论 -
多对一(many-to-one)
通过many-to-one元素,可以定义一种常见的与另一个持久化类的关联。 这种关系模型是多对一关联(实际上是一个对象引用-译注):这个表的一个外键引用目标表的 主键字段。<many-to-one name="propertyName" column="column_name" class="ClassName" casc原创 2007-11-30 14:15:00 · 8258 阅读 · 0 评论 -
关联(Association)与连接(Join)
我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名, 这时要使用关键字join。 from Cat as cat inner join cat.mate as mate left outer join cat.kittens as kittenfrom Cat as cat left join cat.mate.kittens as kittensf原创 2007-11-30 14:48:00 · 1851 阅读 · 0 评论 -
聚集函数
HQL查询甚至可以返回作用于属性之上的聚集函数的计算结果: select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)from Cat cat受支持的聚集函数如下: avg(...), sum(...), min(...), max(...)原创 2007-11-30 14:49:00 · 616 阅读 · 0 评论 -
子查询
对于支持子查询的数据库,Hibernate支持在查询中使用子查询。一个子查询必须被圆括号包围起来(经常是SQL聚集函数的圆括号)。 甚至相互关联的子查询(引用到外部查询中的别名的子查询)也是允许的。from Cat as fatcat where fatcat.weight > ( select avg(cat.weight) from DomesticCat cat )原创 2007-11-30 14:53:00 · 534 阅读 · 0 评论 -
条件查询(Criteria Queries) ---创建一个Criteria 实例
org.hibernate.Criteria接口表示特定持久类的一个查询。Session是 Criteria实例的工厂。 Criteria crit = sess.createCriteria(Cat.class);crit.setMaxResults(50);List cats = crit.list();原创 2007-11-30 14:55:00 · 789 阅读 · 0 评论 -
限制结果集内容
一个单独的查询条件是org.hibernate.criterion.Criterion 接口的一个实例。org.hibernate.criterion.Restrictions类 定义了获得某些内置Criterion类型的工厂方法。 List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name"原创 2007-11-30 14:56:00 · 605 阅读 · 0 评论 -
使用存储过程来查询
Hibernate 3引入了对存储过程查询(stored procedure)和函数(function)的支持.以下的说明中,这二者一般都适用。 存储过程/函数必须返回一个结果集,作为Hibernate能够使用的第一个外部参数. 下面是一个Oracle9和更高版本的存储过程例子. CREATE OR REPLACE FUNCTION selectAllEmployments R原创 2007-11-30 15:09:00 · 1199 阅读 · 0 评论 -
mapping--映射文件--详解
Hibernate需要知道怎样去加载(load)和存储(store)持久化类的对象。这正是Hibernate映射文件发挥作用的地方。映射文件告诉Hibernate它,应该访问数据库(database)里面的哪个表(table)及应该使用表里面的哪些字段(column)。 一个映射文件的基本结构看起来像这样: <!DOCTYPE hibernate-mapping PUBLIC原创 2007-11-30 11:33:00 · 6853 阅读 · 0 评论 -
获得SessionFactory
当所有映射定义被Configuration解析后, 应用程序必须获得一个用于构造Session实例的工厂. 这个工厂将被应用程序的所有线程共享:SessionFactory sessions = cfg.buildSessionFactory();Hibernate允许你的应用程序创建多个SessionFactory实例. 这对 使用多个数据库的应用来说很有用.原创 2007-11-30 12:00:00 · 599 阅读 · 0 评论 -
Apache CXF 简介
Apache CXF 简介 SOA 目前已经成为了人人皆知的热点,对分析人员来讲,SOA 重点需要加强对业务服务的分析;各种不同的服务是 SOA 的重要基础;ESB 则提供了一个舞台,让各种异构系统的业务服务在这里进行实际业务的展现、集成等。对开发人员来讲,如何更快速地创建出更稳定的业务服务组件是关键;应该更加深入领会使用面向接口的组件化开发方式;开发人员重点是保障服务的生命周期,其它的事原创 2009-01-09 00:12:00 · 1036 阅读 · 0 评论