Hibernate配置文件及重要接口的使用

Hibernate配置文件

hibernate程序中存在一个hibernate.cfg.xml的文件,该文件就是hibernate的配置文件,主要用于配置数据库的连接、事务管理以及指定Hibernate本身的配置信息和Hibernate映射文件信息。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.url"><![CDATA[
        jdbc:mysql://localhost:3306/Bank?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT]]></property>
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>

        <mapping class="table.BankCustomerInfoEntity" resource="table/BankCustomerInfoEntity.hbm.xml" />
    </session-factory>
</hibernate-configuration>

hibernate.cfg.xml文件中的核心配置属性:

属性名取值说明
hibernate.connection.driver_class驱动类名设置数据库的驱动类
hibernate.connection.urlURL设置连接数据可得URL
hibernate.connection.username用户名设置连接数据库的用户名
hibernate.connection.password密码设置连接数据库的密码
hibernate.dialect方言类名针对不同的数据库提供的方言类名,允许Hibernate针对特定的数据库生成优化的SQL语句
hibernate.show_sqltrue或false(默认)是否输出Hibernate操作数据库使用的SQL语句
hibernate.format_sqltrue或false(默认)是否格式化输出的SQL语句

在hibernate.cfg.xml中使用mapping指定Hibernate映射文件,mapping有如下核心属性:

属性名取值说明
class包名称.类名称与数据表关联的实体类名称
resource映射文件路径关联数据表与实体类的配置文件路径

Hibernate映射文件

Hibernate映射文件主要用于配置实体类与数据表之间的映射关系,在这个配置文件中,需要指定类/表映射配置、主键映射配置和属性/字段映射配置。映射文件命名方式为:className.hbm.xml。

<?xml version='1.0' encoding='utf-8'?>
<!--定义XML文件的文档结构,必须按照指定的顺序与名称编写文件-->
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- 定义简单Java类的完整名称,通过反射加载-->
    <!-- 每一个映射文件都要求有一个与之对应的POJO类存在-->
    <!-- name属性描述的是POJO类 ,而table属性描述的是这个类对应的数据表-->
    <class name="table.BankCustomerInfoEntity" table="bank_customer_info" schema="bank">
        <id name="bankCustomerId" type="java.lang.String" column="bank_customer_id" >
            <generator class="native" />
        </id>
        <property name="bankCustomerAdr" column="bank_customer_adr" type="java.lang.String" />
        <property name="bankCustomerCard" column="bank_customer_card" type="java.lang.String" />
        <property name="bankCustomerDate" column="bank_customer_date" type="java.sql.Timestamp" />
        <property name="bankAgentId" column="bank_agent_id" type="java.lang.String" />
    </class>
</hibernate-mapping>

Hibernate应与实体类放在一起,在相同的包中,hibernate-mapping元素是每一个Hibernate映射文件的根元素,class元素时根元素hibernate-mapping元素的子元素,用以定义一个持久化类与数据表的映射关系。class元素常用属性如下:

属性名是否必须取值说明
name类名持久化类或接口的Java全定义名称
table表名,默认是类名对应的数据库表名
schema数据库schema名称覆盖在根hibernate-mapping元素中指定的schema名称
catalog数据库catalog名称覆盖在根hibernate-mapping元素中指定的catalog名称

id元素用于定义主键。大多数POJO类都有一个属性可以为每一个实例作为唯一的标识,id元素定义了该属性到数据库表主键字段的映射,id元素的常用属性如下:

属性名是否必须取值说明
name类名持久化类的标识属性的名字‘
type数据类型标识生成的主键字段的Java类型
column字段名称(默认为属性值)主键字段的名称
length一个数值指定主键字段的长度

generator元素是id元素的子元素,用于指定主键的生成器,在一般开发中我们只会用到2种类型:

  • assigned : 指派模式,用于业务主键,由Java应用程序负责生成标识符。
  • native :自动模式,用于逻辑主键,由数据库自己负责生成标识符。

property元素用于持久化类的属性与数据表字段的映射,其常用的属性如下:

属性名是否必须取值说明
name类中的属性名称持久化类的属性名
column表字段名称,默认为属性名字对应的数据库表的字段名
type数据类型指定对应数据库表中字段的类型
uniquetrue或false(默认)使用DDL为该字段添加唯一约束
not-nulltrue或false(默认)使用DDL为该字段添加可否为非空的约束

hibernate核心类库

Hibernate核心类

  1. 取得配置文件信息:org.hibernate.cfg.Configuration 。所有的数据库连接信息包括映射信息都保存在hibernate.cfg.xml文件中,而整个Hibernate想要执行程序,那么自然需要读取文件,所以Configuration类的主要功能就是读取所有的配置资源信息,也就是说如果想要打开数据库,也需要Configuration类,Configuration有如下主要方法:
      构造:public Configuration();
      读取默认资源(hibernate.cfg.xml):public Configuration configure() throws HibernateException;
      读取指定资源:public Configuration configure(String resource) throws HibernateException;
      创建SessionFactory:public SessionFactory buildSessionFactory(ServiceRegistry serviceRegistry) throws HibernateException;
  2. 数据库的连接管理都由SessionFactory负责,而在SessionFactory里面需要控制缓存的操作(暂不考虑)SessionFactory可以打开新的数据库操作——Session,方法如下:
      打开Session:public Session openSession() throws HibernateException;
  3. 数据库连接对象:org.hibernate.Session,负责所有数据的处理操纵及事务控制,此类有如下方法:
      保存数据:public Serializable save(Object object);返回主键
      修改数据:public void update(Object object);没有返回值
      删除数据:public void delete(Object object);没有返回值
      根据ID读取:public <T>T load(Class<T> theClass, Serializable id);
      根据ID读取:public <T>T get(Class<T> entityType, Serializable id);
      创建Criteria查询:public Criteria createCriteria(Class persistentClass );
      创建Query查询:public Query createQuery(String queryString);
      创建并启用一个事务:public Transaction beginTransaction ();
      创建事务:public Transaction getTransaction ();
  4. 事务处理接口:org.hibernate.Transaction。所有的Hibernate操作都不是自动提交的,全部交给Transaction来处理,Transaction有如下几个重要操做方法:
      事务提交,执行更新:public void commit();
      事务回滚:public void rollback();
      打开事务:public void begin();,如果使用的是beginTransaction ()方法创建的事务,此操作自动执行。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值