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

10_基本映射标签和属性介绍_1

阅读更多

21_22_一对多关联映射_单向_1、2 v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} p.MsoHeader, li.MsoHeader, div.MsoHeader {margin:0cm; margin-bottom:.0001pt; text-align:center; mso-pagination:none; tab-stops:center 207.65pt right 415.3pt; layout-grid-mode:char; border:none; mso-border-bottom-alt:solid windowtext .75pt; padding:0cm; mso-padding-alt:0cm 0cm 1.0pt 0cm; font-size:9.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} p.MsoFooter, li.MsoFooter, div.MsoFooter {margin:0cm; margin-bottom:.0001pt; mso-pagination:none; tab-stops:center 207.65pt right 415.3pt; layout-grid-mode:char; font-size:9.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no; mso-footnote-separator:url("21_22_一对多关联映射_单向_1、2.files/header.htm") fs; mso-footnote-continuation-separator:url("21_22_一对多关联映射_单向_1、2.files/header.htm") fcs; mso-endnote-separator:url("21_22_一对多关联映射_单向_1、2.files/header.htm") es; mso-endnote-continuation-separator:url("21_22_一对多关联映射_单向_1、2.files/header.htm") ecs;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} -->

21_22_ 一对多关联映射 _ 单向 _1 2

 

例子:

Student.java Classes.java Student.hbm.xml Classes.hbm.xml ExportDB.java HibernateUtils.java one2many.java

 

hihernate 一对多关联映射(单向 Classes----->Student

 

t_classes

id     |    name

1     |   尚学堂

t_student

id     |    name     |   classesid

1      |   10        |     1

2      |   祖儿        |     1

 

 

 

 

 

 

 

 

 

 

 

 

 


一对多关联映射利用了多对一关联映射原理

 

多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一

一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多

 

也就是说一对多和多对一的映射策略是一样的,只是站的角度不同

 

在一一端维护关系的缺点:

       * 如果将 t_student 表里的 classesid 字段设置为非空,则无法保存

       * 因为不是在 student 这一端维护关系,所以 student 不知道是哪个班的,

         所以需要发出多余的 update 语句来更新关系

 

一对多和多对一关系,这两个没多少区别,都是在 的这边加上外键指向 的这边,

主要的区别是:

如果维护的是多对一,当加载 ( 多个学生 ) 的时候,它能把 ( 多个学生对应的那个一个班级 ) 加载进来 ;

如果维护的是一对多,当加载 ( 一个班级 ) 的时候,它能把 ( 一个班级里含有的多个学生 ) 加载进来 ;

 

例子: Student.java 代码

package com.bjsxt.hibernate;

 

public class Student {

    private int id ;

    private String name ;

   

    public int getId() {

       return id ;

    }

    public void setId( int id) {

       this . id = id;

    }

    public String getName() {

       return name ;

    }

    public void setName(String name) {

       this . name = name;

    }

}

Classes.java 代码

package com.bjsxt.hibernate;

 

import java.util.Set;

 

public class Classes {

    private int id ;

    private String name ;

    private Set studentes ;

   

    public int getId() {

       return id ;

    }

    public void setId( int id) {

       this . id = id;

    }

    public String getName() {

       return name ;

    }

    public void setName(String name) {

       this . name = name;

    }

    public Set getStudentes() {

       return studentes ;

    }

    public void setStudentes(Set studentes) {

       this . studentes = studentes;

    }  

}

Student.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 >

    < class name = "com.bjsxt.hibernate.Student" table = "t_Student" >

       < id name = "id" >

           < generator class = "native" />

       </ id >

       < property name = "name" />

    </ class >

</ hibernate-mapping >

Classes.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 >

    < class name = "com.bjsxt.hibernate.Classes" table = "t_Classes" >

       < id name = "id" >

           < generator class = "native" />

       </ id >

       < property name = "name" />

      

       <!-- Student 实体里没有 classesid 字段,所以在这里加上个外键 classesid, 作为外键指向 Student -->

       < set name = "studentes" >

           < key column = "classesid" />

           < one-to-many class = "com.bjsxt.hibernate.Student" />

       </ set >

    </ class >

</ hibernate-mapping >

HibernateUtils.java 代码

package com.bjsxt.hibernate;

 

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

 

public class HibernateUtils {

 

    private static SessionFactory factory ;

   

    static {

       try {

           Configuration cfg = new Configuration().configure();

           factory = cfg.buildSessionFactory();

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

   

    public static SessionFactory getSessionFactory() {

分享到:
评论

相关推荐

    Hibernate教程16_集合映射

    1. **、、&lt;map&gt; 和 **:这些元素是Hibernate用于映射不同类型的集合的标签。`&lt;set&gt;`用于映射无序且不重复的集合,如Java的HashSet;`&lt;list&gt;`用于映射有序的集合,如ArrayList,元素可以通过索引访问;`&lt;map&gt;`则用于...

    JSP自定义标签动态属性支持

    `AbstractTag.java`可能是另一个抽象基类,它可能不涉及具体的属性映射,而是提供了一些通用的标签处理逻辑,比如初始化和清理资源等。 在自定义标签的实际实现中,我们可以继承`AbstractMapTag`,然后在`...

    mybatis关联映射源码

    通过深入理解并实践`chapter10_oneToOne`、`chapter10_oneToMany`和`chapter10_ManyToMany`中的例子,你将能够熟练地在项目中应用这些映射技术,提高代码的可读性和可维护性。记得仔细研究每个示例,掌握它们的配置...

    MyBatis学习-映射文件标签篇(select、resultMap).rar_alikeett_blueaod_mybatis

    本资料主要探讨的是MyBatis中的两个关键标签:`select`和`resultMap`,这两个标签在映射文件中起着至关重要的作用。 `select`标签是MyBatis用于执行SQL查询的标签,它允许我们将SQL语句嵌入到XML配置文件中。`...

    Java实训教程 Java软件开发实战 Java开发框架介绍 SpringMVC_8_标签库 共39页.pptx

    **SpringMVC_2_HelloWorld**(共19页):这部分内容通过简单的HelloWorld示例介绍了SpringMVC的基本工作流程,包括控制器(Controller)的创建、视图解析器(ViewResolver)的配置、请求映射(@RequestMapping)等...

    AB PLC RSLogix5000中如何创建标签并使用标签进行编程?.docx

    在罗克韦尔AB PLC RSLogix5000编程环境中,标签是极其重要的组成部分,它们作为数据存储和传输的媒介,使得程序的编写更加高效和可读。本篇文章将详细解析如何在RSLogix5000中创建标签以及如何使用标签进行编程。 ...

    SQL语句映射文件

    2. **SQL语句映射**:在映射文件中,可以通过`&lt;select&gt;`、`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`等标签来定义具体的SQL操作。这些标签内部包含了执行的SQL语句以及一些相关的属性,如参数类型、返回类型等。 3. **...

    MyBatis的关联映射

    同样有外键关联和主键关联两种方式,其基本原理与一对一关系类似,只是`&lt;collection&gt;`标签通常用于处理集合类型的属性。 ### 多对多关系映射 多对多关系如学生和课程的对应关系,需要通过一个中间表来建立联系。在...

    hibernate map 集合映射

    在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象的集合属性上,以便更好地管理和操作数据。这篇文章将深入探讨Hibernate中的集合映射机制,包括其基本概念、类型以及如何在实际开发中进行...

    html标签,属性大全.pdf

    20. **列属性标签**:`&lt;col&gt;` 和 `&lt;colgroup&gt;` 用于定义表格列的样式和属性。 21. **定义列表标签**:`&lt;dd&gt;` 和 `&lt;dt&gt;` 分别表示定义列表中的描述和术语。 22. **删除文本标签**:`&lt;del&gt;` 用于标记被删除的文本,...

    hibernate 映射模板

    映射模板(HBM文件)的基本结构通常包含以下元素: 1. `&lt;hibernate-mapping&gt;`:根元素,声明这是个Hibernate映射文件。 2. `&lt;class&gt;`:表示一个Java实体类,它对应于数据库中的一个表。需要指定类名(`name`属性)...

    mybatis_02 输入输出映射 动态sql 对象关系映射 整合

    它可以自定义字段和属性之间的映射关系,支持一对多和多对一等复杂的数据结构映射。 **示例:** 查询全部订单数据的需求,可以通过以下步骤实现: 1. 创建订单POJO类`Order`。 2. 创建订单Mapper接口`OrderMapper`...

    MyBatis一对多映射

    一、一对多映射的基本概念 在数据库中,如果一个表的记录(主表)与另一个表的记录(从表)之间存在多个对应关系,就形成了一对多的关系。在MyBatis中,我们可以通过配置XML映射文件或者注解来实现这种映射,以便在...

    Myeclipse生成Hibernate映射文件

    `&lt;class&gt;`标签定义了映射的Java类,`&lt;id&gt;`标签用于标识主键,`&lt;property&gt;`标签则对应于Java类的属性和数据库表的列。你需要根据实体类的实际情况,手动修改或添加这些元素,以确保映射的准确性。 除了手动编辑,...

    Mybatis-03 SQL映射文件

    其中,`namespace`属性是映射器接口的全限定类名,用于关联映射器接口和XML文件。 2. **增删改查操作** - **Insert**:插入数据,使用`&lt;insert&gt;`标签定义SQL语句,并通过`id`属性指定唯一的操作标识。 - **...

    hibernate array 数组映射

    1. 当数据库表的一列数据需要在Java对象中表示为数组时,例如存储一组标签或分类。 2. 对于有序的数据集合,数组可以保持其顺序,而List在某些情况下可能会丢失顺序。 3. 当你需要高效地访问和修改数据,且数据量...

    hibernate实体映射文件字段设置默认值

    这里的`&lt;class&gt;`标签表示映射到特定的Java类,其属性`name`指定了对应的Java类全名,而`table`和`schema`分别指定了数据库表名和模式名。 #### 设置默认值的方法 要设置字段的默认值,可以利用`&lt;property&gt;`标签内...

    html标签属性大全.pdf

    8. **`body`标签属性**:`&lt;body&gt;`标签包含页面的主要内容,其属性包括`bgcolor`(背景颜色),`background`(背景图像),`bgproperties`(背景图像固定与否),`text`(页面文字颜色),`link`(未激活链接颜色),...

    struts1.2基本标签使用视频

    总之,"Struts1.2基本标签使用视频"是一份对初学者和有一定经验的开发者都非常有帮助的学习资源。它将帮助你更好地理解和掌握Struts1.2框架中的核心标签,提高你在Java Web开发中的技能。通过深入学习和实践,你将...

    ibatis 一对多关系映射

    在`User`类的映射文件中,我们可以定义一个`resultMap`,它包含了`User`的基本属性以及一个嵌套的`orderList`,表示用户的所有订单: ```xml &lt;id property="id" column="user_id" /&gt; &lt;!-- 其他User属性映射 --&gt; ...

Global site tag (gtag.js) - Google Analytics