Hibernate 小章总结(一)

Hibernate简介

Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。Hibernate也是目前Java开发中最为流行的数据库持久层框架,现已归JBOSS所有。

它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。

Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短的手动处理SQL和JDBC上的开发时间。

Hibernate的运行过程如下图:

环境搭建

所使的驱动jar包:

antlr-2.7.6.jar

commons-collections-3.1.jar

commons-logging.jar

dom4j-1.6.1.jar

hibernate3.jar

hibernate-jpa-2.0-api-1.0.1.Final.jar

javassist-3.12.0.GA.jar

jta-1.1.jar

log4j-1.2.16.jar

ojdbc6.jar

slf4j-api-1.6.1.jar

slf4j-log4j12-1.7.2.jar

第二步:建立实体类*.java

package com.bjpowernode.hibernate;

import java.util.Date;

public class User {

	//主键
	private String id;
	//名称
	private String name;
	//密码
	private String password;

	//提供getter和setter方法
	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;
	}

}

第三步:提供*.hbm.xml文件,该文件可以说是实体生成表的配置文件。Hibernate会根据你写的实体类和相应的映射文件生成数据库表。

<?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.bjpowernode.hibernate.User">
		<id name="id">
			<generator class="uuid"/>
		</id>
		<property name="name"/>
		<property name="password"/>
		<property name="createTime"/>
		<property name="expireTime"/>
	</class>
</hibernate-mapping>

第四步:提供hibernate.cfg.xml文件,完成基本的配置信息,并将*.hbm.xml文件配置进入。(可以参考并修改成自己的)根据自己的需求进行取舍。cfg.xml是整个Hibernate的入口配置

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!-- Hibernate要连接数据库的驱动。(此处使用mysql的,如果使用的替他数据库的,请上网查找) -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 指定连接数据库的url,此处数据库名为:hibernate_demo -->
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate_demo</property>
		<!-- 数据库的用户名和密码 -->
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">root</property>
		<!-- 数据库的方言(用于将对象模型的存储生成相应的sql语句) -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 该项为true,当与数据库交互的时候,将在Console中打印 sql语句,方便学习 -->
		<property name="hibernate.show_sql">true</property>
	        <!-- 指定连接池里最大连接数 -->
	        <property name="hibernate.c3p0.max_size">20</property>
	        <!-- 指定连接池里最小连接数 -->
	        <property name="hibernate.c3p0.min_size">1</property>
	        <!-- 指定连接池里连接的超时时长 -->
	        <property name="hibernate.c3p0.timeout">5000</property>
	        <!-- 配置此属性,程序会根据需要自动创建表 -->
	        <property name="hbm2ddl.auto">update</property>
	        <!-- 显示Hibernate持久化操作所生成的SQL -->
	        <property name="show_sql">true</property>
	        <!-- 将SQL脚本进行格式化后再输出 -->
	        <property name="hibernate.format_sql">true</property>

		<!-- 列出每个要映射的 类 -->
		<mapping resource="com/bjpowernode/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

使用工具类,将已经生成的实体类,映射到数据库中(生成数据库表)

如果使用了设置了<propertyname="hbm2ddl.auto">update</property> 那么就不用写工具类了。

注意:数据库需要手动建立。

Hibernate的一个特点,耦合性低,容易单元测试。所以最好建立一个单元测试类。测试一下代码的连通性。

第五步:写单元测试类。调试是否成功。也是检验代码的质量

package com.bjpowernode.hibernate;
import org.hibernate.Session;
import junit.framework.TestCase;

public class UserTest extends TestCase {

	public void testSave1(){
		Session session=null;
		try{
			session=HibernateUtils.getSession();
			//开启事务
			session.beginTransaction();

			User user=new User();
			user.setName("张三");
			user.setPassword("123456");

      //事务提交
			session.getTransaction().commit();
		}catch(Exception e){
			e.printStackTrace();
			//事务回滚
			session.getTransaction().rollback();
		}finally{
      //关闭Session
			HibernateUtils.closeSession(session);
		}

	}

}
时间: 2024-10-11 22:55:11

Hibernate 小章总结(一)的相关文章

Hibernate 小章总结(三)

脏检查及刷新缓存机制 当事务提交时,Hibernate会对Session中持久状态的对象进行检测,判断对象的数据是否发生了改变,这种判断称为脏检查 Session session; Transaction tx; @After public void afterTest(){ tx.commit(); HibernateUtil.closeSession(); } @Before public void initDate(){ session=HibernateUtil.getSession()

Hibernate 小章总结(二)

Hibernate中Java对象的三种状态 在hibernate中,对象有三种状态:临 时状态(Transient).持久状态(Persistent)和游离状态(Detached). 处于持久态的对象也称为 PO(PersistenceObject),临时对象和游离对象也称为VO(ValueObject). 1. 临时状态 由 new命令开辟内存空间的Java对象,例如: User user=new User(); 临 时对象在内存孤立存在,它是携带信息的载体,不和数据库的数据有任何关联关系.

一个Hibernate小程序

基本步骤 在前一篇博文Hibernate环境搭建中为大家详细的介绍如何搭建一个学习新类库的学习环境.今天,为大家带来一个Hibernate小例子,让大家能够快速上手. 步骤如下: 1.配置hibernate.cfg.xml 2.编写映射文件User.hbm.xml 3.编写一个持久化类User.java 4.编写辅助类HibernateUtil.java 5.加载并存储对象UserManager.java 配置Hibernate.cfg.xml a.在新建的XHibernate项目的src目录下

Hibernate小程序制作

要使用hibernate,至少要有三个步骤: 创建持久化类 编写映射文件 编写配置文件 在已经有测试用的数据库的前提下,我们来写一个小程序. 数据库为 school--->student---->id ,name, age 创建持久化的类 持久化的类可以是一个普通的Java类(POJO类),而且一定要有现代战争无参的构造器.(略) 编写映射文件 我们创建了student表,又创建了Student类,虽然表的字段和类的属性是对应的,但是系统并不知道他们的关系,所以我们要编写 映射文件,映射文件保

Struts2+EasyUI+Hibernate小实例

概述 这个实例主要是前台数据到后台数据的传递和后台数据到前台数据的传递,完成数据的新增,以及对新增数据的展示.下面是详细的过程: Hibernate(数据库部分) 这里只是数据库的连接和数据库实体与物理表的映射. 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Conf

Spring+Hibernate小异常

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection at org.springframework.orm.hibernate3.Hiberna

Hibernate第二章关联映射的总结

1.type值的解释:如下图: 1)type的值,不是java语言的一个类型的全称,而是一个hibernate自定义 的类型的名称. 2)Type的值,其实是对应hibernate中的一个类型的简称,而由 org.hibernate.type包下面的类型来真正完成java类型与数据库类型的传 换. 2.单类对单表的映射配置 1)类型的处理: I.各种:type II.精度:precision,scale III.逻辑值的处理:boolean,yes_no 2)主键的处理 Native,assig

MyEclipse10下开发第一个Hibernate小程序

一.首先,我们新建一个Java项目,取名为HibernateTest. 二.因为Hibernate框架是用面向对象的思想来操作数据库,那么一定要建立数据库和表. (1).这里我使用的是MySQL 5.6版本的数据库,大家可以去网上下载MySQL,我没有使用MySQL自带的管理工具和命令行工具,使用的是一款SQLyog工具,下载地址:http://download.csdn.net/detail/u012561176/8728955 ,其中关于一些数据库的jar包,也可以通过这个地址下载:http

Hibernate第一章知识点的总结

1.Hibernate映射文件中: <generator class="increment"/> 1)class的值等于native或increment:表格中的主键是自动生成的: 2)Class的值等于assigned:主键是自己手动添加的: 2.调用save的时候,即便没有事务提交,也会从数据库查询主键值(主键生成策 略是通过数据库产生) 3.缓存 1)缓存的一个重要的功能就是避免重复读取数据库. 2)所有的缓存都是放在session中,这个也称之为hibernate框