- 浏览: 259691 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (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:
<div class="quote_title ...
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 1106在Hibernate中对于一对一的关联关系配置 ... -
Hibernate cascade在不同关联关系中的具体表现
2011-11-22 21:47 3080在Hibernate中,针对持久化实体的配置文件中有 ... -
Hibernate element使用
2011-11-20 20:43 1537一.Person package co ... -
Hibernate 单表实现树结构
2011-11-13 21:10 2790来看看通过单表来实现一个树形结构的方式。这里假设有这样 ... -
Hibernate save persist merge探究
2011-10-27 17:59 4081先来看看hibernate-reference.pd ... -
Hibernate Search配置及简单应用
2011-10-25 16:06 2534Hibernate Search是一款集成Apach ... -
Hibernate的三种配置方式
2011-10-24 16:58 1769对于Hibernate的配置方式,有三种,一种是通过 ... -
dynamic-insert,dynamic-update 我有话要说
2011-10-21 17:39 12917在之前的一个项目中,Team leader说在每一个 ... -
Hibernate one-to-many composite-element实现
2011-10-17 16:55 2609Hibernate中持久化实体间一对多关联关系的compo ... -
基于DomainObject的通用数据库CRUD操作
2011-10-17 15:09 1553对于项目中的持久化实体,持久化实体虽然对应着不同的业务对象 ... -
Hibernate one-to-many 双方双向连接表关联
2011-10-17 14:24 1697Hibernate中持久化实体间一对多关联,具体关联关 ... -
Hibernate one-to-many 多方单向连接表关联
2011-10-15 23:37 1248Hibernate中持久化实体间一对多 ... -
Hibernate one-to-many 一方单向连接表关联
2011-10-15 23:17 1643Hibernate中对于持久化实体间的关联关系有 ... -
Hibernate one-to-one 两方双向连接表关联
2011-10-15 17:38 2712Hibernate中对于持久化实体间的关联关系有三种分类, ... -
Hibernate fetch 抓取策略
2011-09-27 18:20 1311Hibernate fetch抓取策略定义了当抓 ... -
Hibernate 关联关系解除
2011-09-27 13:46 1502Hibernate对于持久化实体间的关联关系解 ... -
Hibernate one-to-many cascade探究
2011-09-08 13:20 1114对于Hibernate的one-to-many关联关系中, ... -
Hibernate inverse 深度解析
2011-08-09 22:55 1227inverse 英文意思为反向,倒转的。 Hi ... -
Hibernate ORM one-to-one主键关联关系映射
2011-08-01 22:08 1344Hibernate ORM one-to-one映射主要有 ... -
Hibernate ORM Inheritance
2011-07-31 22:56 1312Hibernate ORM提供了三 ...
相关推荐
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com.org.entity</value> <prop key="hibernate....
application.xml配置 ... <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </beans>
--此处hibernate 的映射采用的是.xml 配置则应设置为:class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”--> <property name="dataSource" ref="dataSource" /> <prop key="...
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <ref bean="dataSource"></ref> <prop key="hibernate.dialect">org.hibernate.dialect....
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <value>com.org.core.entity</value> <prop key="...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!--表示在类路径下加载hibernate.cfg.xml --> <value>classpath:hibernate.cfg.xml ...
18. class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 19. <property name="dataSource" ref="dataSource" /> 20. <property name="hibernateProperties"> 21. <props> 22...
Hibernate:ORM的中间件,或者说是实现了ORM的一个框架,对JDBC做了轻量级的封装。 ORM:使用元数据信息来描述对象和数据库之间的关系,并且能够自动实现java中持久化对象到关系型数据库中表的映射 脏检查:自动对...
Spring框架介绍========================Spring 框架简介,超过 10 节课程课程大纲S01 - Spring 简介Spring 介绍和概述三层架构 - 简短... 数据访问 - 第二部分Spring ORM 支持JPA 和 Hibernate 集成交易管理实践示例
3.12.1. @Component和更多典型化注解 3.12.2. 自动检测组件 3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一...
3.12.1. @Component和更多典型化注解 3.12.2. 自动检测组件 3.12.3. 使用过滤器自定义扫描 3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一...
hibernate-validator-4.2.0.Final.jar hsqldb-1.7.1.jar htmlunit-1.9.jar httpclient-4.0.1.jar httpclient-4.1.2.jar httpclient-4.2.5.jar httpclient-4.4.jar httpcore-4.0.1.jar httpcore-4.1.2.jar jackson-...
(读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看...
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................