Hibernate开发文档

时间:2024-01-13 08:48:14
hibernate配置

映射约束文件

<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

核心配置约束文件

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

实体类映射文件配置信息

<hibernate-mapping>
    <!-- 让实体类和数据库表进行对应 -->
    <class name="com.qixinginc.entity.User" table="tbl_user">
        <!-- 让属性和字段进行对应 -->
            <id name="uid" column="uid">
            <!-- 设置数据库主键id生成策略 -->
            <generator class="native"></generator>
       </id>
       <property name="uname" column="uname"></property>
    </class>
</hibernate-mapping>

数据库核心配置文件

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>

Hibernate可选配置文件

> 输出sql语句到控制台
<property name="show_sql">true</property>

> 格式化sql语句
<property name="format_sql">true</property>

> 自动创建数据库表和字段
<property name="hbm2ddl.auto">update</property>

> 设置数据库方言
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

> 绑定本地Session线程
<property name="hibernate.current_session_context_class">thread</property>

级联添加

cascade="save-update"

级联删除

cascade="delete"

inverse属性

  • [ 解决方案] 一对多放弃一那方的外键维护
false(不放弃维护)/true(放弃维护)
hibernate查询方式

对象导航查询

  • 查询老师名下所有的学生

    Teacher teacher=session.get(Teacher.class,1);    # 查询ID为1的老师
    Set<Student> stuSet=teacher.getSetStudent();     # 查询老师名下所有的学生

OID查询

  • 根据id进行查询,返回对象
Teacher teacher=session.get(Teacher.class,1);    # 查询ID为1的老师,返回对象

HQL查询

  • SQL是查询表和字段
  • HQL是查询实体类对象和属性
Query查询对象

from User       # 查询所有
select uname from User      # 投影查询

query.setFirstResult(0);    # 从第几条记录开始
query.setMaxResults(5);     # 每页显示的记录数

query.uniqueResult();       # 返回唯一结果的值

HQL多表查询方式

  1. 内连接
from Teacher t inner join t.SetStudent      # 返回数组形式
  1. 左外连接
from Teacher t left outer join t.SetStudent     # 返回数组形式
  1. 右外连接
from Teacher t right outer join t.SetStudent        # 返回数组形式
  1. 迫切内连接
from Teacher t inner join fetch t.SetStudent        # 返回对象类型
  1. 迫切左外连接
from Teacher t left outer join  fetch t.SetStudent      # 返回对象形式

hibernate检索策略

  1. 立即查询:根据ID查询,调用get方法,一调用get方法立马查询数据库
  2. 延迟查询:根据ID查询,调用load方法,调用load方法不会马上查询数据库,而是得到对象里面值的时候才会发送语句查询数据库