您的位置:首页 > 其它

Hibernate的七种映射关系之基本映射

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

  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文件


publicclassStudent{
privateintid;
privateStringname;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}

}







  二、必备配置文件,以*.hbm.xml命名。
  了解hibernate.cfg.xml配置文件:
  1、文档开头引入dtd文件,用来约束xml的命名为其制定了一套标准(提供了一套标签,好吧我承认这种理解有点土)。
  


<!DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">



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

 

<hibernate-configuration>
<session-factory>
<!--数据库配置-->
<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<propertyname="hibernate.connection.url">jdbc:mysql://localhost:3307/hibernate_one2many</property>
<propertyname="hibernate.connection.username">root</property>
<propertyname="hibernate.connection.password">123456</property>
<propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<propertyname="hibernate.show_sql">true</property>

<!--映射类的地址映射信息-->
<mappingresource="com/juyahong/hibernate/Student.hbm.xml"/>
<mappingresource="com/juyahong/hibernate/Classes.hbm.xml"/>
</session-factory>
</hibernate-configuration>


  三、映射文件,以*.hbm.xml命名。
  如:Student.hbm.xml
  通常我们的实体类可以映射成表,采用<class>标签映射。比如:


1<hibernate-mappingpackage="com.juyahong.hibernate">
2<classname="Student"table="t_student">
3<idname="id">
4<generatorclass="native"/>
5</id>
6<propertyname="name"length="30"/>
7</class>
8</hibernate-mapping>


  如上面代码可知,实体类中的普通属性即不包括集合、自定义类和数组的属性,映射成了表字段,采用<property>标签映射。需要注意的是实体类的命名或属性不能和数据库的关键字重复,否则会出错,之前做高校平台-基础系统的时候就出现了这个问题。可以通过table="**"或column="**"来重命名。

  有了以上的必备条件后,之后的博客就开始以学生管理系统为例分析七种的映射关联。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: