- 浏览: 109270 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
ldwtill:
overwrite呢?
overload,overwrite和override比较 -
dafeiwang:
...
过滤器和拦截器的区别
Hibernate建议在进行领域模型建模时要细粒度一些,简单地说,就是类要比表多,这种映射方式就是组件(component)映射。
组件类是值类型的,即它没有对象标识符属性,在数据库中也没有对应的表,它只隶属于另一个持久化类的实例。它的数据被嵌入到所隶属的持久化实例对应的数据库表的记录中。
组件映射的应用有三种常见情况:把组件类作为持久化类的单个属性来使用、把组件类作为持久化类的集合属性来使用、把组件类作为持久化类的对象标识符来使用。下面分别来介绍。
1、组件类作为持久化类的单个属性
定义一个Address类(它是值类型的),代码如下:
Address.java
- package com.zxf.domain;
- /**
- * 地址类
- * 值类型,它没有对象标识符属性。
- * 只能隶属于一个持久化类的实例,它的数据也是被嵌入到所隶属的持久化实例对应的数据库表的记录的。
- */
- public class Address {
- private String province; //省份名
- private String city; //城市
- private String detail; //地址详情,如街道,小区,门牌号等
- private String zipcode; //邮编
- private String telephone; //固定电话
- private String mobilephone; //移动电话
- public Address(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; /** * 地址类 * 值类型,它没有对象标识符属性。 * 只能隶属于一个持久化类的实例,它的数据也是被嵌入到所隶属的持久化实例对应的数据库表的记录的。 */ public class Address { private String province; //省份名 private String city; //城市 private String detail; //地址详情,如街道,小区,门牌号等 private String zipcode; //邮编 private String telephone; //固定电话 private String mobilephone; //移动电话 public Address(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Customer.java
- package com.zxf.domain;
- /** 客户持久化类(实体类) */
- public class Customer {
- private Long id; //对象标识符(OID)
- private String loginname; //登录名
- private String password; //密码
- private String email; //邮箱号
- private Address homeAddress; //联系地址
- private Address deliverAddress; //送货地址
- public Customer(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; /** 客户持久化类(实体类) */ public class Customer { private Long id; //对象标识符(OID) private String loginname; //登录名 private String password; //密码 private String email; //邮箱号 private Address homeAddress; //联系地址 private Address deliverAddress; //送货地址 public Customer(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Customer.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="com.zxf.domain.Customer" table="customer">
- <id name="id" column="id" type="long">
- <generator class="native" />
- </id>
- <property name="loginname" not-null="true"/>
- <property name="password" not-null="true"/>
- <property name="email"/>
- <!-- 用component元素映射组件类属性homeAddress -->
- <component name="homeAddress" class="com.zxf.domain.Address">
- <!-- 用property映射组件类的每个属性 -->
- <property name="province" column="home_province"/>
- <property name="city" column="home_city"/>
- <property name="detail" column="home_detail"/>
- <property name="zipcode" column="home_zipcode"/>
- <property name="telephone" column="home_telephone"/>
- <property name="mobilephone" column="home_mobilephone"/>
- </component>
- <!-- 用component元素映射组件类属性deliverAddress -->
- <component name="deliverAddress" class="com.zxf.domain.Address">
- <property name="province" column="deliver_province"/>
- <property name="city" column="deliver_city"/>
- <property name="detail" column="deliver_detail"/>
- <property name="zipcode" column="deliver_zipcode"/>
- <property name="telephone" column="deliver_telephone"/>
- <property name="mobilephone" column="deliver_mobilephone"/>
- </component>
- </class>
- </hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.zxf.domain.Customer" table="customer"> <id name="id" column="id" type="long"> <generator class="native" /> </id> <property name="loginname" not-null="true"/> <property name="password" not-null="true"/> <property name="email"/> <!-- 用component元素映射组件类属性homeAddress --> <component name="homeAddress" class="com.zxf.domain.Address"> <!-- 用property映射组件类的每个属性 --> <property name="province" column="home_province"/> <property name="city" column="home_city"/> <property name="detail" column="home_detail"/> <property name="zipcode" column="home_zipcode"/> <property name="telephone" column="home_telephone"/> <property name="mobilephone" column="home_mobilephone"/> </component> <!-- 用component元素映射组件类属性deliverAddress --> <component name="deliverAddress" class="com.zxf.domain.Address"> <property name="province" column="deliver_province"/> <property name="city" column="deliver_city"/> <property name="detail" column="deliver_detail"/> <property name="zipcode" column="deliver_zipcode"/> <property name="telephone" column="deliver_telephone"/> <property name="mobilephone" column="deliver_mobilephone"/> </component> </class> </hibernate-mapping>
配置文件:hibernate.cfg.xml
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- 数据库方言设置 -->
- <property name="hibernate.dialect">
- org.hibernate.dialect.MySQLInnoDBDialect
- </property>
- <!-- 数据库连接参数设置 -->
- <property name="hibernate.connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123</property>
- <!--实际操作数据库时是否显示SQL -->
- <!--
- <property name="hibernate.show_sql">true</property>-->
- <property name="hibernate.format_sql">true</property>
- <!--将数据库schema的DDL导出到数据库 -->
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- 以下定义实体类与数据库表的映像文件 -->
- <mapping resource="com/zxf/domain/Customer.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库方言设置 --> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLInnoDBDialect </property> <!-- 数据库连接参数设置 --> <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123</property> <!--实际操作数据库时是否显示SQL --> <!-- <property name="hibernate.show_sql">true</property>--> <property name="hibernate.format_sql">true</property> <!--将数据库schema的DDL导出到数据库 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 以下定义实体类与数据库表的映像文件 --> <mapping resource="com/zxf/domain/Customer.hbm.xml" /> </session-factory> </hibernate-configuration>
2、组件类作为持久化类的集合属性
Photo.java
- package com.zxf.domain;
- /** 照片类--值类型 */
- public class Photo {
- private String name; //照片名
- private String filePath; //照片存放路径
- private String description; //描述
- private int width; //原始宽度
- private int height; //原始高度
- public Photo(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; /** 照片类--值类型 */ public class Photo { private String name; //照片名 private String filePath; //照片存放路径 private String description; //描述 private int width; //原始宽度 private int height; //原始高度 public Photo(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Album.java
- package com.zxf.domain;
- import java.util.Date;
- import java.util.List;
- /** 相册持久化类(实体类) */
- public class Album {
- private Long id; //对象标识符(OID)
- private String title; //相册名
- private String description; //描述
- private Date creationTime; //建立时间
- private List<Photo> photos; //照片集
- public Album(){} //无参数的构造方法
- //以下省略所有属性的getters和setters方法...
- }
package com.zxf.domain; import java.util.Date; import java.util.List; /** 相册持久化类(实体类) */ public class Album { private Long id; //对象标识符(OID) private String title; //相册名 private String description; //描述 private Date creationTime; //建立时间 private List<Photo> photos; //照片集 public Album(){} //无参数的构造方法 //以下省略所有属性的getters和setters方法... }
Album.hbm.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <!-- 映射持久化类 -->
- <class name="com.zxf.domain.Album" table="album">
- <!-- 映射对象标识符 -->
- <id name="id" column="id" type="long">
- <!-- 指定对象标识符生成器 -->
- <generator class="native" />
- </id>
- <!-- 用property映射每个普通属性 -->
- <property name="title"/>
- <property name="description"/>
- <property name="creationTime" column="creation_time"/>
- <!-- 用bag来映射List集合属性 -->
- <bag name="photos" table="photo">
- <!-- key元素:指定集合属性对应的表的外键列 -->
- <key column="album_id" not-null="true" />
- <!-- composite-element元素:映射集合里的元素
- class属性:指定集合里的元素的类类型
- -->
- <composite-element class="com.zxf.domain.Photo">
- <!-- 用property映射每个普通属性 -->
- <property name="name" />
- <property name="filePath" column="file_path" />
- <property name="description" />
- <property name="width" />
- <property name="height" />
- </composite-element>
- </bag>
- </class>
- </hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- 映射持久化类 --> <class name="com.zxf.domain.Album" table="album"> <!-- 映射对象标识符 --> <id name="id" column="id" type="long"> <!-- 指定对象标识符生成器 --> <generator class="native" /> </id> <!-- 用property映射每个普通属性 --> <property name="title"/> <property name="description"/> <property name="creationTime" column="creation_time"/> <!-- 用bag来映射List集合属性 --> <bag name="photos" table="photo"> <!-- key元素:指定集合属性对应的表的外键列 --> <key column="album_id" not-null="true" /> <!-- composite-element元素:映射集合里的元素 class属性:指定集合里的元素的类类型 --> <composite-element class="com.zxf.domain.Photo"> <!-- 用property映射每个普通属性 --> <property name="name" /> <property name="filePath" column="file_path" /> <property name="description" /> <property name="width" /> <property name="height" /> </composite-element> </bag> </class> </hibernate-mapping>
配置文件:hibernate.cfg.xml
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- 数据库方言设置 -->
- <property name="hibernate.dialect">
- org.hibernate.dialect.MySQLInnoDBDialect
- </property>
- <!-- 数据库连接参数设置 -->
- <property name="hibernate.connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
- <property name="hibernate.connection.username">root</property>
- <property name="hibernate.connection.password">123</property>
- <!--实际操作数据库时是否显示SQL -->
- <!--
- <property name="hibernate.show_sql">true</property>-->
- <property name="hibernate.format_sql">true</property>
- <!--将数据库schema的DDL导出到数据库 -->
-
<property name</
发表评论
-
hibernate五大核心接口及其应用
2011-05-02 20:28 899所有的Hibernate应用中都会访问Hibernate的5个 ... -
hibernate fetch 和lazy
2011-05-02 19:42 1082经过测试发现Hibernate annotation ... -
hibernate优化
2011-05-02 09:56 751口诀 1、使用双向一对多关联, ... -
Hibernate详解(一)------->>入门
2011-05-02 09:35 783Hibernate是一个开放源代码的对 ... -
hibernate详解(二)---->>继承关系映射(一)
2011-05-02 09:34 818继承是面对对象编程中一个很 ... -
hibernate详解(二)----->>继承关系映射(二、三)
2011-05-02 09:33 794这篇文章紧接着hibernate详解(二)- ... -
hibernate详解(三)----->>组件映射(二)之复合主键
2011-05-02 09:31 9503、组件类作为持久化类的对象标识符属性 ... -
Hibernate详解(四)---->>关联关系映射(二)
2011-05-02 09:29 9663、单向一对一 每个中国公民都有一张身份证 ... -
Hibernate详解(四)---->>关联关系映射(一)
2011-05-02 09:27 845关联关系是在领域模型建模中经常使用到的一 ... -
hibernate的二级缓存
2011-05-02 08:58 613Hibernate二级缓存也称为进程级的缓存或Sessio ... -
全面讲解Hibernate二级缓存
2011-05-02 08:56 675在向大家详细介绍Hibernate二级缓存之前,首先让大家了解 ... -
hibernate工作原理及为什么要使用
2011-05-02 08:51 904Hibernate工作原理及其作用 Java学习笔记 201 ... -
hibernate连接池
2011-05-02 08:49 801我分别用以下链接方式测试了一下:tomcat自带的连接池< ... -
hibernate关联
2011-05-02 08:35 758Hibernate关联关系 收藏 在域模型钟, ... -
Hibernate Criteria Query
2011-05-02 08:34 674Hibernate-Criteria Query 收藏 Cri ... -
hibernate----Inverse 和 cascade区别
2011-05-02 08:15 830Inverse 和 cascade的区别 ... -
Spring中配合hibernate使用的简单例子
2011-05-01 20:42 677最近在看SPRING和hibernate,学习了sprin ... -
hibernate 之inverse重点复习
2011-05-01 20:00 683inverse的原因,在于单向的一对多的低效而造成的.举个 ... -
hibernate中只选取某些列的写法
2011-05-01 18:44 790在普通的sql中,为了选取某些列,其实是很简单的,就sele ... -
HQL返回值
2011-05-01 18:35 1206Hibernate查询单个字段,Hibernate把每个id做 ...
相关推荐
-- 可以自定义 servlet.xml 配置文件的位置和名称,默认为 WEB-INF 目录下,名称为[<servlet-name>]-servlet.xml,如 spring-servlet.xml --> <init-param> <param-name>contextConfigLocation</param-name> ...
主要介绍了Hibernate组件映射代码详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 ...
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...
第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射...
在 Spring 框架中,Hibernate 是一个流行的对象关系映射(ORM)工具。通过 Hibernate,可以将 Java 对象映射到数据库表中。在本例中,使用了 Hibernate 3.x 版本: ``` <bean id="hibernateInterceptor" class="org...
11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 ...
11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 ...
11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 用UserType映射枚举类型 11.2.3 实现CompositeUserType接口 11.2.4 运行本节范例程序 11.3 操纵Blob和Clob类型数据 11.4 小结 11.5 思考题 第12章 ...
我培训用的 Hibernate课件, 个人能力范围内精心整理,图文并茂. 希望能对大家学习 Hibernate 提供帮助. 这是第二篇, 内容如下:Hibernate配置文件;...映射组件属性;关联关系映射:双向 1-N;继承映射
一共四个,其中pdf 三个包,源码一个包 第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE...
第一部分 从Hibernate和EJB 3.0开始 第1章 理解对象/关系持久化 1.1 什么是持久化 1.1.1 关系数据库 1.1.2 理解SQL 1.1.3 在Java中使用SQL 1.1.4 面向对象应用程序中的持久化 1.2 范式不...
* 使用 Hibernate 是因为 Hibernate 提供了一个易用的、高效率的对象关系映射框架,可以帮助开发者更好的处理数据持久化问题。 * 使用 Spring 是因为 Spring 基于 IoC 和 AOP 构架,可以帮助开发者更好的实现模块化...
Hibernate是SSH配置的另一个核心组件,提供了ORM(Object-Relational Mapping)的功能,实现了Java对象和关系数据库的映射。Hibernate的配置包括下载Hibernate包、配置Hibernate的配置文件、定义映射关系等步骤。 ...
12.5 使用Hibernate的工具快速生成映射文件和POJO 12.5.1 使用MiddleGen根据数据库产生映射文件 12.5.2 使用hbm2java根据映射文件产生POJO 12.6 整合Struts、Spring和Hibernate实现用户管理 12.6.1 Struts、Spring和...
3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...
3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...
为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 4.3. 内置 Resource 实现 4.3.1. UrlResource 4.3.2. ClassPath...