今天试着看了一下hibernate,就做了一个很简单的配置。
现在把它写出来也是巩固一下:
由于hibernate是完全独立的,所以这里只是为了测试可以新建一个javaProject。
我就建了一个hibernate_first工程。
然后将所需要的jar包添加到工程,主要包括:
1、hibernate的核心jar包
2、hibernate所需要的支持jar包
3、所需要的数据库驱动包(这是使用的是mysql)
接着写hibernate的配置文件hibernate.cfg.xml(/src 下)
<!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.url">jdbc:mysql://localhost/hibernate_first</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
</session-factory>
</hibernate-configuration>
此配置文件说明了hibernate与数据库连接的配置
所使用的数据库是mysql
本程序用的数据库名是hibernate_first
所以在写完此配置文件后需要到mysql中去新建一个数据库hibernate_first,以后的数据库的操作都由hibernate自动完成。
然后写了一个实体bean类User
package com.mp.hibernate;
import java.util.Date;
public class User {
//用户代码
private String id;
//用户姓名
private String name;
//密码
private String password;
//创建时间
private Date createTime;
//失效时间
private Date expireTime;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getExpireTime() {
return expireTime;
}
public void setExpireTime(Date expireTime) {
this.expireTime = expireTime;
}
}
接着就写此实体类的配置文件user.hbm.xml:
<?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>
<class name="com.mp.hibernate.User">
<id name="id">
<generator class="uuid"></generator>
</id>
<property name="name"></property>
<property name="password"></property>
<property name="createTime"></property>
<property name="expireTime"></property>
</class>
</hibernate-mapping>
其中:
<id name="id">
<generator class="uuid"></generator>
</id>
<id name="">是一个主键标识标签,name就是User类中的变量名; generator 是配置了它的生成策略的
另外这个配置文件一般是放在与实体类一起的包中。
写好了此配置文件就把它加入到hibernate.cfg.xml配置文件中
在<hibernate-mapping></hibernate-mapping> 的所有<property>之后加入
<mapping resource="com/mp/hibernate/User.hbm.xml" />
然后写一个数据库的导出类ExportDB.java:
package com.mp.hibernate;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class ExportDB {
public static void main(String[] args) {
Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);
}
}
http://developer.51cto.com/art/200906/131167.htm 写道
Configuration是 hibernate的入口,在新建一个Configuration的实例的时候,会生成一新的SettingsFactory,如果在构造参数中传入一个SettingsFactory则会将传入的SettingsFactory赋给Hibernate的SettingsFactory并执行reset()方法。
最常见的使用Configuration方式是:
Configuration cfg = new Configuration().configure();
将产生一个Configuation的实例并调用configure()方法。
configure()方法默认会在classpath下面寻找hibernate.cfg.xml文件,如果没有找到该文件,系统会打印如下信息并抛出HibernateException异常
/hibernate.cfg.xml not found
然后是将所有系统环境变量(System.getProperties())也添加到GLOBAL_PROPERTIES里面。如果hibernate.cfg.xml文件存在,系统还会验证一下这个文件配置的有效性,对于一些已经不支持的配置参数,系统将打印警告信息。
configure()方法会首先访问< session-factory >,并获取该元素的name属性,如果非空,将用这个配置的值来覆盖hibernate.properties的hibernate.session_factory_
name的配置的值,从这里我们可以看出,hibernate.cfg.xml里面的配置信息可以覆盖hibernate.properties的配置信息。
接着configure()方法访问< session-factory>的子元素,首先将使用所有的< property>元素配置的信息覆盖hibernate.properties里面对应的配置。
然后configure()会顺序访问以下几个元素的内容
1.< mapping> 2.< jcs-class-cache> 3.< jcs-collection-cache> 4.< collection-cache> 其中是必不可少的,必须通过配置< mapping>,configure()才能访问到我们定义的java对象和关系数据库表的映射文件(hbm.xml),例如:
User.hbm.xml
通过以上的分析,我们对hibernate配置文件hibernate.properties和hibernate.cfg.xml的默认的加载过程就比较清楚了。
Configuration的其他用法:
Configuration的configure ()方法还支持带参数的访问方式,你可以指定hbm.xml文件的位置,而不是使用默认的classpath下面的hibernate.cfg.xml这种方式,例如:
Configuration cfg = new Configuration().configure("myexample.xml");
同时Configuration还提供了一系列方法用来定制hibernate的加载配置文件的过程,让你的应用更加灵活,常用的是以下几种:
1.addProperties(Element) 2.addProperties(Properties) 3.setProperties(Properties) 4.setProperty(String, String) 通过以上几个方法,除了使用默认的hibernate.properties文件,你还可以提供多个.properties配置文件,使用Hibernate的时候根据不同的情况使用不同的配置文件,例如:
1.Properties properties = Properties.load("my.properties"); 2.Configuration config = new Configuration().setProperties (properties).configure(); 除了指定.properties文件之外,还可以指定.hbm.xml文件,下面列出几个常用的方法:
1.addClass(Class) 2.addFile(File) 3.addFile(String) 4.addURL(URL) 前面我们已经讲了,configure() 方法默认是通过访问hibernate.cfg.xml的元素来加载我们提供的.hbm.xml文件,上面列出的方法可以直接指定hbm.xml文件,例如addClass()方法可以直接通过指定class来加载对应的映射文件,hibernate会将提供的class的全名(包括package)自动转化为文件路径,如
net.sf.hibernate.examples.quickstart.User.class
对应net/sf/hibernate/examples/quickstart/User.hbm.xml
还可以用addFile方法直接指定映射文件。例如:
1.Configuration config = new Configuration().addClass(Cat.class); 2.Configuration config = new Configuration().addURL(Configuration.class.getResource("Cat.hbm.xml")); 3.Configuration config = new Configuration().addFile("Cat.hbm.xml"); 四 总结configuration.
Configuration提供的这些方法的好处如下:
1.一个应用中往往有很多.hbm.xml映射文件,开发的过程中如果只是为了测试某个或几个Java PO(Persistence Object),我们没有必要把所有的.hbm.xml都加载到内存,这样可以通过addClass或者addFile直接配置,显得非常灵活。
2.学习Hibernate的过程中,往往需要通过练习来体会Hibernate提供的各种特征,而很多特征是需要修改配置文件的,如果要观察相同的代码在不同的特征下的表现,就需要手工改配置文件,这样太麻烦了,而且容易出错,我们可以提供多个配置文件,每个配置文件针对需要的特征而配置,这样我们在调用程序的时候,把不同的配置文件作为参数传递进去,而程序代码里面使用setProperties和addFile指定传入的配置文件参数就可以了。
3.在单元测试中,特别是在集成测试里面,整个过程是自动化的,我们不能手工干预测试过程,往往需要准备多个配置文件针对不同的测试案例,这个时候 setProperties和addFile方法就显得特别有用了,在不同的测试案例中用这些方法来指定相应的配置文件,这样就可以做到自动化测试,保证了持续性。
其实程序中如果仅仅写了Configuration cfg = new Configuration()这个的话,它默认读取的是 properties文件,所以加上它的configure()方法,他就是读取的是hibernate.cfg.xml文件
SchemaExport 工具类 就是把cfg里面配置的对象类生成物理表了
运行该程序,然后进入mysql查看结果:
然后又写了一个客户端测试类Client.java
package com.mp.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Client {
public static void main(String[] args) {
// 读取hibernate.cfg.xml文件
Configuration cfg = new Configuration().configure();
//创建sessionFactory
SessionFactory factory = cfg.buildSessionFactory();
Session session = null;
try {
session = factory.openSession();
//开启事务
session.beginTransaction();
User user = new User();
user.setName("张三");
user.setPassword("323");
user.setCreateTime(new Date());
user.setExpireTime(new Date());
//保存数据
session.save(user);
//提交事务
session.getTransaction().commit();
} catch(Exception e) {
e.printStackTrace();
//回滚事务
session.getTransaction().rollback();
} finally {
if(session != null) {
if(session.isOpen()) {
//关闭session
session.close();
}
}
}
}
}
运行客户端类,然后去mysql查看结果
下面两次执行查询分别是在执行该类的前后:
- 大小: 4.8 KB
- 大小: 4 KB
分享到:
相关推荐
**hibernate入门配置** Hibernate 是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库事务。对于初学者来说,掌握Hibernate的配置是学习ORM技术的...
Hibernate3.3.1,MySQL5.1.36 独立的Java Application源程序,完整的Hibernate3.3.1入门级(配置)完整示例. 未用Eclipse或MyEclipse,JC几乎纯手工实现,含所需库文件. 2009-12-15
"Hibernate入门到精通" Hibernate 是一个基于Java的ORM(Object-Relational Mapping,对象关系映射)框架,它提供了一种简洁高效的方式来访问和操作关系数据库。下面是 Hibernate 的主要知识点: Hibernate 简介 ...
本压缩包提供的是Hibernate入门所需的jar包,包括了Hibernate的核心库以及与之配合使用的相关组件。让我们深入探讨一下这些jar包以及它们在Hibernate中的作用。 1. Hibernate核心库: - `hibernate-core.jar`:这...
【Hibernate入门案例源码】是针对初学者设计的一份教程,旨在帮助理解并掌握Java持久化框架Hibernate的基础应用。Hibernate是一个强大的ORM(对象关系映射)框架,它简化了数据库与Java对象之间的交互,使开发者可以...
**初学Hibernate,Hibernate入门** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了方便的数据持久化服务。在Java应用中,通过Hibernate,开发者可以将数据库操作抽象成对象模型,使得代码...
### Hibernate入门知识点详解 #### Hibernate概述与ORM思想 - **定义**:Hibernate是一个开源的、轻量级的对象关系映射(Object-Relational Mapping,简称ORM)框架,它主要应用于JavaEE架构中的DAO(Data Access ...
**Hibernate入门** Hibernate是一款强大的Java持久化框架,它简化了数据库与Java对象之间的交互,使得开发者无需编写大量的SQL语句,就能实现数据的增删改查。本教程将分为五个部分,逐步深入Hibernate的世界。 **...
【Hibernate入门 - 基础配置】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本文将深入介绍Hibernate的基础配置和功能,帮助初学者快速入门。 一、ORM框架与...
【hibernate入门小例子】是一个适合初学者的教程,主要涵盖了如何在JavaWeb项目中使用Hibernate框架与MySQL数据库进行集成。在这个例子中,我们将会深入理解Hibernate的核心概念,包括实体映射、对象关系映射(ORM)...
《Hibernate入门到精通》这本书是针对Java开发人员深入学习Hibernate框架的一份宝贵资源。Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序与数据库之间的交互。通过使用Hibernate,...
在这个“hibernate入门--第一个实例”中,我们将了解如何设置Hibernate环境,创建实体类,配置映射文件,以及执行基本的CRUD(创建、读取、更新和删除)操作。 1. **环境搭建** - **下载与安装**: 首先,你需要从...
**hibernate入门** Hibernate 是一个强大的Java持久化框架,它简化了数据库操作,使得开发者无需直接编写SQL语句即可实现对象与关系数据库之间的映射。这个文档将带你步入Hibernate的世界,了解其基本概念和核心...
### Hibernate入门教程知识点详解 #### 一、Hibernate框架简介 **Hibernate** 是一款开放源代码的**对象关系映射(Object-Relational Mapping,简称ORM)**框架,它为Java应用提供了一种高效的机制,用于处理Java...
在这个“Hibernate入门”教程中,我们将深入探讨Hibernate的基本概念、配置文件以及如何进行增删改查操作。 首先,Hibernate的核心是其配置文件(通常命名为`hibernate.cfg.xml`),这是连接数据库的关键。配置文件...
本文将深入探讨Hibernate入门时的基础配置,帮助初学者更好地理解和使用该框架。 首先,Hibernate 配置文件有两种形式:`hibernate.properties` 和 `hibernate.cfg.xml`。尽管两者都可以用于定义配置,但在处理`hbm...
本篇将详细介绍Hibernate入门实例的操作步骤,包括手工配置文件和利用Eclipse自动生成配置的两种方法。 **一、手工配置文件** 1. **环境准备** 在开始前,确保已安装JDK、Eclipse IDE,并在项目中引入Hibernate的...
Hibernate的入门学习主要包括理解这些基本概念和操作,后续深入学习则会涉及到复杂映射、事务处理、性能优化和缓存管理等高级话题。随着不断实践和学习,开发者可以充分利用Hibernate框架提供的各种特性,编写更加...
总结而言,《MyEclipse Hibernate 快速入门中文版》是一份全面的学习资料,涵盖了从环境配置到实际操作的全过程,适合想要快速上手Hibernate和MyEclipse集成的开发者。通过学习,你将能够熟练地在MyEclipse中使用...