java笔记

简单记录日常学习笔记

Hibernate(三)说明

一,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
个人分类: 后端框架
上一篇Hibernate(二)快速入门
想对作者说点什么? 我来说一句

struts spring hibernate整合(三)

2009年11月30日 2.07MB 下载

没有更多推荐了,返回首页

关闭
关闭