- 浏览: 150268 次
- 性别:
- 来自: 彩虹之巅
最新评论
-
qq970836452:
[url][img][url][url][img][url][ ...
spring中配置声明式事务的几种方式 -
qq970836452:
[img][/img]
spring中配置声明式事务的几种方式 -
qq970836452:
[*]
spring中配置声明式事务的几种方式 -
qq970836452:
[img]||[/img][img][/img][url][u ...
spring中配置声明式事务的几种方式 -
qq970836452:
[img][/img][img][/img][url][url ...
spring中配置声明式事务的几种方式
在hibernate3中,one-to-one关联主要通过3种方式来实现:
(1)共享的关联主键
(2)主外键关联
(3)通过关联表关联
其中,第一和第二中关联很常见,第三种关联因为效率关系很少使用。
下面是通过关联表关联实现one-to-one的简单例子,通过关联表实现one-to-one在网上例子非常少,这个程序我也是试了N长时间才搞定的:
create table person ( person_id bigint primary key, name varchar(255) not null ); create table address( address_id bigint primary key, country varchar(255), city varchar(255), street varchar(255) ); create table passport ( passport_id bigint primary key, num varchar(255) ); create table person_mid ( person_id bigint, address_id bigint, passport_id bigint, unique(person_id), primary key(address_id, passport_id), foreign key (person_id) references person(person_id), foreign key (address_id) references address(address_id), foreign key (passport_id) references passport(passport_id) );
package domain; import java.io.Serializable; public class Person implements Serializable { private Long id; private String name; private Address address; private Passport passport; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public Passport getPassport() { return passport; } public void setPassport(Passport passport) { this.passport = passport; } }
package domain; import java.io.Serializable; public class Address implements Serializable { private Long id; private String country; private String city; private String street; private Person person; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } }
package domain; import java.io.Serializable; public class Passport implements Serializable { private Long id; private String num; private Person person; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNum() { return num; } public void setNum(String num) { this.num = num; } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="domain.Person" table="person" dynamic-insert="true" > <id name="id" column="person_id"> <generator class="sequence" > <param name="sequence">seq</param> </generator> </id> <property name="name" column="name" not-null="true" /> <join table="person_mid" optional="true" > <key column="person_id" /> <many-to-one name="address" column="address_id" not-null="true" unique="true" cascade="all" /> <many-to-one name="passport" column="passport_id" not-null="true" unique="true" cascade="all" /> </join> </class> </hibernate-mapping>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="domain.Address" table="address" dynamic-insert="true" > <id name="id" column="address_id"> <generator class="foreign" > <param name="property">person</param> </generator> </id> <property name="country" column="country" not-null="true" /> <property name="city" column="city" not-null="true" /> <property name="street" column="street" not-null="true" /> <join table="person_mid" optional="true"> <key column="address_id" /> <many-to-one name="person" column="person_id" not-null="true" unique="true" insert="false" update="false" /> </join> </class> </hibernate-mapping>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="domain.Passport" table="passport" dynamic-insert="true" > <id name="id" column="passport_id"> <generator class="foreign" > <param name="property">person</param> </generator> </id> <property name="num" column="num" not-null="true" /> <join table="person_mid" optional="true"> <key column="passport_id" /> <many-to-one name="person" column="person_id" not-null="true" unique="true" insert="false" update="false" /> </join> </class> </hibernate-mapping>
发表评论
-
spring中配置声明式事务的几种方式
2009-06-30 18:31 2903(1)通过TransactionProxyFactoryBea ... -
spring中AOP代理的几种方式
2009-06-24 14:45 4734部分例子摘自 spring in action (1)使用P ... -
hibernate实战(第2版)读书笔记(一)
2009-05-28 09:38 3071最近时间重读hibernate实战(第2版),哈哈,很长时间不 ... -
SWT中使用Opengl画圆的例子
2009-03-09 22:26 5379import org.eclipse.opengl.GL; i ... -
Windows下VC6配置Opengl开发环境
2009-03-05 08:14 4802最近需要了解下Opengl,于是开始鼓捣Opengl,从网上下 ... -
用SWT写的简单的通讯录
2009-01-19 12:32 1954用SWT写了个简单的通讯录,管理自己的手机号, -
用SWT做的简单的文件浏览器
2009-01-03 17:55 2881一个用swt做的简单的文件浏览器, package hell ... -
hibernate3 one-to-one总结之主外键关联
2008-11-08 19:21 2601在hibernate3中,one-to-one关联主要通过3种 ... -
hibernate3 one-to-one总结之共享的关联主键
2008-11-08 19:14 2381在hibernate3中,one-to-one关联主要通过3种 ... -
hibernate3中使用hsql的sequence生成主键
2008-10-25 09:58 3067今天,想尝试下使用hsql的sequence来作为hibern ... -
js dtree的简单应用
2008-09-25 19:54 3362前几天在javaeye上看到有这样一个帖子(http://ww ... -
怎么样让ibatis原生支持C3P0
2008-09-03 08:02 2375昨天,在javaeye上看到一个帖子,http://www.i ... -
在IE和Firefox都通用的弹出对话框
2008-08-15 06:44 4444test.html <!DOCTYPE html PUB ... -
JAVA版 俄罗斯方块
2008-07-26 11:00 3779把以前写的程序拿出来晒晒 -
JAVA版 连连看
2008-07-07 20:26 6383以前写的连连看,大家共同玩下。 -
彻底解决超链接提交中文乱码问题
2008-04-26 11:08 27034在网页中的超链接,例如 <a href="/s ... -
使用JAVA在JSP中生成饼图
2008-03-25 16:27 3843通过在服务器端生成图片 然后这样在页面中的图片可以真正的跨浏览 ... -
JSP 分页
2008-02-26 12:59 2891package examples; import java. ... -
设计模式之 Visitor
2007-12-12 14:27 1411package designpattern; pub ... -
设计模式之 Intercepting Filter
2007-12-12 14:13 2399package filter; public int ...
相关推荐
总结,Hibernate的one-to-many和many-to-one关系映射是数据库对象关联的基础,理解和熟练掌握它们能帮助开发者更高效地设计和实现Java持久化层。通过合理的配置和实践,可以构建出高性能、易于维护的数据访问层。
在双向关联中,一方(通常是one-to-many的一方)需要通过`@OneToMany(mappedBy="")`来指定关联的另一方的属性,而另一方(many-to-one)则无需指定`mappedBy`,直接使用`@ManyToOne`即可。 4. 外键的处理 在one-to-...
在Hibernate中,一对一唯一外键关联映射可以通过 `<many-to-one>` 标签来配置。例如,以下是Person实体与IdCard实体的一对一唯一外键关联映射配置: ```xml <many-to-one name="idCard" column="card_id...
`<set>`标签里的`<one-to-many>`子标签指定了与之关联的类。 在XML映射文件中,`Student.hbm.xml`包含了`<many-to-one>`元素,表示学生对象引用了一个班级对象,通过`classesid`列连接。而`Classes.hbm.xml`则使用...
《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...
hibernate:one-to-one 的学习小经验
本文将深入探讨Hibernate中一对多(One-to-Many)关系的处理方式,特别是通过外键映射和inverse属性的应用场景。 #### 一对多关系概念 一对多关系在数据库设计中非常常见,它指的是一个实体可以与多个其他实体关联...
在Hibernate中,"one-to-one"(一对一)关联是一种常见的关系映射类型,表示两个实体之间存在一对一的对应关系,就像一个人只能有一个护照,或者一辆车只能属于一个人一样。 一、一对一关系的配置 1. **注解配置**...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念,它用于表示两个实体之间一对一的映射关系。本篇将深入探讨Hibernate 3.2中的一对一关系,以及如何在实际项目中...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
在Hibernate中,这种关系通过中间关联表(也称为连接表或联合表)来实现,该表包含两个实体的主键作为其外键。 二、配置Many-to-Many关系 在Hibernate配置文件(如hibernate.cfg.xml)中,你需要为实体类定义映射...
- **外键存储**:在 `User` 表中,需要有一个字段来存储与之关联的 `Group` 的主键值,通常这个字段被称为外键。在上面的例子中,这个字段是 `group_id`。 - **级联操作**:在多对一关系中,可以通过设置级联选项...
2. **库文件**:包含jar包,如hibernate-core.jar、hibernate-entitymanager.jar等,这些是我们在项目中引入Hibernate时需要用到的依赖库。 3. **文档**:通常包括用户指南、API文档、开发者文档等,这些文档提供了...
在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...
总结,`hibernate-commons-annotations-5.0.1.Final.jar`是Hibernate框架的重要组成部分,通过提供丰富的元数据注解,简化了Java对象与数据库之间的映射工作。对它的源码进行深入学习,不仅能够增强对JPA和Hibernate...
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
- **级联操作**: 支持在实体之间定义级联操作,如删除一个实体时自动删除与之关联的其他实体。 - **延迟加载**: JPA的懒加载机制使得关联的对象只有在真正需要时才从数据库加载,提高性能。 **3. Hibernate JPA ...
使用hibernate-validator 进行校验的jar包,里面包括了基础hibernate-validator-5.0.0.CR2.jar hibernate-validator-annotation-processor-5.0.0.CR2.jar 之外,还包括了el-api-2.2.jar javax.el-2.2.4等项目必不可...
Hibernate稳定版(hibernate-release-5.3.23.Final.zip),Hibernate ORM 是一个为应用程序、库和框架提供对象/关系映射 (ORM) 支持的库。它还提供了 JPA 规范的实现,这是 ORM 的标准 Java 规范。