`
wangtong40
  • 浏览: 253039 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate 一对一关联 (多对一的曲线实现)

    博客分类:
  • ORM
阅读更多
xml 代码
  1. CREATE TABLE AUTHOR   
  2. (   
  3.     id int(20) NOT NULL,   
  4.     name varchar(50) default NULL,   
  5.     PRIMARY KEY (id)   
  6. );   
  7.   
  8. CREATE TABLE TOPIC   
  9. (   
  10.     id int(20) NOT NULL,   
  11.     name varchar(50) default NULL,   
  12.     userId int(20) default NULL,   
  13.     PRIMARY KEY(id)   
  14. );   
  15.   
  16. ALTER TABLE TOPIC ADD CONSTRAINT FK_TOPIC_AUTHOR FOREIGN KEY userId REFERENCES AUTHOR   
xml 代码
  1. <hibernate-mapping package="com.wangtong.hibernate.one2one.pojo">  
  2.     <class name="Author" dynamic-update="true" dynamic-insert="true" table="Author">  
  3.         <id name="id" type="integer" column="id">  
  4.             <generator class="identity" />  
  5.         </id>  
  6.         <property name="name" column="username" type="string" not-null="true" length="50" />  
  7.         <one-to-one name="topic" class="Topic" cascade="none" outer-join="true" property-ref="topic"/>  
  8.     </class>  
  9. </hibernate-mapping>    
java 代码
  1. public class Author {   
  2.     private int id;   
  3.     private String name;   
  4.     private Topic topic; //做一对一的双向连接   
  5.     public Topic getTopic() {   
  6.         return topic;   
  7.     }   
  8.     public void setTopic(Topic topic) {   
  9.         this.topic = topic;   
  10.     }      
  11.     public int getId() {   
  12.         return id;   
  13.     }   
  14.     public void setId(int id) {   
  15.         this.id = id;   
  16.     }   
  17.     public String getName() {   
  18.         return name;   
  19.     }   
  20.     public void setName(String name) {   
  21.         this.name = name;   
  22.     }   
  23. }   
xml 代码
  1. <hibernate-mapping package="com.wangtong.hibernate.one2one.pojo">  
  2. <class name="Topic" dynamic-update="true" dynamic-insert="true" table="Topic">  
  3. <id name="id" type="integer" column="id">  
  4. <generator class="identity" />  
  5. </id>  
  6. <property name="name" column="username" type="string" not-null="true" length="50" />  
  7. <!-- 一对一关系连接 -->  
  8. <many-to-one name="author" class="Author" column="userid" unique="true" cascade="all" outer-join="true"/>    
  9. </class>  
  10. </hibernate-mapping>  
java 代码
  1. public class Topic {   
  2.     private int id;   
  3.     private String name;   
  4.     private Author author;   
  5.     public Author getAuthor() {   
  6.         return author;   
  7.     }   
  8.     public void setAuthor(Author author) {   
  9.         this.author = author;   
  10.     }   
  11.     public int getId() {   
  12.         return id;   
  13.     }   
  14.     public void setId(int id) {   
  15.         this.id = id;   
  16.     }   
  17.     public String getName() {   
  18.         return name;   
  19.     }   
  20.     public void setName(String name) {   
  21.         this.name = name;   
  22.     }   
  23. }   
分享到:
评论

相关推荐

    hibernatejar包

    - **关系映射(Association)**: 包括`@OneToOne`, `@OneToMany`, `@ManyToOne`, 和 `@ManyToMany`,它们分别对应一对一、一对多、多对一和多对多的关系映射。 - **集合映射(Collection)**: `@ElementCollection...

    Hibernate与 MyBatis的比较

    2. **学习曲线**:Hibernate的学习曲线较陡峭,因为它涉及的概念更多,如实体、会话、查询语言等。而MyBatis相对简单,开发者只需了解基本的SQL语法即可。 3. **性能**:由于MyBatis不进行过多的抽象,其性能通常...

    Hibernate实战(第2版).zip

    此外,Hibernate还支持复杂类型映射,如一对多、多对一、多对多关系,以及级联操作等。 其次,Session是Hibernate的主要工作单元,它是对象与数据库交互的桥梁。开发者可以通过Session的`save()`, `update()`, `...

    iBatis和Hibernate的区别

    - Hibernate允许开发者定义对象模型,包括对象间的继承、关联等复杂关系,并能够自动管理这些对象的状态变化。 - Hibernate提供了高度抽象的API,减少了开发者对底层SQL语法的需求。 - **应用场景**: - 当项目的...

    hibernateTools

    Hibernate Tools 是一个强大的开发工具,它是Hibernate框架的...通过逆向工程、元数据编辑、DDL生成等功能,开发者可以快速地构建和维护数据层代码,同时对Oracle数据库的中文支持也增强了其在多语言环境下的实用性。

    Hibernate的详解

    - **学习曲线较陡峭**: 对于初学者来说,理解ORM和Hibernate的工作原理需要一定时间。 - **效率问题**: 虽然有缓存机制,但过度使用ORM可能导致性能下降。 - **SQL灵活性降低**: 直接编写SQL可以获得更高的控制力,...

    hibernate_annotation_api

    - `@OneToOne`:表示一对一的关联关系,通常用在两个实体之间有唯一对应关系的情况。 - `@OneToMany`:表示一对多的关联关系,一个实体可以对应多个其他实体。 - `@ManyToOne`:表示多对一的关联关系,多个实体对应...

    hibernate-JPA

    Hibernate 是一个流行的开源 ORM 框架,也是 JPA 的实现之一。它可以作为 JPA 提供者,意味着开发者可以使用 Hibernate 的功能来实现 JPA 接口。Hibernate 提供了丰富的功能集,包括但不限于: - **自动代码生成**...

    Ibatis和Hibernate的分析比较

    3. 学习曲线:Hibernate的全面性使得学习成本较高,而Ibatis的“半自动化”特性使得学习相对简单,但可能需要开发者有较强的SQL功底。 4. 缓存和事务管理:两者都支持缓存和事务,但Hibernate内置了更强大的管理机制...

    hibernate详解

    6. **实体关系映射**: Hibernate支持多种关系映射,如一对一、一对多、多对一、多对多,以及继承关系映射。 ### 3. Hibernate使用步骤 1. **配置环境**: 添加Hibernate依赖库,配置hibernate.cfg.xml,设置数据库...

    ibatis 与hibernate之间的比较优点和缺点

    2. **不支持自动关联:**当需要处理一对多或多对一的关系时,iBatis 需要手动编写额外的代码来实现关联。 3. **缺乏高级特性:**相较于 Hibernate 提供的高级特性如懒加载、缓存管理等,iBatis 在这些方面相对简单。...

    基于Struts和Hibernate和Spring的J2EE架构研究

    作者通过对三个框架的深入分析,提出了一种集成方案,并通过一个网上购物系统的实例展示了该架构的具体实现。 #### Struts、Hibernate与Spring框架概述 ##### 1.1 Web开发框架Struts Struts是一个基于Java ...

    IBatisVSHibernate

    2. **学习曲线**:Hibernate的学习曲线相对较陡,因为它涉及的对象关系映射和查询语言较为复杂;而IBatis相对简单,更易于理解和上手。 3. **性能**:由于Hibernate的自动对象管理,可能会产生额外的数据库交互,...

    hibernate.jar包

    - SessionFactory:会话工厂,是线程安全的,一个应用程序只需要一个SessionFactory,它可以创建多个Session。 - Session:会话,用于与数据库交互,是线程不安全的,每次数据库操作都需要新的Session实例。 - ...

    hibernate-annotations-3.4.0.GA+hibernate-distribution-3.3.2.GA-dist

    Hibernate 3.3.2是 Hibernate框架的一个稳定版本,它包含了一系列增强和改进。这一版本的亮点包括: 1. 支持JPA 1.0:Hibernate 3.3.2不仅支持其自身的API,还完全兼容Java Persistence API (JPA),为开发者提供了...

    hibernate 学习笔记

    1. **一对一(OneToOne)**: 一个实体对应另一个实体的一条记录,通常通过外键关联。 2. **一对多(OneToMany)**: 一个实体对应多个实体的记录,使用@OneToMany注解。 3. **多对一(ManyToOne)**: 多个实体对应...

    Hibernate学习教程和笔记

    - **一对一关联**: 可通过外键或主键关联,支持单向或双向。 - **多对一关联**: 通过外键映射,支持单向或双向,关注级联操作。 - **一对多关联**: 实现方式与多对一相反,同样支持单向或双向。 - **组件映射**: 将...

    Hibernate In Action

    ORM技术不仅包括基本的属性映射,还涵盖了复杂的对象关系映射,如一对一、一对多、多对多关系。Hibernate提供了多种策略来处理这些关系,包括嵌入式对象、集合类型、联合子类等,使得ORM的应用更加灵活和强大。 综...

    ibatis与hibernate的区别

    - **强大的ORM支持:** Hibernate是一个全功能的ORM框架,它提供了一整套解决方案来实现对象关系映射。开发者可以通过简单的配置文件或注解定义对象和数据库表之间的映射关系。 - **自动化的SQL生成:** Hibernate...

Global site tag (gtag.js) - Google Analytics