Hibernate入门-配置

合集下载

Hibernate学习笔记

Hibernate学习笔记

Hibernate项目的构建与配置1.在项目里倒入Hibernate所必须的Jar包(1)Hibernate框架可以使用在任何的Java项目里,并不一定是Web项目。

只需要在项目里倒入Hibernate所必须要使用的jar包就可以了。

(2)在Hibernate的官网下载hibernate-release-4.2.2.Final.zip解压,要使用Hibernate必须导入的jar包就在目录“hibernate-release-4.2.2.Final\lib\required”下。

倒入此路径下的所有jar包就可以了。

2.配置hibernate.cfg.xml文件(1)配置hibernate.cfg.xml文件可以参考“\project\etc”目录下的hibernate.cfg.xml文件与hibernate.properties文件。

(2)使用Hibernate连接MySQL的hibernate.cfg.xml配置文件如下:<hibernate-configuration><session-factory>(设置显示Hibernate产生的SQL语句)<property name="show_sql">true</property>(设置MySQL的SQL语法的方言)<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>(设置MySQL的驱动程序)<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>(设置MySQL的数据库路径、用户名、密码)<property name="hibernate.connection.url">jdbc:mysql:///java</property><property name="ername">root</property><property name="hibernate.connection.password">lizhiwei</property>(设置当数据库要保存的表不存在时,就新建表)<property name="hibernate.hbm2ddl.auto">update</property>(设置对象与数据库表的关系映射文件)<mapping resource="vo/User.hbm.xml"/></session-factory></hibernate-configuration>(3)此配置文件一般放在项目的src目录下。

Hibernate笔记2关于配置文件和表映射

Hibernate笔记2关于配置文件和表映射

Hibernate笔记2关于配置⽂件和表映射使⽤hibernate的准备⼯作。

⼀导⼊Hibernate 相关jar包和数据库驱动。

⼆新建项⽬,在src⽂件中导⼊hibernate.cfg.xml 总配置⽂件log4j.properties ⽇志⽂件Hibernate⽀持两种配置⽂件格式:hibernate.properties和hibernate.cfg.xml,⼤概xml形式⽤的⽐较多。

现在以 xml形式为例。

1 配置⽂件配置相关信息1<hibernate-configuration>2<session-factory>3<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</property> //连接路径4<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> //mysql驱动5<property name="ername">root</property> //数据库⽤户名 root6<property name="hibernate.connection.password">123</property> //数据库密码 1237<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> //⽅⾔8<property name="hibernate.show_sql">true</property> //显⽰sql语句9 <property name="format_sql">true</proterty> //sql语句⾃动换⾏10<mapping resource="com/Test/po/User.hbm.xml"/>11</session-factory>12</hibernate-configuration>2 测试是否配置成功public class Test extends TestCase {public void Test1() throws Exception{Configuration config= new Configuration().configure(); //加载xml格式配置⽂件,如果加载properties格式配置⽂件,将.configure()去掉既可。

hibernate 配置cascade 及all-delete-orphan

hibernate 配置cascade 及all-delete-orphan

cascade几种取值:save-update: 级联保存(load以后如果子对象发生了更新,也会级联更新). 但它不会级联删除delete: 级联删除, 但不具备级联保存和更新all-delete-orphan: 在解除父子关系时,自动删除不属于父对象的子对象, 也支持级联删除和级联保存更新.all: 级联删除, 级联更新,但解除父子关系时不会自动删除子对象.delete-orphan:删除所有和当前对象解除关联关系的对象none:...级联保存和级联更新总是集合在一起的, 所以没单独的save 或update当关联双方存在父子关系,就可以在set 处设定cascade 为all-delete-orphan所谓父子关系,即指由父方控制子方的持久化周期,子方对象必须和一个父方对象关联。

如果删除父方对象,应该级联删除所有关联的子方对象;如果一个子方对象不再和一个父方对象关联,应该把这个子方对象删除。

all-deleteorphan 的能力:1. 当保存或更新父方对象时,级联保存或更新所有关联的子方对象,相当于cascade 为save-update2. 当删除父方对象时,级联删除所有关联的子方对象,相当于cascade 为delete3. 删除不再和父方对象关联的所有子方对象解除父子关系的java 语句例如:customer.getOrders().remove(order);order.setCustomer(null);mit();如果cascade 属性取默认值null,当解除父子关系时,会执行如下sql:update ORDER set CUSTOMER_ID=null where ID=2如果要把它也删掉,则设置:<set name="orders" cascade="all-delete-orphan" inverse="true"><key column="CUSTOMER_ID" /><one-to-many class="mypack.Order" />再运行时就会执行:delete from ORDERS where CUSTOMER_ID=2 and ID=2;。

hibernate配置多种数据库

hibernate配置多种数据库

hibernate配置多种数据库在hibernate中,可以配置很多种数据库,例如MySql、Sql Server和Oracle。

下面介绍几个主要的数据库1. MySql连接配置MySql数据库的hibernate连接设置,在hibernate.cfg.xml文件中<hibernate-configuration><session-factory><!--各属性的配置--><!—为true表示将Hibernate发送给数据库的sql显示出来--><property name="show_sql">true</property><!-- SQL方言,这边设定的是MySQL --><property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property><!--一次读的数据库记录数--><property name="jdbc.fetch_size">50</property><!--设定对数据库进行批量删除--><property name="jdbc.batch_size">30</property><!--驱动程序--><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- JDBC URL --><property name="connection.url">jdbc:mysql://localhost/dbname?characterEncoding=gb2312</property><!--数据库用户名--><property name="ername">root</property><!--数据库密码--><property name="connection.password">root</property><!—映射文件--><mapping resource="com/amigo/pojo/User.hbm.xml"/><mapping resource="com/amigo/pojo/Org.hbm.xml"/></session-factory></hibernate-configuration>上面使用的驱动类是com.mysql.jdbc.Driver.需要将MySql的连接器jar包(eg. mysql-co nnector-java-Dbname为数据库名字5.0.4 -bin.jar )加入到classpath中。

Hibernate教程_从入门到精通_第二篇(共四篇)

Hibernate教程_从入门到精通_第二篇(共四篇)
第二章 Hibernate API
目标: •Hibernate API简介
Hinernate的体系结构(运行时)





SessionFactory:它保存了对当前数据库配置的所有映射关系,它是将某 个数据库的映射关系经过编译之后全部保存在内存中的。 它还是生成 Session的工厂,它在进行实例化的过程中将会用到ConnectionProvider。 一个SessionFactory对应一个数据库连接,当数据库连接改变时需要修改 SessionFactory Sesion: 是进行持久化操作的基础,所有的持久化操作都是在Session的 基础上进行的。它相当与JDBC中的Connection。它是Hibernate的持 久化 管理器的核心,提供了一系列的持久化操作方法。另外,它还持有一个针 对持久化对象的一级缓存,在遍历持久化对象或者根据持久化标识查找对 象的时候会用 到。 Transation:功能上和数据库中的事务完全一样,通过它实现对数据库中 事务的控制。Transation对象是Session对象产生的,所以他的生命周期比 Session短。一个Session的生命周期中可以有多个Transaction对象。 ConnectonProvider:主要作用是生成与数据库建立了连接的JDBC对象 ,同时他还作为数据库连接的缓冲池。通过ConnectionProvider实现了应 用程序和底层的DataSource和DriverManager的隔离。 TransactionFactory:是生成Transaction对象的工厂,通过 TransactionFactory实现了事务的封装,使其具体的实现方法与应用程序无 关。

判断一个实体对象是否处于瞬态: 该实体对象的<id>属性(如果存在)的值为空 如果在映射文件中为<id>设置了unsaved-value属性,并且 实体对象的id属性的值与unsaved-value属性的值相同 如果这个实体对象配置version属性,并且version属性的 空 在映射文件中为version属性设置了unsaved-value属性,并且 version属性的值与unsaved-value属性的值相同。 如果设置了interceptor,并且interceptor的isUnsaved() 方法的返回值为true

NHibernate简单配置过程

NHibernate简单配置过程

NHibernate 系列研究日期:2007年05月21日来源:BLOG 作者:罗江华添加:伊扬.NET教程网得分:3.00难度:什么是NHibernateNHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。

Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。

NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。

NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。

你的代码仅仅和对象关联,NHibernat 自动产生S QL语句,并确保对象提交到正确的表和字段中去。

为什么写这个任何熟悉Hibernate的人会发现这篇文章和Glen Smith 的 A Hitchhiker's Guide to Hiberna te 非常相近。

这里的内容正是基于他的指南,因此所有的感谢都应该给与他。

NHibernate的文档并非每处都和Hibernate的文档一致。

然而,项目的相似应该能使读者通过读Hibernate的文档来很好的理解NHibernate如何工作。

这篇文章意在让你尽可能快的开始使用NHibernate。

它将介绍如何持久化一个简单的对象到一张表里。

想得到更多的复杂的例子,可以参考NUnit测试及附带代码。

开发的过程Nhibernate未来将会提供一些工具帮助你自动产生schema文件(现在还是基于代码)或是通过映射文件产生类(在筹措阶段)或是更新schema(来自于一个新开发者的建议)。

然而,这里我们的例子是假定一切来自于完全手写,包括设置表和.Net类的编写。

我们将进行以下步骤。

1.新建一个将要持久化.Net对象的表2.构建一个需要被持久化的.Net类3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件4.构建一个让NHibernate知道如何连接数据库的配置文件]5.使用NHibernate的API第一步:写构建表的SQL这里我们将使用的是一个非常简单的例子。

Hibernate 安装与入门示例

Hibernate 安装与入门示例目录1.Hibernate安装 (1)2.Hibernate入门示例 (2)2.1.创建USERS表 (2)2.2.定义USERS表对应的Model类 (3)2.3.定义User Model类与USERS表的ORM映射 (4)2.4.把ORM映射文件注册到“hibernate.cfg.xml”文件中 (5)2.5.用户数据添加测试程序 (5)2.6.用户数据修改测试程序 (6)1.Hibernate安装(1)拷贝Hibernate的jar包到/WEB-INF/lib/目录下。

●/hibernate3.jar●/lib/required/目录下的所有jar包●连接池组件包,Hibernate包中自带有c3p0组件包:/lib/optional/c3p0/c3p0-0.9.1.jar。

如果不想用此连接池组件,也可以用其它的连接池组件。

本示例使用C3P0连接池组件。

●ejb3-persistence.jar。

此包不在Hibernate的下载包中,需另外下载。

(2)在项目的/src/目录下创建“hibernate.cfg.xml”配置文件。

配置参考如下:2.Hibernate入门示例实现对USERS表的添加和修改功能。

2.1.创建USERS表2.2.定义USERS表对应的Model类2.3.定义User Model类与USERS表的ORM映射创建User.hbm.xml映射文件,每个表都需要定义一个ORM映射文件,文件名自定义,文件放到/src/hbm/目录下(也可放到其它目录下)。

2.4.把ORM映射文件注册到“hibernate.cfg.xml”文件中把下面的配置放到“hibernate.cfg.xml”文件的“<!-- Mapping files, ORM 映射文件 -->”下方:2.5.用户数据添加测试程序2.6.用户数据修改测试程序。

hibernate映射文件的配置

1. Doctype所有的XML映射都需要定义如上所示的doctype。

DTD可以从上述URL中获取,也可以从hibernate-x.x.x/src/net/sf/hibernate目录中、或hibernate.jar文件中找到。

Hibernate总是会首先在它的classptah中搜索DTD文件。

如果你发现它是通过连接Internet查找DTD 文件,就对照你的classpath目录检查XML文件里的DTD声明。

2. hibernate-mapping这个元素包括一些可选的属性。

schema和catalog属性,指明了这个映射所连接(refer)的表所在的schema和/或catalog名称。

假若指定了这个属性,表名会加上所指定的schema 和catalog的名字扩展为全限定名。

假若没有指定,表名就不会使用全限定名。

default-cascade指定了未明确注明cascade属性的Java属性和集合类Hibernate会采取什么样的默认级联风格。

auto-import属性默认让我们在查询语言中可以使用非全限定名的类名。

<hibernate-mappingschema="schemaName" (1)catalog="catalogName" (2)default-cascade="cascade_style" (3)default-access="field|property|ClassName" (4)default-lazy="true|false" (5)auto-import="true|false" (6)package="" (7)/>(1) schema (可选): 数据库schema的名称。

(2) catalog (可选): 数据库catalog的名称。

(全)最经典的hibernate教程从入门到精通PPT资料

关系型数据 〔R)
小结
• 是一个主流的持久化框架 复杂的查询操作稍后介绍
<mapping resource="com/aptech/jb/entity/User.
• 在JDBC基础上进行分装 将程序数据在瞬时状态和持久状态之间转换的机制
<mapping resource="com/aptech/jb/entity/User. 通过映射文件保存映射信息
properties:Hibernate属性文件/Hibernate配置文件
用JDBC 持久数据
DB
Hiberante应用程序的结构
(1〕Application:运用 (2〕Persistent Object:持久化对象 〔3〕hibernate.properties:Hibernate 属性文件/Hibernate配置文件 (4〕XML Mapping:Hibernate映射文 件 (5〕Database:数据库
• 只需要少量代码就可以完成持久化工作 User user = (User)session.
datasource">java:/comp/env/pubs</property> <property name="session_factory_name">hibernate</property>
配置Hibernate关联自动加载区县对应的街道 (4〕XML Mapping:Hibernate映射文件
JDBC与Hibernate的比较
相同点: 两者都是JAVA的数据库操作中间件。 两者对于数据库进行直接操作的对象都不是
线程安全的,都需要及时关闭。 两者都可以对数据库的更新操作进行显式的

Hibernate_Configuration

一个org.hibernate.cfg.Configuration实例代表了一个应用程序中Java类型到SQL数据库映射的完整集合. Configuration被用来构建一个(不可变的(immutable))SessionFactory. 映射定义则由不同的XML映射定义文件编译而来.你可以直接实例化Configuration来获取一个实例,并为它指定XML映射定义文件. 如果映射定义文件在类路径(classpath)中, 请使用addResource():Configuration cfg = new Configuration().addResource("Item.hbm.xml").addResource("Bid.hbm.xml");一个替代方法(有时是更好的选择)是,指定被映射的类,让Hibernate帮你寻找映射定义文件:Configuration cfg = new Configuration().addClass(org.hibernate.auction.Item.class).addClass(org.hibernate.auction.Bid.class);Hibernate将会在类路径(classpath)中寻找名字为/org/hibernate/auction/Item.hbm.xml和/org/hibernate/auction/Bid.hbm.xml映射定义文件. 这种方式消除了任何对文件名的硬编码(hardcoded).Configuration也允许你指定配置属性:Configuration cfg = new Configuration().addClass(org.hibernate.auction.Item.class).addClass(org.hibernate.auction.Bid.class).setProperty("hibernate.dialect","org.hibernate.dialect.MySQLInnoDBDialect").setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test").setProperty("hibernate.order_updates", "true");当然这不是唯一的传递Hibernate配置属性的方式, 其他可选方式还包括:1.传一个java.util.Properties实例给Configuration.setProperties().2.将hibernate.properties放置在类路径(classpath)的根目录下 (rootdirectory).3.通过java -Dproperty=value来设置系统 (System)属性.4.在hibernate.cfg.xml中加入元素<property> (稍后讨论).如果想尽快体验Hbernate, hibernate.properties是最简单的方式.Configuration实例是一个启动期间(startup-time)的对象, 一旦SessionFactory创建完成它就被丢弃了.C3P0是一个随Hibernate一同分发的开源的JDBC连接池, 它位于lib目录下。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档