zoukankan      html  css  js  c++  java
  • Hibernate的七种映射关系之基本映射

    说到关系,在这个世界无处不在,我们必须以某个关系的节点存在在这个世界网中。比如父子关系,师生关系,上下属关系甚至是危险关系。数据也是一样的,它的存在必为某其他节点做准备。

      Hibernate有七种映射关联,方向分为单向或双向,主要根据需求分析多和一的关联,分别为:

    1、单向1-1
    
    2、单向N-1
    
    3、单向1-N
    
    4、单向N-N
    
    5、双向1-N
    
    6、双向N-N
    
    7、双向1-1
    
      在学习这七种映射关联之前,首先要了解基本映射的一些知识和必备条件。
      一、必备实体类,以*.java命名。
        如Student.java文件
    
    复制代码
     1 public class Student {
     2     private int id;
     3     private String name;
     4     public int getId() {
     5         return id;
     6     }
     7     public void setId(int id) {
     8         this.id = id;
     9     }
    10     public String getName() {
    11         return name;
    12     }
    13     public void setName(String name) {
    14         this.name = name;
    15     }
    16     
    17 }
    复制代码
    
    

     

     
    
    

     

      二、必备配置文件,以*.hbm.xml命名。
      了解hibernate.cfg.xml配置文件:
      1、文档开头引入dtd文件,用来约束xml的命名为其制定了一套标准(提供了一套标签,好吧我承认这种理解有点土)。
      
    <!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    

       2、配置数据库以及映射类的地址映射信息。

     

    复制代码
     1 <hibernate-configuration>
     2     <session-factory>
     3         <!-- 数据库配置 -->
     4         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
     5         <property name="hibernate.connection.url">jdbc:mysql://localhost:3307/hibernate_one2many</property>
     6         <property name="hibernate.connection.username">root</property>
     7         <property name="hibernate.connection.password">123456</property>
     8         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
     9         <property name="hibernate.show_sql">true</property>
    10          
    11         <!-- 映射类的地址映射信息 -->
    12         <mapping resource="com/juyahong/hibernate/Student.hbm.xml"/>
    13         <mapping resource="com/juyahong/hibernate/Classes.hbm.xml"/>
    14     </session-factory>
    15 </hibernate-configuration>
    复制代码

     

      三、映射文件,以*.hbm.xml命名。
      如:Student.hbm.xml
      通常我们的实体类可以映射成表,采用<class>标签映射。比如:
    复制代码
    1 <hibernate-mapping package="com.juyahong.hibernate">
    2     <class name="Student" table="t_student">
    3         <id name="id">
    4             <generator class="native"/>
    5         </id>
    6         <property name="name" length="30"/>
    7     </class>
    8 </hibernate-mapping>
    复制代码
      如上面代码可知,实体类中的普通属性即不包括集合、自定义类和数组的属性,映射成了表字段,采用<property>标签映射。需要注意的是实体类的命名或属性不能和数据库的关键字重复,否则会出错,之前做高校平台-基础系统的时候就出现了这个问题。可以通过table="**" 或 column="**"来重命名。
    
      有了以上的必备条件后,之后的博客就开始以学生管理系统为例分析七种的映射关联。
    
      
  • 相关阅读:
    Expedition(POJ 2431)
    spring异步@Async原理和注意问题
    springBoot事件
    spring定时任务原理
    BeanFactory和FactoryBean的区别
    Spring容器启动流程——源码阅读分析
    spring循环依赖
    spring相关的问题和原因分析
    zookeeper原理
    zookeeper的使用
  • 原文地址:https://www.cnblogs.com/chenny3/p/10226212.html
Copyright © 2011-2022 走看看