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="**"来重命名。

  有了以上的必备条件后,之后的博客就开始以学生管理系统为例分析七种的映射关联。
  
posted @ 2017-02-18 23:30  键盘手小陈  阅读(151)  评论(0编辑  收藏  举报