hibernate框架(贰)大旨配置&API

一、hibernate中的主旨配置文件:hibernate.rfg.xml

1:核心配置分为3大多数 非得的安顿可选的铺排和引进映射文件。

一.供给的配置 连接数据库的参数:驱动类
url路线 用户名 密码方言

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <property name="hibernate.connection.url">jdbc:mysql:///hibernate_day01</property>        <property name="hibernate.connection.username">root</property>        <property name="hibernate.connection.password">000000</property>        <!-- 他的方言 -->        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

  2.可选的布局 展现sql 整理sql语句的格式

<!-- 可选的配置 -->        <property name="hibernate.show_sql">true</property>        <property name="hibernate.format_sql">true</property>

  三.引进映射文件

<mapping resource="com/itheima/domain/Customer.hbm.xml"/>

  对于hibernate的着力配置文件有三种:一.hibernate.rfg.xml,贰.hibernate.properties。开辟中大家最常用的是hibernate.rfg.xml的配置文件,因为它的配备技术强,易于修改。所以在那边对hibernate.rfg.xml的安顿文件举行详解:

二 映射的安插

  首先介绍当中的价签的习性

  

class标签的布局
作用:标签用来树立类与表的映射关系

属性
name:类的全路线
talbe数据库的表名
id标签的布署成效:标签用来确立类中的属性与表中的主键的应和关系

    name:类的属性名,只假使name就去类中去找
    column类中的字段名
property标签的装置
作用:建设构造类中的普通属性与表的维系

    name:类中 的属性名
    column类中的字段名
length长度 type 类型 not-null设置非空
unique设置唯1

<hibernate-mapping>    <!-- 建立类与表的映射关系 -->                        <!--当时这里后面少了个引号,直接导致后面的id变成蓝色 -->    <class name="com.itheima.domain.Customer" table="cst_customer">            <id  name="cust_id" column="cust_id">                <!-- <generator />     -->                    <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"/>                </class></hibernate-mapping>

  1、约束新闻:具体的详细音信能够在hiberante宗旨jar包下的org.hibernate包下hibernate-configuration-三.0.dtd文件中进行搜索:

  三 核心的API

  Hibernate的API壹共有陆个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通过这一个接口,能够对漫长化对象开始展览存取、事务调节。

   1SessionFactory亚洲必赢app,**

    SessionFactory接口担任开首化Hibernate。它充当数据存款和储蓄源的代理,并担任创立Session对象。这里运用了工厂格局。要求留意的是SessionFactory并不是轻量级的,因为相似意况下,叁个档期的顺序一般只供给1个SessionFactory就够,当必要操作五个数据库时,可感觉各样数据库钦点贰个SessionFactory。**


hibernate的二级缓存以往在合营社中早就不用了,用redis来替换他了。
sessionFactory一个主次只须创设一回就行,那么大家就收取二个工具类,那样作用会进级。

  收取的工具类

public class HibernateUtils {    public static final Configuration configuration;    public static final SessionFactory sessionFactory;    //写一个静态代码快    static{        configuration=new Configuration().configure();        sessionFactory=configuration.buildSessionFactory();    }    public static Session openSession(){        return sessionFactory.openSession();    }}

  2 Configuration

    功效:加载核心配置文件

  叁Session :类似JDBC的connection对象是二个老是对象,是数据库交互的大桥

    get方法和load方法的区分
     get 选择即时加载 查询到的是目的自己 找不到指标的时候会重回空
     load就不一致了 采取的是延迟加载 查询后再次来到的是代理对象
查询不到八个指标的时候会抛格外
     在付出中用的比较多的仍然get

  

     
      //上面的是get方法
     Customer customer = session.get(Customer.class, 11l);//这里是long类型        System.out.println;
      //下面的是load方法        Customer customer = session.load(Customer.class, 4l);        System.out.println;    

  更新操作

      //第二种方式是先查询,再更新,推荐这种方式        Customer customer = session.get(Customer.class,6l);        customer.setCust_name("王宏");        session.update;

   删除操作

@Test    public void demo4(){        Session session = HibernateUtils.openSession();        Transaction beginTransaction = session.beginTransaction();        //先查询再删除,级联删除        Customer customer = session.get(Customer.class,4l);        session.delete;        beginTransaction.commit();        session.close();    }

  查询全体

  

@Test    //查询所有    public void demo5(){        Session session = HibernateUtils.openSession();        Transaction beginTransaction = session.beginTransaction();        Query query = session.createQuery("from Customer");    //面向对象        List list = query.list();        for (Object object : list) {            System.out.println;        }        beginTransaction.commit();        session.close();    }

  

  亚洲必赢app 1

  二、加载数据库相关音信的安插:

   <!– hibernate.connection.driver_class : 连接数据库的驱动
–>

  <property
name=”hibernate.connection.driver_class”>com.mysql.jdbc.Driver</property>
  <!– hibernate.connection.username : 连接数据库的用户名 –>
  <property
name=”hibernate.connection.username”>root</property>
  <!– hibernate.connection.password : 连接数据库的密码 –>
  <property
name=”hibernate.connection.password”>root</property>
  <!– hibernate.connection.url : 连接数据库的地址,路线 –>
  <property
name=”hibernate.connection.url”>jdbc:mysql://localhost:3306/hibernateTest</property>

  三、hibernate的连锁铺排

  <!– show_sql: 操作数据库时,会 向调控台打字与印刷sql语句 –>
  <property name=”show_sql”>true</property>
  <!– format_sql: 打字与印刷sql语句前,会将sql语句先格式化 –>
  <property name=”format_sql”>true</property>
  <!– 数据库方言配置
    org.hibernate.dialect.MySQLDialect (选拔最短的)
  –>
  <property
name=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect</property>

  三、加载隐射的布置文件

  <!– 引进O奇骏M 映射文件 填写src之后的路子–>
  <mapping resource=”com/hibernate/domain/Customer.hbm.xml”/>

  

二、映射文件的连带配置–Customer<与数码库表对应的实体类名称>.hbm.xml。那一个布局文件一般是放置在实体类的包下的,首要作用是与数据库的表营造映射关系。

  一、在<hibernate-mapping>标签中联合证明包名,通过布置后就无须在<class>中就无需写类的姓名

  2、<class>标签的布局:

    name:实体类的人名;table:所对应的表名,此属性能够轻巧,然则表名必须与实体类的名目保持1致;catalog:数据库名称,能够省略,假若轻易,将会参照大旨配置文件中url路线中的库名称;

*  三、<id>标签的布局:必须存在,主要用以类中的属性和表中的主键映射*

*    name:类中的属性名称;column:表中的主键名称;length:字段长度;type:属性,用于钦点项目*

*    <generator>:用于表述主键的改变攻略。注:逐步的变迁计谋后续会更新。
*

*  4、<property>标签,它是讲述类中属性与表中国和欧洲主键的映射关系
    name:类中的属性名称;column:表中的主键名称;length:字段长度;type:属性,用于钦定项目
*

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图