Hibernate(三)说明

标签: Hibernate
21人阅读 评论(0) 收藏 举报
分类:

一,ID生成策略

identity

采用数据库生成的主键,用于为longshortint类型生成唯一标识, Oracle 不支持自增字段.

<id name="id" column="id" type="long">

    <generator class="identity" />

</id>

sequence

DB2Oracle均支持的序列,用于为longshortint生成唯一标识。

需要oracle创建sequence

<id name="id" column="id" type="long">

   <generator class="sequence">

       <param name="sequence">seq_name</param>

   </generator>

</id>

native

根据底层数据库的能力,从identitysequencehilo中选择一个,灵活性更强。

<id name="id" column="id">

    <generator class="native" />

</id>

increment

个是由Hibernate在内存中生成主键,每次增量为1,不依赖于底层的数据库,因此所有的数据库都可以使用

<id name="id" column="id">

    <generator class="increment" />

</id>

uuid.hex

使用一个128-bitUUID算法生成字符串类型的标识符

<id name="id" column="id">

    <generator class="uuid.hex" />

</id>

assigned

在保存之前先给对象分配一个ID

 

uuid.string

hibernate会算出一个16位的值插入

 

foreign

使用另外一个关联对象的标识符。

二,Hibernate数据类型映射



例子:使用 java 类型进行映射

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.hibernate.demo.pojo.UserInfor" table="user_infor" catalog="hibernate">
        <id name="id" type="java.lang.Integer" column="id">
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String" column="name" />
        <property name="code" type="java.lang.String" column="code" />
        <property name="age" type="java.lang.Integer" column="age" />
    </class>
</hibernate-mapping>

三,常用类说明

    1Configuration

        负责管理 Hibernate 的配置信息。默认加载的配置文件是hibernate.cfg.xml

        创建的方式:      

        Configuration cfg = new Configuration().configure();

        如果加载的hibernate配置文件不是默认文件名,使用以下方式:

        File file = new File(MyHibernate.cfg.xml);

        Configuration cfg = new Configuration().configure(file);

    2SessionFactory 接口

         针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。

         SessionFactory 对象一旦构造完毕,即被赋予特定的配置信息

         SessionFactory是生成Session的工厂

         构造 SessionFactory 很消耗资源,一般情况下一个应用中只初始化一个 SessionFactory 对象

        Hibernate4 新增了一个 ServiceRegistry 接口,所有基于 Hibernate 的配置或者服务都必须统一向这个 ServiceRegistry          注 册后才能生效

    3Session接口

 是应用程序与数据库之间交互操作的一个单线程对象,是 Hibernate 运作的中心,所有持久化对象必须在session的管理下才可以进行持久化操作此对象的生命周期很短。Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处。相当于 JDBC 中的 Connection

         Session类中提供的方法:

         取得持久化对象的方法: get() load()

         持久化对象都得保存,更新和删除:save(),update(),saveOrUpdate(),delete()

         开启事务: beginTransaction().

        管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()

    4Transaction

         Hibernate进行增、删、改时候,必须显式的调用Transaction来开始事务和提交事务。

         事务代表一次原子操作,它具有数据库事务的概念。所有持久层都应该在事务管理下进行,即使是只读操作。

        Transaction tx = session.beginTransaction();

         主要方法:

         commit():提交相关联的session实例

         rollback():撤销事务操作

    5Query

        Query接口让你方便地对数据库及持久对象进行查询,它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query 经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。

public void testList() {
		Session session = HibernateUtil.getSession();
		Query qr = session.createQuery("from UserInfor");
		
		List<UserInfor> ls = qr.list();
		for (UserInfor user : ls) {
			System.out.println(user);
		}
		session.close();
	}
6Criteria

        QBCQuery By Criteria,通过Criteria API查询)查询方式,是通过Criteria接口和Restrictions类来进行查询的。

        Criteria接口完全封装了基于字符串形式的查询语句,跟Query接口相比起来,它更加面向对象,所以用Criteria接口进行查询时,不再需要定义基于字符串形式的查询语句了,而是通过相应对象的方法来指定查询条件。











查看评论

Hibernate中三表联结的HQL语句写法

+--------------+-------------+------+-----+---------+----------------+ | Field        | Type       ...
  • zhaoxd_1
  • zhaoxd_1
  • 2014-06-19 14:19:27
  • 1734

Hibernate之模拟三表问题之多对多manytomany之映射为3表注解版-与(十七)xml版本对应(二十三)

1 package com.bjsxt.hibernate; import java.util.HashSet; import java.util.Set; import javax.persis...
  • jintianhen1
  • jintianhen1
  • 2013-12-30 13:41:16
  • 990

Hibernate中实体对象的3种状态

瞬时态: 由java的new命令开辟内存空间的java对象也就是普通的java对象,如果没有变量引用它它将会被JVM收回。临时对象在内存中是孤立存在的,它的意义是携带信息载体,不和数据库中的数据由任...
  • qq1501704956
  • qq1501704956
  • 2018-01-15 15:49:01
  • 24

Hibernate (四)基本特性

一、对象持久性 在Hibernate使用过程中,实体对象可以具有以下三种状态: 1)临时状态:采用new关键字创建的对象,该对象未与Session发生关联(未调用Session的API)。也叫临时...
  • w410589502
  • w410589502
  • 2017-01-17 16:45:14
  • 523

Hibernate配置参数说明

代码 bean id="dataSource"     class="org.apache.commons.dbcp.BasicDataSource"     destroy-met...
  • basin_yi
  • basin_yi
  • 2007-11-12 19:06:00
  • 1069

Hibernate学习笔记10,用户角色分配,多对多关系表的级联管理

需求: 用户即使用系统的用户,包括业务员、总经理等角色,不同类型的用户使用系统不同的功能,本功能要完成给用户分配角色,功能包括:给用户分配角色、取消用户分配的角色。 分析: 用户信息:单独创...
  • weixin_37659242
  • weixin_37659242
  • 2018-04-15 14:39:58
  • 75

hibernate配置参数一览表

  • 2014年06月08日 19:48
  • 117KB
  • 下载

Hibernate的jar包功能说明

Hibernate一共包括了23个jar包,令人眼花缭乱下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: (1...
  • huiwenjie168
  • huiwenjie168
  • 2013-01-07 17:07:56
  • 815

hibernate多张表连接查询

转载自:http://www.cnblogs.com/lihuiyy/archive/2013/03/28/2987531.html Hibernate主要支持两种查询方式:HQL查询和Crit...
  • u012129031
  • u012129031
  • 2016-12-22 16:39:32
  • 1856

struts spring hibernate整合(三)

  • 2009年11月30日 17:25
  • 2.07MB
  • 下载
    个人资料
    等级:
    访问量: 132
    积分: 42
    排名: 185万+
    文章分类
    文章存档