hibernate

作者: 闫子扬 | 来源:发表于2017-10-12 16:27 被阅读0次

构建hibernate项目

  1. 导入相关jar包
  2. 配置hibernate.cfg.xml
    1. 导头。hibernate-mapping-3.0.dtd

      <!DOCTYPE hibernate-mapping
      SYSTEM
      "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >


<hibernate-mapping package="cn.com.pojo">

<class name="User" table="userinfo" dynamic-update="true">

<id name="userId" column="userId">

<generator class="native"></generator>


</id>

<property name="username" column="loginname" type="string"></property>

<property name="password"></property>
<property name="regDate" type="java.sql.Date"></property>
</class>
</hibernate-mapping>

    <!-- 联合主键 -->
    <composite-id name="pk">
        <key-property name="sid" column="sid"></key-property>
        <key-property name="cid" column="cid"></key-property>
    </composite-id>

    <!-- 一对多配置 name是属性名称 -->
    <!-- 配置双向一对多关联或双向多对多关联中 由谁来管理双方的关联关系 设置true由对方管理 -->
    <!-- cascade会级联更新或删除。但是没有特殊情况,一般不设置。 -->
    <set name="students" lazy="extra" inverse="true">
        <!-- 关联的数据表外键 -->
        <key column="classid"></key>
        <!-- 关联的数据类型 -->
        <one-to-many class="Student"/>
    </set>

    <!-- 多对多配置  name是关联属性名称 table是第三张中间表名字-->
    <set name="students" table="scoretbl">
        <key column="cid"></key>
        <many-to-many class="Student" column="sid"></many-to-many>
    </set>

    <!-- 多对一配置  name表示的是类中属性名 column是关联的外键列的名称 class是关联类型 -->
    <many-to-one name="classTbl" column="classid" class="ClassTbl" lazy="false"></many-to-one>
    <!-- 多对多配置  name是关联属性名称 table是第三张中间表名字-->
    <set name="courses" table="scoretbl">
        <key column="sid"></key>
        <many-to-many class="Course" column="cid"></many-to-many>
    </set>

单例设计模式:保证应用中只有一个相关对象可用。往往是管理者。

  1. 饿汉模式
  2. 懒汉模式
  • 私有的静态属性。
  • 私有的构造函数。从外部无法new对象。
  • 对外提供静态的访问方法,返回可用对象。
  • 方法加多线程控制synchronized。防止多线程并发访问。

实体对象关联映射(ORM-mapping)

  • 1 一对一 <one-to-one>
  • 2 一对多 <set> <one-to-many> </set> / 多对一 <many-to-one>
  • 3 多对多 <set> <many-to-many> </set>

一:查询方式

  1. 立即查询 lazy="false";

  2. 延时检索 lazy="true";

  3. 表连接检索 fetch="select"; 近似理解为立即检索
    fetch="join"; 采用左外连接检索

    多表连接查询

    1. select [] from tbl1 t1,tbl2 t2 where t1.id1=t2.id2
    2. 左外连接查询,可将左表中没有关联的记录查出
      1. select st.sname,ct.classname from classtbl ct left join studenttbl st on st.classid=ct.classid

二:控制反转 invers="true" 由简单的一方去管理,在复杂的一方做这个设置

三:级联 cascade="all/delete/none/update/save" 慎用级联

相关文章

网友评论

      本文标题:hibernate

      本文链接:https://www.haomeiwen.com/subject/wlroyxtx.html