`

Hibernate:一对一(1)

阅读更多
Hibernate中一对一关联两种处理方式之一:参照表主键参照被参照表主键


POJO对象

被参照对象
public class Person {

private Integer id;
private String name;
private IdCart idCart;


public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IdCart getIdCart() {
return idCart;
}
public void setIdCart(IdCart cart) {
idCart = cart;
}
}


参照对象
public class IdCart {
	
	private Integer id;
	private String userFullTime;
	private Person person;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUserFullTime() {
		return userFullTime;
	}
	public void setUserFullTime(String userFullTime) {
		this.userFullTime = userFullTime;
	}
	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 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.hibernate.domain">

	<class name="Person">
		<id name="id">
			<generator class="native" />
		</id>
		<property name="name"/>
		<one-to-one name="idCart"/>
	</class>
</hibernate-mapping>



<?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 package="cn.itcast.hibernate.domain">

	<class name="IdCart" table="cart">
		<id name="id" unsaved-value="-1">
			<generator class="foreign">
				<param name="property">person</param>
			</generator>
		</id>
		<property name="userFullTime"/>
		<one-to-one name="person" constrained="true"/>
	</class>
</hibernate-mapping>



测试代码:

public class OneToOneTest {

	public static void main(String[] args) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		
		Person person = new Person();
		person.setName("张三");
		
		IdCart iCart = new IdCart();
		iCart.setUserFullTime("29年");
		
		iCart.setPerson(person);
		person.setIdCart(iCart);
		
		session.save(person);
		session.save(iCart);
		
		Person person1 = (Person)session.get(Person.class, 1);
		System.out.println(person1.getName());
		
		//IdCart idCart = person1.getIdCart();
		//System.out.println(idCart.getUserFullTime());
		
		
		tx.commit();
	}

}


注意:不管是否利用关联访问被参照对象,还是参照对象的信息,都会两个表联合查询,输出的sql语句如下:


既是先访问那个对象也一样:
		IdCart idCart = (IdCart)session.get(IdCart.class, 2);
		System.out.println(idCart.getUserFullTime());
		
		Person person2 = idCart.getPerson();
		System.out.println(person2.getName());


Hibernate: 
    select
        person0_.id as id2_1_,
        person0_.name as name2_1_,
        idcart1_.id as id3_0_,
        idcart1_.userFullTime as userFull2_3_0_ 
    from
        Person person0_ 
    left outer join
        cart idcart1_ 
            on person0_.id=idcart1_.id 
    where
        person0_.id=?code]


只是一条查询语句,左外连接{一对一和多对一及一对多查询不同!!!}既是没有输出及没有调用p.getIdCard()也是做外连接!!!!!!!!但是如果只是查询从从表的对象那只是一个简单的查询!!!!!!!! 

  


  
分享到:
评论

相关推荐

    精通Hibernate:Java对象持久化详解.zip

    2. **对象关系映射(ORM)**:详述Hibernate的实体类、注解和XML映射文件,如何定义对象的属性与数据库字段的对应关系,以及如何处理一对多、一对一、多对多等复杂关系。 3. **Session和Transaction管理**:讲解...

    Beginning Hibernate: For Hibernate 5

    - **定义**: Hibernate 是一款流行的开源对象关系映射(ORM)框架,它简化了数据库与 Java 对象之间的交互过程。 - **版本**: 本书针对 Hibernate 5.0 版本进行了更新和介绍,这是在 Java 社区中广泛使用的最新版本...

    精通Hibernate:Java对象持久化技术详解.pdf

    此外,本书还会深入到Hibernate的高级特性,如级联操作、延迟加载、集合映射、多态映射、关联映射(一对一、一对多、多对多)等。这些特性让开发者能够处理复杂的数据结构和业务逻辑。例如,级联操作允许一次操作就...

    精通Hibernate:Java持久化对象技术详解[第二版]

    3. **实体映射**:详述如何使用Hibernate的XML映射文件(hbm.xml)或注解来定义Java类与数据库表之间的映射关系,包括字段映射、关联映射(一对一、一对多、多对多)等。 4. **Session与Transaction**:深入理解...

    精通Hibernate:Java对象持久化技术详解(第2版)源码1

    2. **Chapter 3**: 深入讨论了实体类和数据表的映射,包括实体类的定义,属性与数据库字段的对应,以及一对一、一对多、多对多等关联关系的映射。这部分还可能涉及到了`@Entity`, `@Table`, `@Id`, `@GeneratedValue...

    精通Hibernate:Java对象持久化技术详解

    7. **多对一、一对多、多对多关系映射**:Hibernate支持复杂的关联关系映射,如单向关联、双向关联、自关联等。 8. **继承映射**:允许开发者使用Java的继承结构来设计数据库表,如单表继承和联合继承。 9. **延迟...

    HIBERNATE:Hibernate 学习一--注解方式自动建表

    - `@OneToMany`、`@ManyToOne`、`@OneToOne`、`@ManyToMany`:表示不同类型的关联关系,例如一对多、多对一、一对一和多对多。 3. **配置自动建表**: - 在Hibernate的配置文件(hibernate.cfg.xml)中,可以通过...

    hibernate:java持久化对象详解01

    - 复杂类型映射:包括一对多、多对一、一对一、多对多关系的映射。 - 组合映射:对于复杂对象结构,可以使用组件或集合来映射。 这个系列教程可能涵盖了以上部分或全部内容,并且从01到02逐步深入。从提供的...

    Hibernate学习:单向多对一关联 工程

    本项目“Hibernate学习:单向多对一关联 工程”专注于讲解Hibernate中的单向多对一关联映射,这是数据库设计中常见的关系类型,尤其在处理具有层次结构的数据时。 单向多对一关联指的是在一个实体类中有一个引用,...

    精通 Hibernate:Java 对象持久化技术详解(第2版

    同时,关联关系如一对一、一对多、多对一、多对多也能通过@OneToOne、@OneToMany、@ManyToOne和@ManyToMany进行定义。 3. Hibernate配置:学习如何配置Hibernate,包括hibernate.cfg.xml文件的编写,数据库连接参数...

    Hibernate ORM - 一对一连接表关联关系

    标题"Hibernate ORM - 一对一连接表关联关系" 提示我们,这里主要讨论的是Hibernate ORM框架在处理数据库中一对一(One-to-One)关联映射的方法。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者用...

    Hibernate一对一

    **标题:“Hibernate一对一”** **描述:** 这篇文章主要探讨了Hibernate框架中的一对一关系映射,这是一种在数据库设计中常见的关联方式。作者通过在博客中分享,详细讲解了如何在Java应用程序中使用Hibernate实现...

    Hibernate:用户注册、查询用户信息、用户删除、用户修改功能.zip

    MyEclipse是一款强大的Java EE集成开发工具,它提供了对Hibernate的支持,可以方便地进行配置、调试和运行Hibernate应用。 在【压缩包子文件的文件名称列表】:“1-hibrtnate-01”中,我们可以推测这个文件可能是...

    hibernate一对多项目

    本项目“hibernate一对多项目”旨在演示如何在JavaWeb应用中使用Hibernate处理一对多的关系映射。这里我们将深入探讨 Hibernate 的一对多关系、配置以及在实际项目中的应用。 首先,一对多关系在数据库中很常见,...

    Hibernate双向一对多经典实例

    **标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...

    Hibernate 一对一

    **标题:“Hibernate 一对一”** **一、Hibernate 概述** Hibernate 是一款强大的 Java 开源对象关系映射(ORM)框架,它简化了数据库与 Java 应用程序之间的交互。ORM 解决了 Java 对象与 SQL 数据库之间的类型不...

    Hibernate:java对象持久化技术详解

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以...

    Hibernate教程-超详细

    Hibernate是一个开放源代码的对象关系映射框架,它对 JDBC进行了非常轻量级的对象封装,它将POJO类与数据库表建立映射关系,是一个全自动的ORM框架,hibernate可以自动生成SQL语句,自动执行。Hibernate可以应用在...

    hibernate2.1相关jar包

    这里的"hibernate2.1相关jar包"包含了使用Hibernate 2.1版本所需的一系列核心库文件,使得开发者能够实现对数据库的便捷操作。 在Java开发中,JAR(Java Archive)文件是一种归档格式,用于打包类库、资源文件等,...

    Hibernate A Developer‘s Notebook教材

    11. 关联管理:学习如何处理一对一、一对多、多对一和多对多的关系映射,包括懒加载和立即加载策略。 12. 高级特性:包括级联操作、事件监听、代理对象、状态转换等。 13. 性能优化:探讨如何通过调整配置、优化...

Global site tag (gtag.js) - Google Analytics