Hibernate入门笔记

1.什么是Hibernate

  • hibernate是一个持久层的ORM(Object Relational Mapping,对象关系映射)框架
  • hibernate对JDBC进行了轻量级的封装
    • 简化了DAO层编码
    • 简化了重复性代码

2.下载Hibernate

3.关于Hibernate映射及配置文件

  • Hibernate的核心配置文件映射一般位于项目的src目录下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <!-- 连接数据库的基本参数 -->
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day04</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password">p@ssw0rd</property>
  <!-- 配置Hibernate的方言 -->
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  
  <!-- 可选配置================ -->
  <!-- 打印SQL -->
  <property name="hibernate.show_sql">true</property>
  <!-- 格式化SQL -->
  <property name="hibernate.format_sql">true</property>
  <!-- 自动创建表 -->
  <property name="hibernate.hbm2ddl.auto">update</property>
  
  <!-- 配置C3P0连接池 -->
  <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
  <!--在连接池中可用的数据库连接的最少数目 -->
  <property name="c3p0.min_size">5</property>
  <!--在连接池中所有数据库连接的最大数目  -->
  <property name="c3p0.max_size">20</property>
  <!--设定数据库连接的过期时间,以秒为单位,
  如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
  <property name="c3p0.timeout">120</property>
   <!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
  <property name="c3p0.idle_test_period">3000</property>
  
  <!-- 设置事务隔离级别 -->
  <property name="hibernate.connection.isolation">4</property>
  <!-- 配置当前线程绑定的Session -->
  <property name="hibernate.current_session_context_class">thread</property>
  
  <!-- 引入映射 -->
  <mapping resource="com/itheima/hibernate/domain/Customer.hbm.xml"/>
  <mapping resource="com/itheima/hibernate/domain/LinkMan.hbm.xml"/>
 </session-factory>
</hibernate-configuration>
  • Hibernate映射文件一般命名为ClassName.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
 <class name="com.itheima.hibernate.domain.Customer" batch-size="3" table="cst_customer" lazy="true">
  <!-- 建立OID与主键映射 -->
  <id name="cust_id" column="cust_id">
   <generator class="native"/>
  </id>
  <!-- 建立普通属性与数据库表字段映射 -->
  <property name="cust_name" column="cust_name" />
  <property name="cust_source" column="cust_source"/>
  <property name="cust_industry" column="cust_industry"/>
  <property name="cust_level" column="cust_level"/>
  <property name="cust_phone" column="cust_phone"/>
  <property name="cust_mobile" column="cust_mobile"/>
  <!-- 配置一对多的映射:放置的多的一方的集合 -->
  <!-- 
   set标签 :
    * name :多的一方的对象集合的属性名称。
    * cascade:级联
    * inverse:放弃外键维护权。
  -->
  <set name="linkMans" batch-size="3">
   <!--
     key标签
     * column:多的一方的外键的名称。
    -->
   <key column="lkm_cust_id"/>
   <!-- 
    one-to-many标签
     * class :多的一方的类的全路径
    -->
   <one-to-many class="com.itheima.hibernate.domain.LinkMan"/>
  </set>
 </class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
 <class name="com.itheima.hibernate.domain.LinkMan" table="cst_linkman">
  <!-- 建立OID与主键映射 -->
  <id name="lkm_id" column="lkm_id">
   <generator class="native"/>
  </id>
  <!-- 建立普通属性与表字段映射 -->
  <property name="lkm_name"/>
  <property name="lkm_gender"/>
  <property name="lkm_phone"/>
  <property name="lkm_mobile"/>
  <property name="lkm_email"/>
  <property name="lkm_qq"/>
  <property name="lkm_position"/>
  <property name="lkm_memo"/>
  <!-- 配置多对一的关系:放置的是一的一方的对象 -->
  <!-- 
   many-to-one标签
    * name  :一的一方的对象的属性名称。
    * class  :一的一方的类的全路径。
    * column :在多的一方的表的外键的名称。
   -->
  <many-to-one name="customer" class="com.itheima.hibernate.domain.Customer" column="lkm_cust_id"/>
 </class>
</hibernate-mapping>

4.Hibernate相关API

  • Configuration :用于加载映射文件
  • SessionFactory :用于创建和初始化Session对象
  • Session : 是应用程序与数据库交互的一个单线程对象
  • Transaction :用户管理事务
  • Query : 查询操作,HQL(Hibernate Query Language)
  • Criteria : 核心查询对象,QBC(Query By Criteria)
  • SQLQuery : 接收sql语句进行查询的对象

demo

public void demo1(){
  Session session = new Configuration().configure();
  Transaction tx = session.beginTransaction();
  
  List<Customer> list = session.createQuery("from Customer").list();
  for (Customer customer : list) {
   System.out.println(customer.getCust_name());
   for (LinkMan linkMan : customer.getLinkMans()) {
    System.out.println(linkMan.getLkm_name());
   }
  }
  tx.commit();
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值