Hibernate的API及配置详解

来源:互联网 发布:瓜达尔港 知乎 编辑:程序博客网 时间:2024/06/05 11:12

这里写图片描述
一、org.hibernate.cfg.Configuration

1、类的主要作用是加载主配置文件以及映射文件,启动hibernate2、默认获取hibernate.cfg.xml配置文件    Configuration configer = new Configuration().configure();3、如果配置文件名称有改变,则用带参数的构造器    Configuration configer = new Configuration().configure("xxx.cfg.xml");

二、SessionFactory接口

1、用来获取和管理我们的session,它在hibernate中其实是相当于一个缓冲区的作用,一个数据库对应一个sessionFactory,是一个重量级的对象,比较重要。2、是单例的,但是是线程安全的,大多数成员变量都是final

三、Session接口
1、程序和数据库的一次交互会话,每次执行一个数据库的事务,都要创建新的session实例,用完后需要关闭
2、轻量级接口是多例的,是线程不安全的
3、获取方式:
Session session = SessionFactory.getCurrentSession();//获取当前线程中的session,会自动关闭session.
Session session = SessionFactory.openSession;//创建一个session对象,需要手动关闭session
4、如何保证一个线程的session是线程安全的,需要在hibernate.cfg.xml里面配置

<property name="hibernate.current_session_context_class">thread</property>

四、transaction接口

1、事务的开启: session.getTransaction().begin();
2、事务的提交: session.getTransaction().commit();
3、事务的回滚: session.getTransaction().rollback();

五、hibernate.cfg.xml配置详解:

1:数据库连接配置
* 在hibernate.cfg.xml里面配置数据库的四要素
* 通过hibernate.properties文件进行配置
注意:当cfg配置文件和properties文件同时配置了数据库信息的时候,cfg配置文件优先
2:数据源的配置
* 我们一般会用c3p0的数据源管理 详见hibernate.cfg.xml文件
* 在我们没有单独配置数据源管理的时候 ,它会用hibernate自带的数据源(not for product use)
3:方言
* 不同的数据库会存在一些语法上的差异,而方言是解决这种差异的一种手段
* 解决hql翻译成sql,保证语法上的正确
4:加入映射文件

<mapping resource="com/xxx/hibernatestudy/sysmanage/entity/student.hbm.xml" />
5:自动建表配置
<property name="hibernate.hbm2ddl.auto">update/create</property>

六、持久化对象与映射文件的配置

<hibernate-mapping>    <class name="com.xxx.hibernatestudy.sysmanage.entity.Student" column="T_STUDENT">        <id name="stId" column="ST_ID">            <generator>native</generator>        </id>        <property name="stName" column="ST_NAME"></property>        <property name="stAge" column="ST_AGE"></property>          </class></hibernate-mapping>

关于主键段<generator></generator>中的值的配置详解如下:

id的生成策略有如下几种方式
* increment
hibernate自己维护主键的值,每次插入之前,max(ST_ID)+1,不适合高并发和集群环境
* identity
数据库自身的增长来维护主键值 如mysql的auto_increment
* sequence
在数据库中创建一个序列,hibenate会调用序列来维护主键 ,oracle比较实用
* native
它会根据使用的数据库类型,从identity和sequence两种方式选取 一种合适的
* uuid
采用uuid(universally unique identifier)算发来生成一个唯一识别码
ip地址+jvm启动时间+当前系统时间+计数器= 32位
* assigned
由程序自己设置id值,比如身份证,学好之类的业务编码
这里写图片描述

原创粉丝点击