- 浏览: 264117 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (87)
- Java (6)
- Frameworks (1)
- JavaWeb (3)
- Spring (6)
- Hibernate (26)
- Maven (2)
- Plugin (1)
- Velocity (1)
- Freemarker (1)
- Spring security (18)
- Google (5)
- Guice (5)
- rmi (1)
- Annotation (1)
- Binding (1)
- commons-fileupload (3)
- fileupload (3)
- ehcache (1)
- ApplicationContext (1)
- Resource (1)
- Validator (1)
- PropertyEditor (1)
- one-to-many (5)
- cascade (2)
- MessageSource (1)
- Serialize (1)
- Serializable (1)
- delete (1)
- delete-orphan (1)
- fetch (1)
- one-to-one (1)
- join (4)
- DomainObject (1)
- CRUD (1)
- composite-element (1)
- Hibernate ORM (14)
- dynamic-insert (1)
- dynamic-update (1)
- Search (1)
- DDD (0)
- Job (0)
- element (1)
- Unique (1)
- Group (1)
- tomcat (1)
- https (1)
- mysql (1)
最新评论
-
xurunchengof:
[url][url][url][img][img][img][ ...
Spring Security 3多用户登录实现之三 验证过滤器 -
Wind_ZhongGang:
yo8237233 写道你这样的话如果上传文件超过了50000 ...
Spring集成Commons fileupload,文件上传 -
yo8237233:
你这样的话如果上传文件超过了50000000就会报异常
Spring集成Commons fileupload,文件上传 -
zhuzhiguosnail:
Wind_ZhongGang 写道lianglaiyang 写 ...
Spring Security 3多用户登录实现一 -
曾老师:
?????
Spring Security 3用户登录实现之十 用户切换
Hibernate提倡在建模时,进行细粒度的控制。这个抽象的概念可以这样理解,一般在进行Hibernate持久化对象建模时,一个对象对应一个配置文件,在配置文件中的属性都有这样一个对象中的属性对应。试想如果一个对象的属性有十几二十个,那么这个对象显然就会变得很大,尤其是getter和setter方法。这样显然会增加对象的复杂度,使得对象变得难以理解。那这时该怎么办呢。Hibernate为我们提供了这样一个途径。那就是利用Component。即这么多属性中必然有些属性是在概念上相近的,如一个Person对象中有这样三个属性,firstname,middlename,lastname,这三个属性都和名字有关,所以可以提成一个Name对象作为Person的Component。这就是Hibernate提倡的细粒度控制了。这样对象就变得易于理解,更为接近现实中的情况,使项目变得易于扩展和维护。那代码上具体如何实现呢。
1.FullName.java
package com.template.model.person; /** * Created by IntelliJ IDEA. * User: ZhongGang * Date: 11-7-21 * Time: 下午8:22 * To change this template use File | Settings | File Templates. */ public class FullName { private String firstName; private String middleName; private String lastName; public FullName() { } }
2.Name.java
package com.template.model.person; /** * Created by IntelliJ IDEA. * User:ZhongGang * Date: 11-7-21 * Time: 下午8:22 * To change this template use File | Settings | File Templates. */ public class Name { private FullName fullName; private String nickName; public Name() { } }
3.Address.java
package com.template.model.person; /** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 11-7-21 * Time: 下午8:24 * To change this template use File | Settings | File Templates. */ public class Address { private String street; private String city; private String country; public Address() { } }
4.Human.java
package com.template.model.person; /** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 11-7-21 * Time: 下午8:21 * To change this template use File | Settings | File Templates. */ public class Human extends BasicDomain { private Name name; private Address address; public Human() { } }
5.Human.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-access="field"> <class name="com.template.model.person.Human" table="human"> <id name="id" column="id" type="java.lang.Integer"> <generator class="native"/> </id> <property name="active" column="active" type="java.lang.Boolean"/> <component name="name" class="com.template.model.person.Name"> <component name="fullName" class="com.template.model.person.FullName"> <property name="firstName" column="firstname" type="java.lang.String"/> <property name="middleName" column="middlename" type="java.lang.String"/> <property name="lastName" column="lastname" type="java.lang.String"/> </component> <property name="nickName" column="nickname" type="java.lang.String"/> </component> <component name="address" class="com.template.model.person.Address"> <property name="street" column="street" type="java.lang.String"/> <property name="country" column="country" type="java.lang.String"/> <property name="city" column="city" type="java.lang.String"/> </component> </class> </hibernate-mapping>
从Name和FullName可以看出,Hibernate支持多层的Component嵌套。
如果想实现从Name知道是哪个Human,应该怎么办呢?看下面的代码。只须作稍许的修改。
Name.java
package com.template.model.person; /** * Created by IntelliJ IDEA. * User: Zhong Gang * Date: 11-7-21 * Time: 下午8:22 * To change this template use File | Settings | File Templates. */ public class Name { private FullName fullName; private String nickName; private Human human; public Name() { } public Human getHuman() { return human; } public void setHuman(Human human) { this.human = human; } }
Human.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping default-access="field"> <class name="com.template.model.person.Human" table="human"> <id name="id" column="id" type="java.lang.Integer"> <generator class="native"/> </id> <property name="active" column="active" type="java.lang.Boolean"/> <component name="name" class="com.template.model.person.Name"> <parent name="human"/> <component name="fullName" class="com.template.model.person.FullName"> <property name="firstName" column="firstname" type="java.lang.String"/> <property name="middleName" column="middlename" type="java.lang.String"/> <property name="lastName" column="lastname" type="java.lang.String"/> </component> <property name="nickName" column="nickname" type="java.lang.String"/> </component> <component name="address" class="com.template.model.person.Address"> <property name="street" column="street" type="java.lang.String"/> <property name="country" column="country" type="java.lang.String"/> <property name="city" column="city" type="java.lang.String"/> </component> </class> </hibernate-mapping>
评论
3 楼
hcchanqing
2012-11-13
Wind_ZhongGang 写道
hcchanqing 写道
真心没看明白。。。
哪不明白?
Component这个。可以留个QQ吗?
2 楼
Wind_ZhongGang
2012-11-12
hcchanqing 写道
真心没看明白。。。
哪不明白?
1 楼
hcchanqing
2012-11-12
真心没看明白。。。
发表评论
-
Hibernate unique使用
2011-11-28 22:16 1160在Hibernate中对于一对一的关联关系配置 ... -
Hibernate cascade在不同关联关系中的具体表现
2011-11-22 21:47 3135在Hibernate中,针对持久化实体的配置文件中有 ... -
Hibernate element使用
2011-11-20 20:43 1580一.Person package co ... -
Hibernate 单表实现树结构
2011-11-13 21:10 2836来看看通过单表来实现一个树形结构的方式。这里假设有这样 ... -
Hibernate save persist merge探究
2011-10-27 17:59 4131先来看看hibernate-reference.pd ... -
Hibernate Search配置及简单应用
2011-10-25 16:06 2579Hibernate Search是一款集成Apach ... -
Hibernate的三种配置方式
2011-10-24 16:58 1808对于Hibernate的配置方式,有三种,一种是通过 ... -
dynamic-insert,dynamic-update 我有话要说
2011-10-21 17:39 12989在之前的一个项目中,Team leader说在每一个 ... -
Hibernate one-to-many composite-element实现
2011-10-17 16:55 2647Hibernate中持久化实体间一对多关联关系的compo ... -
基于DomainObject的通用数据库CRUD操作
2011-10-17 15:09 1603对于项目中的持久化实体,持久化实体虽然对应着不同的业务对象 ... -
Hibernate one-to-many 双方双向连接表关联
2011-10-17 14:24 1736Hibernate中持久化实体间一对多关联,具体关联关 ... -
Hibernate one-to-many 多方单向连接表关联
2011-10-15 23:37 1292Hibernate中持久化实体间一对多 ... -
Hibernate one-to-many 一方单向连接表关联
2011-10-15 23:17 1700Hibernate中对于持久化实体间的关联关系有 ... -
Hibernate one-to-one 两方双向连接表关联
2011-10-15 17:38 2749Hibernate中对于持久化实体间的关联关系有三种分类, ... -
Hibernate fetch 抓取策略
2011-09-27 18:20 1361Hibernate fetch抓取策略定义了当抓 ... -
Hibernate 关联关系解除
2011-09-27 13:46 1543Hibernate对于持久化实体间的关联关系解 ... -
Hibernate one-to-many cascade探究
2011-09-08 13:20 1155对于Hibernate的one-to-many关联关系中, ... -
Hibernate inverse 深度解析
2011-08-09 22:55 1269inverse 英文意思为反向,倒转的。 Hi ... -
Hibernate ORM one-to-one主键关联关系映射
2011-08-01 22:08 1394Hibernate ORM one-to-one映射主要有 ... -
Hibernate ORM Inheritance
2011-07-31 22:56 1365Hibernate ORM提供了三 ...
相关推荐
对于那些刚开始学习Hibernate或者想要深入理解ORM(对象关系映射)机制的人来说,这是一个非常宝贵的资源。 **知识点详解:** 1. **Hibernate框架**:Hibernate是一个开源的Java持久化框架,它提供了一种在Java...
其中,`Hibernate`是JEECG的一个重要组成部分,它是Java领域中广泛使用的对象关系映射(ORM)框架,使得开发者可以通过面向对象的方式来操作数据库,而无需关心底层SQL的编写。 **1. Hibernate基础** Hibernate允许...
Hibernate是Java领域中一款广泛应用的对象关系映射(ORM)框架,它简化了数据库与Java对象之间的交互,使得开发者可以使用面向对象的方式来操作数据库。在"Hibernate_test"这个主题中,我们将深入探讨Hibernate的...
最后,Hibernate是Java的ORM框架,它将数据库操作与业务逻辑解耦。配置Hibernate包括: 1. 引入Hibernate依赖:添加Hibernate库到项目中。 2. 配置Hibernate:创建hibernate.cfg.xml文件,设置JDBC连接、方言、缓存...
Hibernate是一个对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互;而定时器则用于在特定时间执行特定任务,常见的如数据清理、统计分析等。下面将详细介绍这三个组件以及如何将它们结合在一起进行...
Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,极大地简化了Java应用与数据库之间的交互。在Hibernate中,组件映射是将一个类的实例作为另一个类的一个属性进行持久...
**Hibernate** 是一个用于 Java 环境下的开源 **对象/关系映射 (Object/Relational Mapping, ORM)** 工具。它通过将 Java 类映射到数据库表,并将 Java 对象映射到表中的记录,从而实现了数据持久化。 ##### 1.1 ...
接下来,讨论Hibernate,这是一个流行的ORM(对象关系映射)框架,它允许开发人员用Java对象模型来操作数据库。在注解配置下,我们不再需要`hibernate.cfg.xml`配置文件,而是使用`@Entity`注解标识实体类,`@Table`...
而Hibernate则是一个ORM(对象关系映射)框架,它简化了数据库操作,使开发者可以专注于业务代码而不是SQL。 **Spring框架** Spring是Java企业版(Java EE)开发中的关键组件,它的核心特性包括依赖注入(DI)和...
Hibernate支持三种持久化模型:实体(Entity)、值对象(Value Object)和组件(Component)。实体是与数据库表对应的Java对象;值对象用于封装业务逻辑中的数据;组件则用来表示一个对象的组成部分。 5. **级联...
Spring是一个全面的后端开发框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等特性,而Hibernate则是一个强大的ORM(对象关系映射)工具,用于简化数据库操作。当我们将这两个框架整合在一起时,...
而Hibernate则是一个对象关系映射(ORM)工具,它简化了Java应用程序与数据库之间的交互,通过注解可以方便地定义对象和表之间的映射关系。 接下来,我们讨论如何将Spring MVC与Hibernate整合,以便在项目中使用...
而Hibernate则是一个强大的对象关系映射(ORM)工具,它简化了数据库操作,使得开发者可以使用Java对象来处理数据。当这两个框架整合在一起时,可以提供高效、灵活且易于维护的解决方案。 在"Spring3整合Hibernate4...
3. **Hibernate3.3**:Hibernate是一个对象关系映射(ORM)框架,允许开发者用Java对象的方式来操作数据库。在3.3版本中,它支持了延迟加载(Lazy Loading),这是一种优化性能的技术,只在真正需要时才加载关联的...
SpringWeb是Spring框架的一个关键组成部分,主要用于构建Web应用程序,而Hibernate则是一个流行的对象关系映射(ORM)工具,它简化了Java应用与数据库之间的交互。 **SpringWeb框架** SpringWeb框架提供了MVC...
Hibernate是Java领域的一个流行的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来操作数据库,极大地简化了数据库编程。在这个压缩包中,我们能看到不同类型的映射文件(.hbm.xml)和一个核心配置文件...
Hibernate 是一款流行的 Java ORM(对象关系映射)框架,它允许开发者将数据库操作转化为对 Java 对象的操作,简化了数据库应用的开发。在深入分析 Hibernate 结构框架之前,我们先来了解一下核心概念。 **1. ...
在Java开发领域,组件(Component)映射是框架如Spring或Hibernate中的一种核心概念,用于实现对象关系映射(ORM)或依赖注入(DI)。在这个主题中,我们将深入探讨组件映射的概念、它的重要性以及如何在实际应用中...