Hibernate 配置详解 (一)
hibernate的基本用法

hibernate的基本用法Hibernate是一个开源的Java框架,用于简化数据库操作。
它为开发人员提供了一个更加简单、直观的方式来管理数据库,同时也提高了应用程序的性能和可维护性。
本文将逐步介绍Hibernate的基本用法,包括配置、实体映射、数据操作等。
一、配置Hibernate1. 下载和安装Hibernate:首先,我们需要下载Hibernate的压缩包并解压。
然后将解压后的文件夹添加到Java项目的构建路径中。
2. 创建Hibernate配置文件:在解压后的文件夹中,可以找到一个名为"hibernate.cfg.xml"的文件。
这是Hibernate的主要配置文件,我们需要在其中指定数据库连接信息和其他相关配置。
3. 配置数据库连接:在"hibernate.cfg.xml"文件中,我们可以添加一个名为"hibernate.connection.url"的属性,用于指定数据库的连接URL。
除此之外,还需要指定数据库的用户名和密码等信息。
4. 配置实体映射:Hibernate使用对象关系映射(ORM)来将Java类映射到数据库表。
我们需要在配置文件中使用"mapping"元素来指定实体类的映射文件。
这个映射文件描述了实体类与数据库表之间的对应关系。
二、实体映射1. 创建实体类:我们需要创建一个Java类,用于表示数据库中的一行数据。
这个类的字段通常与数据库表的列对应。
同时,我们可以使用Hibernate提供的注解或XML文件来配置实体的映射关系。
2. 创建映射文件:可以根据个人喜好选择使用注解还是XML文件来配置实体类的映射关系。
如果使用XML文件,需要创建一个与实体类同名的XML文件,并在其中定义实体类与数据库表之间的映射关系。
3. 配置实体映射:在配置文件中,我们需要使用"mapping"元素来指定实体类的映射文件。
hibernate的用法 -回复

hibernate的用法-回复Hibernate是一个开源的对象关系映射(ORM)框架,用于将Java程序中的对象与关系型数据库中的数据进行映射,提供了数据库访问的便捷方式。
本文将详细介绍Hibernate的用法,包括配置Hibernate、映射关系配置、实体操作、查询语言等方面。
一、Hibernate配置1. 引入依赖:首先需要在项目中引入Hibernate的依赖,可以通过Maven 或Gradle来管理依赖。
2. 配置数据源:在Hibernate中,使用一个DataSource来连接数据库。
可以配置一个连接池如C3P0或HikariCP,并将数据源的相关信息配置在一个属性文件(比如hibernate.properties)中。
3. 配置SessionFactory:SessionFactory是Hibernate中的一个重要接口,用于创建Session对象。
配置SessionFactory需要指定数据库方言(Dialect)、连接池、实体类所在的包路径等。
二、映射关系配置1. 创建实体类:在Hibernate中,一个实体类对应数据库中的一张表。
需要在实体类中使用注解或XML配置来映射实体类与数据库表之间的关系,包括定义表名、字段名、主键等。
2. 配置映射文件:Hibernate支持两种方式来配置映射关系,一种是使用注解,另一种是使用XML文件。
通过注解方式的优势是简洁,但是不够灵活。
使用XML文件的优势是可以灵活定义映射关系。
3. 配置关联关系:在Hibernate中,实体类之间可以存在关联关系,如一对一、一对多、多对多等。
通过注解或XML配置,可以定义实体类之间的关联关系,以及对应的关系属性。
三、实体操作1. 创建Session:在Hibernate中,使用Session来实现对数据库的操作。
Session作为一个轻量级的对象,用于与数据库进行交互。
可以通过SessionFactory创建一个Session对象。
hibernate配置及原理

ibernate的原理--ORM--------------------------------------------------------------------------1.启动Hibernate2.构建Configuration实例,初始化实例中的所有变量.Configuration cfg=new Configuration.configure();加载hibernate.cfg.xml文件至该实例(内存)通过hibernate.cfg.xml文件中的mapping节点配置并加载.hbm.xml文件至该实例(内存) 3.利用上面创建的Configuration实例构建一个SessionFactory实例SessionFactory sessionFactory=cfg.getSessionFactory();4.由上面香到的SessionFactory实例创建连接Session=sessionFactory.getSession();5.由上面得到的Session实例创建事务操作接口,Transaction的一个实例txTransaction tx=session.beginTransaction();6.通过Session接口提供的各种方法操纵对数据库的访问.7.提交数据操作结果.mit();8.关闭数据连接.session.close();1.Hibernate 的初始化.读取Hibernate 的配置信息-〉创建Session Factory1)创建Configeration类的实例。
它的构造方法:将配置信息(Hibernate config.xml)读入到内存。
一个Configeration 实例代表Hibernate 所有Java类到Sql数据库映射的集合。
2)创建SessionFactory实例把Configeration 对象中的所有配置信息拷贝到SessionFactory的缓存中。
hibernate配置

目录
1 Hibernate概述 2 第一个Hibernate程序 3 Hibernate的配置文件 4 深入理解持久化对象 5 Hibernate的映射文件 6持久化对象 如果PO 实例与Session实例关联起来,且该实例关联到数据库的记录
脱管对象 如果PO实例曾经与Session实例关联过,但是因为Session的关闭等原 因,PO实例脱离了Session 的管理
Hibernate全面解决方案架构解释
事务(Transaction) 代表一次原子操作,它具有数据库事务的概念 但它通过抽象,将应用程序从底层的具体的JDBC、JTA和CORBA 事务中隔离开。 一个Session 之内可能包含多个Transaction对象。 所有的持久化操作都应该在事务管理下进行,即使是只读操作。
管态,对该对象操作无须锁定数据库,不会造成性能的下降。
持久化对象的状态迁移
持久化实体: 1、Serializable save(object obj) 将对象变为持久化状态 2、void persist(object obj) 将对象转化为持久化状态 3、Serializable save(object obj,object pk) 将obj对象转化为持久化状态,该对象保存到数据库,指定主键值 4、void persist(object obj,object pk) 也加了一个设定主键
Hibernate工作原理
Configuration cfg = new Configuration().configure();
开始
启动hibernate
构建Configuration 实例,初始 化该实例中的所有变量
Hibernate基本使用及配置

Hibernate基本使⽤及配置Hibernate基本使⽤及配置Hibernate是什么框架Hibernate是⼀个开放源代码的对象关系映射框架1.它对JDBC进⾏了⾮常轻量级的对象封装2.它将POJO与数据库表建⽴映射关系,是⼀个全⾃动的orm框架3.Hibernate可以⾃动⽣成SQL语句,⾃动执⾏,使得Java程序员可以随⼼所欲的使⽤对象编程思维来操纵数据库。
4.Hibernate可以应⽤在任何使⽤JDBC的场合,既可以在Java的客户端程序使⽤,也可以在Servlet/JSP的Web应⽤中使⽤5.它是持久层的ORM框架POJO是什么简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称EJB是什么是Sun的JavaEE服务器端组件模型,设计⽬标与核⼼应⽤是部署分布式应⽤程序。
简单来说就是把已经编写好的程序(即:类)打包放在服务器上执⾏。
ORM是什么Object Relational Mapping(对象关系映射),指的是将⼀个Java中的对象与关系型数据库中的表建⽴⼀种映射关系,从⽽操作对象就可以操作数据库中的表。
使⽤Hibernate有什么好处1.对JDBC访问数据库的代码进⾏了轻量级封装,简化了数据访问层繁琐重复性的代码,减少了内存消耗,加快了运⾏效率2.是⼀个基本JDBC的主流持久化框架,很⼤程度上简化了DAO层的编码⼯作3.性能⾮常好,映射灵活性⽐较好,⽀持多关系数据库,⼀对⼀,⼀对多,多对多的各种复杂关系4.可扩展性强,源代码及API开放,当本⾝功能不够⽤时,可以⾃⾏编码进⾏扩展框架下载地址/doc/81822fa9366baf1ffc4ffe4733687e21af45ffb1.html /orm/Hibernate⽬录解析documentation Hibernate开发的⽂档project Hibernate提供的参考项⽬lib Hibernate开发的⽂档required Hibernate开发的必须的依赖包optional Hibernate开发的可选的jar包Hibernate使⽤1.创建⼀个项⽬(普通Java项⽬、Web项⽬都可以)2.引⼊必须的jar包①数据库的驱动包②Hibernate开发必须的Jar包3.建表5.创建Hibernate的核⼼配置⽂件,通常都叫hibernate.cfg.xml①创建完毕后,也有⼀个约束要引⼊,在org.hibernate包当中可以找到对应的dtd configuration.dtd数据库相关配置(如果属性名记不住):在⽬录提供的project当中有⼀个etc,在etc当中有⼀个hibernate.properties 的⽂件打开。
Hibernate基本配置与操作

<property name="属性名" column="表的字段名"
type="..." length="" unique="true|false" not-null="true|false"/>
</class>
</hibernate-mapping>
4. session操作的典型代码:
Session session = ...;
Transaction tx = null;
try{
tx = session.beginTransaction();
session.save();....
mit();
Session session = factory.openSession();
☆4. Transaction:Hibernate对象底层事务的封装,默认采用手工提交事务方式,所以在进行CRUD操作时,要显示开启一个事务。
Transaction tx = session.beginTransaction();
5) update() 可以使一个脱管对象重附到新的session中, 成为持久化对象。
6) merge() 方法做合并。
传入瞬时对象,做插入。创建一个持久对象,把瞬时对象的状态复制过来,返回这个持久化对象。
传入脱管对象:先检查session缓存中有没有跟这个脱管对象的OID相同的持久化对象
<class name="实体类名" table="表名">
<id name="OID的名字" column="表的主键名" type="hibernate内置的映射类别">
Hibernate配置(web开发)

Hibernate的映射文件Hibernate的映射文件映射文件也称映射文档,用于向Hibernate提供关于将对象持久化到关系数据库中的信息.持久化对象的映射概念可全数存储在同一个映射文件中,也可将每一个对象的映射概念存储在独立的文件中.后一种方式较好,因为将大量持久化类的映射概念存储在一个文件中比较麻烦,建议采纳每一个类一个文件的方式来组织映射文档.利用多个映射文件还有一个优势:若是将所有映射概念都存储到一个文件中,将难以调试和隔离特定类的映射概念错误.映射文件的命名规那么是,利用持久化类的类名,并利用扩展名.映射文件需要在中注册,最好与领域对象类放在同一目录中,如此修改起来很方便.领域对象和类public class User{个选项在第一次启动程序时放开,以后切记关闭 --><!-- <property name="">create</property> --><!-- 持久化类的映射文件 --><mapping resource="com/sitinspring/domain/" /><mapping resource="com/sitinspring/domain/" /><mapping resource="com/sitinspring/domain/" /><mapping resource="com/sitinspring/domain/" /></session-factory></hibernate-configuration>映射文件物理位置例如映射文件的大体结构映射概念以hibernate-mapping元素开始, package属性设置映射中非限定类名的默许包.设置那个属性后,关于映射文件中列出的其它持久化类,只需给出类名即可.要引用指定包外的持久化类,必需在映射文件中提供全限定类名.在hibernate-mapping标签以后是class标签.class标签开始指定持久化类的映射概念.table属性指定用于存储对象状态的关系表.class元素有很多属性,下面将逐个介绍.IDId元素描述了持久化类的主码和他们的值如何生成.每一个持久化类必需有一个ID元素,它声明了关系表的主码.如右:Name属性指定了持久化类顶用于保留主码值的属性,该元素说明,User类中有一个名为id的属性.若是主码字段与对象属性不同,那么能够利用column属性.<id name="id" column="ID" ><generator class=""/></id>生成器生成器创建持久化类的主码值.Hibernate提供了多个生成器实现,它们采纳了不同的方式来创建主码值.有的是自增加式的,有点创建十六进制字符串, 还能够让外界生成并指定对象ID,另外还有一种Select生成器你那个从数据库触发器trigger检索值来取得主码值.右边利用了用一个128-bit的UUID算法生成字符串类型的标识符,这在一个网络中是唯一的(利用了IP地址)。
hibernate配置文件详解

2.3 创建Hibernate配置文件Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性,这个配置文件应该位于应用程序或Web程序的类文件夹classes 中。
Hibernate配置文件支持两种形式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件,采用“键=值”的形式。
建议采用xml格式的配置文件。
xml配置文件可以直接对映射文件进行配置,并由Hibernate自动加载,而properties文件则必须在程序中通过编码加载映射文件。
2.3.1 创建xml格式的配置文件Hibernate默认的xml格式的配置文件名称为hibernate.cfg.xml。
下面将以一个典型的连接SQL Server 2000的Hibernate配置文件为例,对xml格式的配置文件进行解析。
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configurationPUBLIC "-//Hibernate/Hibernate Configuration DTD//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><!--SessionFactory配置--><session-factory>指定数据库使用的SQL方言。
尽管多数关系数据库都支持标准的SQL语言,但是笔者建议在此指定自己的SQL方言。
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>指定连接数据库用的驱动,对于不同的关系数据库,其驱动是不同的,需要根据实际情况修改。
hibernate配置文件说明

create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行。会导致数据库表数据丢失。
create-drop: 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
(2)hibernate.show_sql打印所有的SQL语句到控制台,可以通过设置org.hibernate.SQL类的日志策略到DEBUG级,实现同样的效果。取值 true|false。
(3)hibernate.format_sql 格式化SQL语句在打印到控制台或写入日志文件时。取值true|false。
hibernate.cache.provider_class=org.hibernate.cache.SingletonEhCacheProvider
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
# 二级缓存配置文件
#Batch Size越大,批量操作的向数据库发送sql的次数越少,速度就越快。
hibernate.jdbc.batch_size=50
#设置外连接抓取树的最大深度取值. 建议设置为0到3之间
#hibernate.max_fetch_depth
#是否显示最终执行的SQL(开发环境)
hibernate.show_sql=false
# 格式化显示的SQL
hibernate.format_sql=false
# 如果设置为true,Hiberante将为SQL产生注释,这样更利于调试。默认值为false。取值为true|false。
【Hibernate】Hibernate框架配置详解

【Hibernate】Hibernate框架配置详解通过Hibernate我们可以⽅便地操作数据库读取出来的信息,减少了繁琐的JDBC操作。
⼀般情况下,有两种⽅式可以进⾏Hibernate的配置,⼀种是通过配置⽂件进⾏配置,另⼀种是通过注解进⾏配置。
我将通过注解简单介绍Hibernate框架的配置。
Hibernate框架的配置⼀般可以分为以下⼏个步骤:1.添加基本的Hibernate Jar包2.添加注解的Jar包3.编写Hibernate.cfg.xml⽂件4.编写POJO⽂件,并编写注释5.编写测试⽂件,导出到数据库进⾏测试。
⼀、导⼊基本的Hibernate Jar包⼆、导⼊Hibernate Annotation 的Jar包三、编写Hibernate.cfg.xml⽂件1<?xml version='1.0' encoding='UTF-8'?>2<!DOCTYPE hibernate-configuration PUBLIC3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"4 "/hibernate-configuration-3.0.dtd">56<!-- Generated by MyEclipse Hibernate Tools. -->7<hibernate-configuration>89<session-factory>10<!-- 配置JDBC连接属性 -->11<property name="myeclipse.connection.profile">12 com.mysql.jdbc.Driver13</property>14<property name="connection.url">15 jdbc:mysql://localhost:3306/basehibernate16</property>17<property name="ername">root</property>18<property name="connection.password">sa</property>19<property name="connection.driver_class">20 com.mysql.jdbc.Driver21</property>22<property name="dialect">23 org.hibernate.dialect.MySQLDialect24</property>2526<!-- ⾃动建表 -->27<property name="hbm2ddl.auto">auto</property>28<property name="connection.autocommit">true</property>29<mapping class="com.basehibernate.pojo.Department"/>30<mapping class="com.basehibernate.pojo.Employee"/>31<mapping class="com.basehibernate.pojo.Meal"/>32<mapping class="com.basehibernate.pojo.OrderMeal"/>33<mapping class="com.basehibernate.pojo.GradeMeal"/>34<mapping class="com.basehibernate.pojo.RewardMeal"/>3536</session-factory>3738</hibernate-configuration>不同数据库连接在Hibernate.cfg.xml中的配置不同,这⾥以MySQL为例。
hibernate配置大全

<hibernate-mapping package="包名"><classs schema="数据库用户名" name="类名" table="表名"><id name="主键在java类中的字段名" column="对应表中字段" type="类型"><generator class="主键生成策略"/></id> ……</class></hibernate-mapping>1. 主键(id)Hibernate的主键生成策略有如下几种:1) assigned主键由外部程序负责生成,在save() 之前指定。
2) hilo通过hi/lo 算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。
3) seqhilo与hilo 类似,通过hi/lo 算法实现的主键生成机制,需要数据库中的Sequence,适用于支持Sequence 的数据库,如Oracle。
4) increment主键按数值顺序递增。
此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。
这种方式可能产生的问题是:不能在集群下使用。
5) identity采用数据库提供的主键生成机制。
如DB2、SQL Server、MySQL 中的主键生成机制。
6) sequence采用数据库提供的sequence 机制生成主键。
如Oralce 中的Sequence。
7) native由Hibernate 根据使用的数据库自行判断采用identity、hilo、sequence 其中一种作为主键生成方式。
8) uuid.hex由Hibernate 基于128 位UUID 算法生成16 进制数值(编码后以长度32 的字符串表示)作为主键。
hibernate配置参数

<prop key="hibernate.dbcp.ps.maxWait">1200</prop>
<prop key="hibernate.dbcp.ps.maxIdle">10</prop>
<property name="url" value="${jdbc.url}" /> //连接url,
<property name="username" value="${ername}" /> //连接用户名
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>WEB-INF/hibernate.cfg.xml</value> //hibernate配置文件位置
</prop>
<prop key="hibernate.query.factory_class"> //选择HQL解析器的实现
org.hibernate.hql.ast.ASTQueryTranslatorFactory
<property name="password" value="${jdbc.password}" /> //连接密码
Hibernate详细配置

<property name="name" column="name"/>
2010-02-01
8
配置映射
类:
public class Card { private String id; private String serial; private Citizen citizen; }
<property name="name" column="name"/> <set name="classTbs" table="teacher_class"> <key column="teacher_id"/> <many-to-many column="CLASS_ID_MY" class="ClassTb"/> </set> </class>
2010-02-01
3
properties
Properties properties=new Properties(); properties.load(getClass().
.getClassLoader().getResourceAsStream("hib
ernate.properties")); Configuration config = new Configuration(); config.addProperties(System.getProperties()); config.addProperties(properties) SessionFactory sessionFactory = config.buildSessionFactory(); sessionFactory.openSession();
Hibernate入门-基础配置

Hibernate入门 - 基础配置作者:robbin (MSN:robbin_fan AT hotmail DOT com)版权声明:本文严禁转载,如有转载请求,请和作者联系Hibernate配置文件可以有两种格式,一种是hibernate.properties,另一种是hibernate.cfg.xml后者稍微方便一些,当增加hbm映射文件的时候,可以直接在hibernate.cfg.xml里面增加,不必像hibernate.properties必须在初始化代码中加入。
但不管怎么说,两种的配置项都是一样的,下面详细介绍:在Hibernate的src目录下有一个hibernate.properties模板,我们不必自己从头写,修改模板就可以了:)∙hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'这个配置意思是当你在Hibernate里面输入true的时候,Hibernate会转化为1插入数据库,当你在Hibernate里面输入false的时候,Hibernate会转化为0插入数据库,后面的Y,N同理。
对于某些数据库,例如Oracle来说,没有boolean数据类型,就是采用1代表true,0代表false,因此使用这个配置在Hibernate里面直接用true/false 会非常直观。
∙hibernate.dialect net.sf.hibernate.dialect.MySQLDialecthibernate.connection.driver_class com.mysql.jdbc.Driverhibernate.connection.url jdbc:mysql:///testername roothibernate.connection.password这是一个连接MySQL数据库的例子,很直观,不必解释,不同的数据库的连接参数模板中全部给出了。
Hibernate核心配置

Hibernate核心配置1.Hibernate体系结构H ibernate位于应用程序和数据库之间,将数据库底层完全封装,应用程序只需要操作Persistent Objects(持久化对象),通过Hibernate生成SQL 语句,完成对数据表中记录的操作hibernate 支持两种核心配置文件①src/hibernate.cfg.xml (完成基本属性配置,加载hbm映射文件).<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> .<mapping resource="cn/itcast/domain/Customer.hbm.xml"/> 加载hbm映射②src/hibernate.properties (key-value文件键值对,主要配置 hibernate基本属性 ).hibernate.connection.driver_class=com.mysql.jdbc.Driver* hibernate.properties 无法加载 hbm映射,采用properties方式,必须手动编程加载 hbm文件或者持久化类2.Hibernate的常用属性①必须属性.hibernate.dialect 操作数据库方言.hibernate.connection.driver_class 连接数据库驱动程序.hibernate.connection.url 连接数据库URLername 数据库用户名.hibernate.connection.password 数据库密码②可选属性.//在控制台上输出SQL语句,hibernate 自己完成的,并没有使用日志系统,当关闭日志后,控制台仍然有SQL语句.hibernate.show_sql true..//格式化控制台输出的SQL语句*SQL 会自动换行,对于比较长的sql 查看方便.hibernate.format_sql true..hibernate.hbm2ddl.auto create/create-drop/update/validate DDL策略.* DDL 主要建表语句,和表结构更新语句.create:表示启动的时候先drop,再create (测试人员准备标准测试数据).create-drop: 也表示创建,只不过再系统关闭前执行一下drop (测试程序是否正确).update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新(建表,更新表结构【只能加】).validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新.*** 在产品开发中update 和validate 使用较多..hibernate.connection.autocommit true 事务是否自动提交.* 用于解决没有开启事务的操作时,事务如何自动处理.* 默认事务自动回滚。
Hibernate配置文件

数据库自动生成
uuid(字符串类型) increment(整型数值类型) identity (整型数值类型) sequence (整型数值类型) native(整型数值类型)
assigned
assigned策略是由程序员手工控制输入数据模型 OID的一种id生成策略 assigned策略不限定数据库中id字段的类型 assigned策略无法保障id的不重复性 assigned策略通常配合外部自定义的id生成策略使 用,否则将具有很大的风险性
基本数据有一个默认值的特点,特性在对象数据封装时存在 着数据隐患,一旦基本数据类型取值为默认值,开发者将无 法区分该值是用户输入数据还是未输入数据由系统默认给出 封装类数据类型可以使用是否为null来判定该数据是来自于 用户输入还是未输入
Hibernate配置文件分类
Hibernate配置文件分为两大类
数据库连接的配置 可选配置 资源注册 二级缓存(后面详细讲解)
数据库连接配置
hibernate.connection.driver_class
JDBC驱动类类名
hibernate.connection.url
JDBC连接字符串
ername
代理主键:不具有业务含义
声明一个不具有任何业务含义的属性,仅用于区分对象,这 种属性即便暴漏给最终用户查看,也不具有安全隐患
OID选择应尽量避免使用自然主键,改用代理主键
对象属性的类型选择
Java对象中的属性描述对象具有的状态,在对状态 进行描述时,应避免使用基本数据类型,改用对应 的封装类模型
property格式
属性与字段的映射要配置数据模型中声明的属性与 字段之间的对应关系,共有以下三种格式 格式一: 格式二: 格式三:
hibernate实现有两种配置,xml配置与注释配置

Hibernate实现有两种配置,xml配置与注释配置hibernate实现有两种配置,xml配置与注释配置。
(1):xml配置:hibernate.cfg.xml (放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中)<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/hxj</property><property name="ername">root</property> <property name="connection.password">root</property><!-- JDBC connection pool (use the built-in) --><property name="connection.pool_size">1</property><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property><!-- Disable the second-level cache --><property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><!—update也可以用create/create-drop/update/validate代替, create 表示可以根据实体配置文件来自动生成表(只能生成表).--><property name="hbm2ddl.auto">update</property>// 实体配置类<mapping resource="com/wsw/struts/model/Person.hbm.xml"/></session-factory></hibernate-configuration>(2): 实体配置类:xxx.hbm.xml<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/hibernate-mapping-3.0.dtd"><hibernate-mapping package=”com.wsw.struts.model”><class name="Person" table="per"><id name="id" column="id"><generator class="native"/> //字段自增</id><property name="username" column="p_username"/><property name="age" column="p_age"/></class></hibernate-mapping>(3):测试类(包括获取SessionFactory类和实体测试类)SessionFactory类:HibernateUtilpublic class HibernateUtil {private static final SessionFactory sessionFactory;static {try {// Create the SessionFactory from hibernate.cfg.xmlsessionFactory = new Configuration().configure().buildSessionFactory();} catch (Throwable ex) {// Make sure you log the exception, as it might be swallowedSystem.err.println("Initial SessionFactory creation failed." + ex);throw new ExceptionInInitializerError(ex);}}public static SessionFactory getSessionFactory() {return sessionFactory;}}实体测试类:PersonManager-----------------------------------------------------------------------------------public class PersonManager {public static void main(String[] args) {createAndStorePerson();HibernateUtil.getSessionFactory().close();}private static void createAndStorePerson() {Session session = // 通过Session工厂获取Session对象HibernateUtil.getSessionFactory().getCurrentSession();session.beginTransaction(); //开始事务Person person = new Person();person.setUsername("何小景");person.setAge(26);session.save(person);session.getTransaction().commit(); // 提交事务}}(4):注解方式:注解的方式与xml很很多类似:首先是需要加入4个jar包:hibernate-commons-annotations.jar 、 hibernate-annotations.jar ejb3-persistence.jar 、 hibernate-jpa-2.0-api-1.0.1.Final.jar下面是不同的地方:(1):hibernate.hbm.xml 文件中把引用:xxx.hbm.xml改为引用实体类:即把:<mapping resource="com/wsw/hibernate/model/Person.hbm.xml"/>改为:<mapping class="com.wsw.hibernate.model.Teacher" />(2):获取SessionFactory方式发生了变化:即:由SessionFactory sf = new Configuration().configure().buildSessionFactory()改为:SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory() (3):注解方式不需要在xxx.hbm.xml把实体类与表进行映射。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate 配置详解(一)
Hibernate的基本配置文件有两种:hibernate.cfg.xml和*.hbm.xml文件。
前者包含了Hibernate与数据库的基本连接信息,在Hibernate工作的初始阶段,这些信息被先后加载到Configuration和SessionFactory实例;后者包含了Hibernate的基本映射信息,即系统中每一个类与其对应的数据库表之间的关联信息,在Hibernate工作的初始阶段,这些信息通过hibernate.cfg.xml的mapping 节点被加载到Configuration和SessionFactory实例。
这两种文件信息包含了Hibernate的所有运行期参数。
下面我们用详细的例子来说明这两种文件的基本结构和内容。
一、hibernate.cfg.xml文件:
<!--该文件的开头信息,对Hibernate而言,该类文件基本都这么开头:--> <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"/hibernate-configuration-3.0.dtd">
<!-- 正文开始-->
<hibernate-configuration>
<!--下面是数据库的基本连接信息,对一个应用来说,设置一个session-factory节点就够了,除非我们中间使用了多个数据库--> <session-factory>
<!--数据库驱动信息-->
<property
name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!--url信息-->
<property
name="connection.url">jdbc:mysql://localhost:3306/webases</property>
<!--用户名-->
<property name="ername">root</property>
<!--密码-->
<property name="connection.password">274507</property>
<!--数据库方言信息-->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--指定Hibernate映射文件路径-->
<mapping resource="com/Hibernate/test_products.hbm.xml" />
</session-factory>
</hibernate-configuration>。