Hibernate 数据库映射 ORM:Object/Relationship Mapping 对象/关系映射

简介ORM:Object/Relationship Mapping  对象/关系映射   实现流程:   1.项目中导入Hibernate相关类包并创建配置文件。Hibernate.cfg.xml(可放在src根目录下):    复制代码           <session-factory>             &nbs
ORM:Object/Relationship Mapping  对象/关系映射
 
实现流程:
 
1.项目中导入Hibernate相关类包并创建配置文件。Hibernate.cfg.xml(可放在src根目录下):   
复制代码
          <session-factory>
               <property name="hibernate.connection.username">root</...>
               <property name="hibernate.connection.password">123</...>
               <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</...>
               <property name="hibernate.connection.url">jdbc:mysql://loaclhost:3306/TABLE?useUnicode=true&amp;characterEncoding=utf-8</...>
               <property name="hibernate.dialect">org.hibernate.dialtct.MySQLDialect</...>
   
               <property name="show_sql">true</...>
               <property name="format_sql">true</...>
               <property name="hbm2ddl.auto">assigned</...>
          </session-factory>
复制代码
 

2.创建持久化类(实体类)(一对多时,在一方添加set集合HashSet用以包含多方,代码略);
 
 
3.创建对应映射文件(实体类到数据库)。Grade.hbm.xml(Hibernate5以上可能需要与实体类放在一个包内):     
复制代码
 <hibernate-mapping>
               <class name="com.entity.Grade" table="GRADES”>
                    <id name="gid" column="SID" type="java.lang.Integer">
                         <generator class="increment"></generator>
                    </id>
                    <property name="gname" type="java.lang.String">
                         <column name="GNAME" length="20"></column>
                    </property>
                    <property name="amount" type="java.lang.Integer">
                         <column name="AMOUNT"></column>
                    </property>
                    <!--     一对多需配置set     -->
                    <set name="student"(Grade中属性,实体类)table="STUDENTS">
                          <key column="gid"></key>
                          <one-to-many class="com.entity.Student"/>
                    </set>
               </class>
 </hibernate-mapping>
复制代码
上图为一对多点一方配置。实现双向配置时,需在多对一对多端同时添加配置<many-to-one>标签
多对一的映射文件配置:
<many-to-one     name="grade"对应属性 class=”com.entity.Grade"  column="grade">
</many-to-one> 
 
关于双向级联的补充:
(1)inverse属性:指定关联关系维护方。在one一方的<set>标签中,表示反转;默认为fasle,表示关联关系由one方维护;
 
保存one方时,one方所包含的many方对象若数据库中不存在,应一同保存,此为级联操作。通过cascade实现。 
(2)cascade属性:all所有操作级联;save-update保存和更新时级联操作;delete删除时级联操作;none不级联操作。 在one 方的<set>标签中或many方的<many-to-one>标签中设置。

 
 
4.在配置文件中添加映射文件路径:
复制代码
          <session-factory>
               ..........
 
               <mapping resource="src/com/entity/Grade.hbm.xml"/>
               <mapping resource="src/com.entity/Student.hbm.xml"/>
          </session-factory>
复制代码
 

5.编写查询操作类:                    //版本不同存在差异4与5
利用configuration创建sessionFactory对象;
通过sessionFactory创建session对象;
通过sessionFactory获取session(openSession方法或getCurrentSession方法);
通过session开启transaction事务(beginTransaction方法);
操作数据库:sesison.save()/get(Student.class,id)/load()/delete();
提交事