- 浏览: 154875 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
驭乐MJ:
好!谢谢啦!正在学习使用sean中。。
Seam学习笔记 -
laorer:
00 -现在,互联网造就了一批富翁,但那时,似乎什么都不会去想 ...
如果时光能够回流到八年前 -
liuqizhi0925:
八年前,OMG ,能改变的事情真的很多...
如果时光能够回流到八年前
● 相关文档:
Hibernate参考文档 v3.0.2
http://www.redsaga.com/hibernate-ref/3.x/zh-cn/html/
Hibernate实践.pdf
● 笔记
·SessionFactory是数据库编译后的内存映像,多个数据源则需要使用多个SessionFactory。持久化对象(PO)=JavaBean+映射配置文件。所有的持久化类(persistent classes)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。
·使用Hibernate的开发者应该总是关注对象的状态(state),不必考虑SQL语句的执行。 这部分细节已经由Hibernate掌管妥当,只有开发者在进行系统性能调优的时候才需要进行了解。
·Hibernate的操作:
The main function of the Session is to offer create, read and delete operations for instances of mapped entity classes. Instances may exist in one of three states:
transient: never persistent, not associated with any Session
persistent: associated with a unique Session
detached: previously persistent, not associated with any Session
Transient instances may be made persistent by calling save(), persist() or saveOrUpdate(). Persistent instances may be made transient by calling delete(). Any instance returned by a get() or load() method is persistent. Detached instances may be made persistent by calling update(), saveOrUpdate(), lock() or replicate(). The state of a transient or detached instance may also be made persistent as a new persistent instance by calling merge().
save() and persist() result in an SQL INSERT, delete() in an SQL DELETE and update() or merge() in an SQL UPDATE. Changes to persistent instances are detected at flush time and also result in an SQL UPDATE. saveOrUpdate() and replicate() result in either an INSERT or an UPDATE.
session.save()/session.persist() //Persist the given transient instance
session.createQuery() HQL查询
session.createCriteria() 根据实体的条件查询
session.createSQLQuery() 原生的SQL查询
session.get()/session.load() 根据某个实例的持久化标识(id),来装载对象。当不存在指定的对象时候,前者返回null,后者抛出异常。
sess.delete(cat); //delete()的用途是把一个持久实例变成瞬时(transient)。
例如:
session.createCriteria()
List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.add( Restrictions.between("weight", minWeight, maxWeight) )
.list();
//Criterion 代表查询条件,由Restrictions类来产生。
·Session刷出(flush)
每间隔一段时间,Session会执行一些必需的SQL语句来把内存中的对象的状态同步到JDBC连接中。这个过程被称为刷出(flush),默认会在下面的时间点执行:
- 在某些查询执行之前
- 在调用org.hibernate.Transaction.commit()的时候
- 在调用Session.flush()的时候
·同一个类的多次映射:
对特定的持久化类,映射多次是允许的。这种情形下,你必须指定entity name来区别不同映射实体的对象实例。(默认情况下,实体名字和类名是相同的。)
·分页
Hibernate的分页比较简单,
Query q = sess.createQuery("from DomesticCat cat");
q.setFirstResult(20);
q.setMaxResults(10);
List cats = q.list();
//另外,Hibernate还支持可滚动遍历(Scrollable iteration)
·批量处理:
对于批量处理,需要设置hibernate.jdbc.batch_size 属性(例如=20),同时需要再一定间隔进行session的释放内存。例如
session.flush();
session.clear();
·Hibernate的的实体映射:
当1-N,或者N-N的关系时候,当然就要使用到集合类型(例如bag,list,set等)。而当N-1,或者1-1的时候则不需要使用到集合类型。
当N-N的关系时候,当然要用到连接表。
·Hibernate的事件框架由以下两部分组成:
拦截器机制:实现Interceptor接口
事件监听器:实现LoadEventListener,SaveEventListener等。
·《LightWeight J2EE》这本书的第四章Hibernate中关于SQL的例子很好说明了实体的映射关系,代码见附件SQL08-02-01_22.rar。
·HQL
HQL中可以是用new操作符,参见: 《用HQL获取部分的实体对象属性》
·占位符的查询:
HQL的方式:
from User u where u.name=:username and u.yearold=:yearold
这就是一个常见的简单值的占位符式的查询,通过这样的方式就可以把值注入到
参数中:
query.setParameter(“username”,”bluedavy”);
query.setParameter(“yearold”,25)
SQL的方式:
from User u where u.name=? and u.yearold=?
query.setParameter(0,”bluedavy”);
query.setParameter(1,25);
SQL查询进行实体映射时,应该尽量用占位符{}
sess.createSQLQuery("SELECT {cat.*}, {mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID")
.addEntity("cat", Cat.class)
.addEntity("mother", Cat.class)
·Hibernate之前的很多ORM产品不能像SQL一样只获取需要的东西。所以要合理设置相关属性(Property或者集合或者映射等)LazyLoad,Hibernate3默认LazyLoad的属性值就是true。只有调用到相关属性时才会从缓存或数据库中加载。当然,集合也是同样如此。
·inverse="true" 设置的谨慎。
User 跟Role是n-n单向关联,如果设置了inverse="true".则当保存User的Role时,不会保存相应的连接表
(?)是不是n-n双向关联的时候,才需要设置该值?
· hibernate对实体的操作是需要跟事务关联,如果没有执行事务的commit(),则不会将其持久化到数据库中。
·hibernate跟spring集成时,将DAO类继承自HibernateDaoSupport,然后通过getHibernateTemplate()方法来实现CRUD操作则不需要直接管理session和事务。
发表评论
-
Weblogic的update和stop/start的区别
2009-10-28 19:50 2173Weblogic的update和stop/s ... -
Web Service HTTP1.0 and HTTP1.1性能测试报告
2009-10-21 17:55 3097第1章 测试需求分析 1.1 测试目的 w ... -
SOA与业务敏捷
2006-08-30 00:00 815作者:TIBCO中国研发中心 胡长城(银狐999) ... -
RESTful Web Services
2006-08-23 00:00 9601. The Fundamental 1.1 What ... -
CAS学习笔记
2006-08-02 00:00 1245•相关文档 官方文档: http://www.ja- ... -
SOA学习笔记
2006-07-26 00:00 919SOA是为了解决在Internet ... -
Lucene 基础指南[转]
2006-07-12 00:00 1262Lucene 基础指南 作者:lighter, 江南白衣 ... -
OSGi入门笔记
2006-07-05 00:00 951借助网上的一些资料,对OSGi有了一些了解,将到目前的一些粗浅 ... -
x509数字证书介绍
2006-06-28 00:00 1294一、什么是数字证书 数字证书就是互联网通讯中标志通讯各方身 ... -
SSL协议及其应用
2006-06-21 00:00 2084SSL协议及其应用 ... -
JSR 168与WSRP
2006-06-07 00:00 1580作者:Rachel Greenblatt ... -
JBoss学习笔记
2006-05-31 00:00 1354JBoss架构是由JMX MBean服务器、微内核组成的。 ... -
UDDI笔记
2006-05-24 00:00 1083◆UDDI的目的实际上是想提供一个针对公众网商业用户的在全 ... -
选择Seam的十大理由
2006-05-17 00:00 943一、增加AJAX特征的最快捷方式 在功能上,Ajax改变了W ... -
Seam学习笔记
2006-05-10 00:00 1352FAQ: seam的英文意思是:缝、接合处。seamless ... -
JSF学习笔记
2006-05-03 00:00 2830FAQ: 1. JSF跟Spring如何结合? A ... -
Spring学习笔记
2006-04-26 00:00 1057Spring笔记 0. 背景 Spring F ... -
iBATIS学习笔记
2006-04-19 00:00 13881. iBATIS 关于iBATIS,iBATIS是一个Da ... -
Hibernate's FAQ
2006-04-05 00:00 7801. 关于session 1) 什么时机对session ... -
JMX学习笔记
2006-03-22 00:00 998JMX 笔记 一些JMX的简单入门资料如下: ...
相关推荐
《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...
在本篇《Hibernate学习笔记》中,我们将深入探讨Hibernate这一流行的Java对象关系映射(ORM)框架。Hibernate允许开发者以面向对象的方式处理数据库操作,极大地简化了数据存取的复杂性。以下是一些关键知识点: 1....
Hibernate学习笔记整理 以下是 Hibernate 框架的详细知识点: Hibernate 介绍 Hibernate 是一个 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到数据库表中。它提供了一个简洁的方式来访问和操作...
【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...
hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要hibernate 学习笔记精要
《Hibernate学习笔记——马士兵教程解析》 在Java开发领域,ORM(Object-Relational Mapping)框架的使用已经非常普遍,其中Hibernate作为一款优秀的ORM框架,因其强大的功能和易用性深受开发者喜爱。本文将根据马...
这套笔记是我学习Hibernate,进行相关技术点训练时记录下来的,其中包括技术点说明与相关事例,拿出来与大家分享。
### 马士兵Hibernate学习笔记知识点总结 #### 一、课程内容概览 - **HelloWorld**:通过简单的示例程序介绍如何启动一个基于Hibernate的Java项目。 - **Hibernate原理模拟**:解释O/R Mapping的概念及其重要性。 -...
### 马士兵Hibernate学习笔记知识点总结 #### 一、HelloWorld示例 - **目的**:通过简单的示例理解Hibernate的基本使用流程。 - **步骤**: - 创建Java项目`hibernate_0100_HelloWorld`。 - 建立库依赖,包括...
Hibernate是一款强大的Java持久...通过阅读这份“Hibernate API帮助文档”和“Hibernate学习笔记”,你将能够深入理解Hibernate的工作原理,掌握其API的使用,并能在实际项目中有效地利用Hibernate进行数据持久化操作。
**Hibernate学习笔记与总结** Hibernate 是一款开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库上操作对象数据的便捷方式。本文将深入探讨Hibernate的核心概念、配置、实体类、映射文件、...
### Hibernate 学习笔记知识点概览 #### 一、Hibernate 概述 - **定义**:Hibernate 是一款开源的对象关系映射(ORM)框架,它实现了将 Java 应用程序中的对象模型映射到关系型数据库中的记录。通过 ORM 技术,...
### JDBC与Hibernate学习笔记 #### 一、JDBC概述 **1.1 ODBC与JDBC的区别** - **ODBC(Open Database Connectivity)**: 开放式数据库连接是一种开放标准的应用程序接口(API),用于实现数据库应用程序与不同...
### 对象持久化与Hibernate学习笔记 #### 一、对象持久化的概念与重要性 - **定义**: 对象持久化是指将程序中的对象状态存储到持久化存储设备上的过程,以便在程序结束运行后仍然可以保留这些数据。 - **必要性**:...
【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...
标题:Hibernate学习笔记3 描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在...