`
star11th
  • 浏览: 1233 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多

Hibernate开发文档

.基本概念:

SessionFactory :它是单个数据映射表经编译后的内存镜像,是线程安全的,是生成session的工厂.该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据提供可选的二级缓存.

Session:它是应用程序与持久存储层之间交互操作的一个单线程对象.所有的持久化对象必须在session管理下才可以进行持久化操作.此对象生存期很短,它隐藏了JDBC连接,也是Transaction的工厂.Session对象有一个一级缓存,显式执行flush之前,所有持久化操作的数据都缓存在Session对象处.

持久态:系统创建的pojo对象,一旦与Session关联起来并对应成数据库中的记录,对其所有的操作都相当于对数据库的操作

暂态/脱管态:暂态指新创建的未与Session关联的的对象,其可能是未持久化的对象;脱管态指持久态的对象因Session关闭导致临时失去持久态的对象

事务:代表一次原子操作,具有数据库事务的概念.某些情况下,一个Session之内可能包含多个Transaction对象.虽然事务操作是可选的,但是所有持久化操作都应该在事务管理下进行,即使是只读操作.

连接提供者:ConnectionProvider,是生成jdbc连接的工厂,同时具备连接池的作用.它通过抽象将应用从底层的DatasourceDriverManager隔离开.无需直接访问

事务工厂:它是生成Transaction对象实例的工厂,无需直接访问

.使用须知;

1.配置文件

hibernate.properties

  Configuration cfg=new Configuration()

                 .addResource(“Item.hbm.xml”)

                 .addResource(“Bid.hbm.xml”);

  还可以

  Configuration cfg=new Configuration()

                             .addClass(lee.Item.Class)

                 .addClass(lee.Bid.Class);

  这种可以让Hibernate自动根据持久化类来搜索配置文件,但是应保证配置文件和pojo同一目录下

②使用 hibernate.cfg.xml

  这种方法可以直接使用

       Configuration cfg=new Configuration().configure()

③使用Configuration cfg=new Configuration().addClass(““).setProperty(““,”“)

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

       <property name="hibernate.connection.driver_class">

              com.mysql.jdbc.Driver

       </property>

       <property name="hibernate.connection.password">32147</property>

       <property name="hibernate.connection.url">

              jdbc:mysql://localhost:3306/hibernate

       </property>

       <property name="hibernate.connection.username">root</property>

       <property name="hibernate.dialect">

              org.hibernate.dialect.MySQLDialect

       </property>

       <property name="show_sql">true</property>

       <property name="hbm2ddl.auto">update</property>

       <mapping resource="News.hbm.xml" />

</session-factory>

</hibernate-configuration>

 

2.连接池:

<!—连接池-->

<property name=”hibernate.c3p0.max_size”>20</property>

<property name=”hibernate.c3p0.min_size”>1</property>

<property name=”hibernate.c3p0.timeout”>5000</property>

<!—缓存Statement的数量-->

<property name=”hibernate.c3p0.max_statements”>100</property>

<property name=”hibernate.c3p0.idle_test_period”>3000</property>

<property name=”hibernate.c3p0.acquire_increment”>2</property>

<property name=”hibernate.c3p0.validate”>true</property>

3.JNDI 无需hibernate自己管理数据源的时候使用,虽然使用JNDI数据源,仍然需要指定数据库的方言,尽管数据库方言是可选de.

<!--配置JNDI数据源的JNDI-->

<property name=“connection.datasource”>java:comp/env/jdbc/dstest</property>

<!—配置连接库的方言-->

<property name=“dialect”>org.hibernate.dialect.MySQLDialect</property>

4.其他配置属性:

hibernate.show_sql 是否输出sql

hibernate.jdbc.fetch_size  指定jdbc抓取数量的大小,

hibernate.jdbc.batch_size 指定Hibernate使用JDBC批量更新的大小,它可以接受一个整数值,建议5到三十

hibernate.connection.autocommit 设置是否自动提交,通常不建议打开

hibernate.hbm2ddl.auto 设置当创建SessionFactory,是否根据映射文件自动建立数据库表.该属性可以为:update create create-drop

.持久化类的要求:

1.getter setter

2.一个无参构造器

3.一个标示属性

4.如果使用一个有public final方法的类,必须通过设置lazy=“false”来禁用代理

5.重写equals() hashCode()方法(如果需要把pojo类的实例放入Set中的时候) 重写时,通常建议使用业务键值来实现.

6.状态转换:

//////

 News n=new News();

 n.setName(““);

 sess.save(n)

//////

  News n=Session.load(News.class, new Integer(pk));

  n.setTitle(“biaoti”);

////

  News n=Session.load(News.class, new Integer(pk));

  Session.delete(n);

.映射文件

1.样本

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping

    PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="lee">

    <class name="Person">

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

            <generator class="identity"/>

        </id>

        <property name="name"/>

        <property name="age"/>

    </class>  

</hibernate-mapping>

2.主键生成器

increment   long short int数据列生成自增长主键

identity     对如SQL Server,MySql等支持自增长列的数据库且数据列的类型long int short

sequence    对如Oracle DB2等支持sequence的数据库且数据列的类型为long int short

uuid        采用128-UUID算法生成唯一的字符串主键

3.映射集合属性

List

<list name=“schools” table=“school”>

<key column=“personid” not-null=“true”/>

<list-index column=“list_order”/>

<element type=“string” column=“school_name”/>

</list>

Set

<set name=“shools” table=“shool”>

<key column=“personid” not-null=“true”/>

<element type=“string” column=“school_name” not-null=“true”/>

</set>

Bag

<bag name=“shools” table=“shool”>

<key column=“personid” not-null=“true”/>

<element type=“string” column=“school_name” not-null=“true”/>

</bag>

Map 

<map name=“scores” table=“score”>

<key column=“personid” not-null=“true”/>

<map-key column=“xueke” type=“string”/>

<element type=“float” column=“mark”/>

</map>

4.组件及复合主键映射

属性组件组件为pojo的一个普通属性类 private Name name  Name(first,last)

<component name=“name” class=“Name” unique=“true”>

<property name=“first”/>

<property name=“last”/>

</component>

集合元素组件组件为List等集合的一个元素 private List<School> schools 

School(name, address)

<list name=“schools” table=“school”>

<!--映射关联外键-->

.<key column=“personid” not-null=“true”/>

<list-index column=“list_order”>

<composite-element class=“School”>

<property name=“name”>

<property name=“address”>

</composite-element>

 

属性组件主键” private Name name (nameTimes New

分享到:
评论

相关推荐

    BURNINTEST--硬件检测工具

    PassMark BurnInTest V5.3 Copyright (C) 1999-2008 PassMark Software All Rights Reserved http://www.passmark.com Overview ======== Passmark's BurnInTest is a software tool that allows all the major sub...

    parasoft c++Test9.0破解

    最好用的单元测试工具,除了这里你是找不到9.0版本的破解的。 ... 独立的版本破解: ... 把lic_client.jar复制到 ... c:\Program Files (x86)\Parasoft\Test\9.0\plugins\...这个是:plugins-c++Test For Visual Studio.7z

    eNetTest 网管内网单机测速工具

    eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速工具eNetTest 网管内网单机测速...

    Parasoft c++Test9.0破解文件

    c:\Program Files (x86)\Parasoft\C++test for Visual Studio\9.0\plugins\ 这个目录中 把plugins-Test for Virsual Studio.7z 中的文件覆盖到 c:\Program Files (x86)\Parasoft\Test for Visual Studio\9.0\...

    Modeltest 使用说明

    Modeltest 使用说明 Modeltest 是一个选择核苷酸替代模型的软件,通过和 PAUP 配合使用,可以选择出合适的 MODEL,并同时计算出相关参数。下面是 Modeltest 的使用说明和相关知识点: 一、Modeltest 概述 * Model...

    Parasoft C++Test 9.5

    Parasoft C++Test 9.5是一款由Parasoft公司开发的专业自动化白盒测试工具,专注于C++编程语言的测试。它集成了多种测试策略,包括静态代码分析、动态测试、单元测试、代码覆盖率分析以及缺陷预防等功能,旨在提高...

    speedtest服务器搭建教程

    (speedtest服务器搭建教程) 本篇教程旨在指导读者搭建speedtest服务器,通过安装PHPStudy、配置WNMP和Nginx、下载并配置speedtest测速平台,实现本地测速功能。 一、 PHPStudy 安装和配置 PHPStudy 是一个集成...

    ECU-Test高级教程

    ### ECU-Test高级教程知识点解析 #### 一、ECU-Test概述 **ECU-Test**是一款专为汽车电子控制单元(ECU)开发与验证而设计的强大工具。它支持自动化测试流程,并能有效管理和控制整个测试环境,极大地提高了ECU开发...

    google test框架使用中文文档

    Google Test是Google开发的一款强大的C++测试框架,它使得C++开发者能够编写单元测试和集成测试,以确保代码的质量和稳定性。本文档将详细介绍Google Test框架的使用方法,包括基本概念、断言、测试套件、测试用例、...

    Parasoftc++ Test 9.0破解文件

    最好用的单元测试工具,除了这里你是找不到9.0版本的破解的。 ... 独立的版本破解: ... 把lic_client.jar复制到 ... c:\Program Files (x86)\Parasoft\Test\9.0\plugins\...这个是:( plugins-Test for Virsual Studio.7z )

    Test Track Client 使用说明(新)

    Test Track Client 使用说明 Test Track 是一个功能强大且实用的BUG管理软件,能够帮助测试工程师、开发工程师、开发主管和项目管理人员等角色更好地管理和跟踪项目中的BUG。该软件具有强大的管理功能和灵活的配置...

    Test Bench 经典教程.rar

    Test Bench是电子设计自动化(EDA)领域中的一个重要概念,主要用于验证数字集成电路的设计。在硬件描述语言(HDL,如Verilog或VHDL)中,Test Bench是模拟真实硬件环境来测试设计功能的一个虚拟平台。它能帮助...

    CAN Test V2.53软件使用说明

    CAN Test V2.53 软件使用说明 CAN Test V2.53 软件是一款功能强大且易用的CAN总线测试工具,旨在帮助用户快速地测试和诊断CAN总线设备。以下是CAN Test V2.53 软件使用说明的详细知识点: 软件安装 CAN Test 软件...

    ECU-TEST基本教程

    ### ECU-TEST基本教程知识点概述 #### 一、ECU-TEST简介 ECU-TEST是一款由Vector公司开发的专业汽车电子控制单元(Electronic Control Unit, ECU)测试工具,它能够实现对ECU进行全面而深入的功能性测试,并且支持...

    Parasoft C++ test 9.2官方用户手册_eclipse_中文版

    《Parasoft C++test 9.2官方用户手册_eclipse_中文版》是一本详尽的指南,专为使用C++test工具的开发者提供在Eclipse集成开发环境中的使用方法。C++test是一款强大的静态代码分析和单元测试工具,旨在提高C++软件的...

    C++Test学习文档

    ### C++Test 学习文档知识点汇总 #### 1. C++test 用户手册 - **概述**:C++test 用户手册旨在为用户提供有关如何利用C++test的各种功能的详细指导,无论是在Eclipse环境中构建还是作为插件使用。这份手册对于拥有...

    PortTest串口调试工具

    **串口调试工具——PortTest详解** 在计算机通信领域,串行端口(Serial Port)是一种常见的硬件接口,用于设备间的通信。PortTest是一款专为串口调试设计的实用工具,它可以帮助用户检测和测试串口通讯功能,确保...

    C++test(VS2010插件版)简明操作手册-亲测可用.doc

    C++test简明操作手册 C++test是一款功能强大的测试工具,旨在帮助开发者编写高质量的代码。作为Parasoft公司的旗舰产品,C++test提供了全面的测试解决方案,涵盖了静态测试、动态测试、测试用例生成等多方面的测试...

Global site tag (gtag.js) - Google Analytics