快速上手Hibernate

标签: 上手 hibernate | 发表时间:2012-02-25 12:56 | 作者:zhaodandan19910306
出处:http://blog.csdn.net

在前面我们已经对Hibernate有所了解,并知道了使用Hibernate的好处,下面就给大家展示一下如何快速使用Hibernate:

环境搭建:

1.下载Hibernate,并解压缩(下载地址: http://www.hibernate.org/downloads

2.创建一个新的Java项目

3.引入相关jar包

  Hibernate_Home/lib/*.jar

  Hibernate_Home/hibernate3.jar

  加入数据库驱动(以mysql示例)

 

  注:Hibernate_Home即你解压缩的Hibernate的目录

     我们这里的数据库驱动为Mysql_Home/src/lib/jdbc2_0-stdext.jar

 

4.提供hibernate.cfg.xml文件,完成基本的配置

 

<hibernate-configuration>
	<session-factory>
		<!-- 指定数据库使用的驱动类 -->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<!-- 指定数据库连接串  -->
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<!-- 指定数据库连接的用户名和密码 -->
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">dandan</property>
		<!-- 指定数据库使用的方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 指定是否打印SQL语句,为了查看方便,我在这里设置为true -->
		<property name="hibernate.show_sql">true</property> 
		 
	</session-factory>
</hibernate-configuration>

具体实现:

5.编写相关实现代码

  实体类User.java

  

package com.dan.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

 

<hibernate-mapping>
	<class name="com.dan.hibernate.User">
		<id name="id">
		    <!-- 主键生成策略,我使用的是uuid,也可以使用别的 -->
			<generator class="uuid" />
		</id>
		<property name="name" />
		<property name="password" />
		<property name="createTime" />
		<property name="expireTime" />
	</class>
</hibernate-mapping>

  将User.hbm.xml文件加入到hibernate.cfg.xml文件

  

<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">dandan</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.show_sql">true</property> 
		 
		<!-- 加载实体类映射文件 -->
		<mapping resource="com/dan/hibernate/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>  
  编写工具类ExportDB.java,将hbm生成ddl(即生成数据表)
   
     
package com.dan.hibernate;

import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;

public class ExportDB {

	public static void main(String[] args){
		
		//默认读取hibernate.cfg.xml文件
		Configuration cfg = new Configuration().configure();
		
		//把ddl脚本输出到标准输出,并执行ddl语句
		SchemaExport export = new SchemaExport(cfg);
		export.create(true, true);
	}
}


  
  建立客户端类Client,添加用户数据到mysql
     
package com.dan.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 session = null;
		try {
			session = factory.openSession();
			//开始事务
			session.beginTransaction();
			User user = new User();
			user.setName("丹丹");
			user.setPassword("123");
			user.setCreateTime(new Date());
			user.setExpireTime(new Date());
			
			//保存User对象
			session.save(user);
			
			//提交事务
			session.getTransaction().commit();
		} catch(Exception e){
			e.printStackTrace();
			//回滚事务
			session.getTransaction().rollback();
		} finally {
			if (session != null){
				if (session.isOpen()){
					//关闭session
					session.close();
				}
			}
		}
	}
}


   

6.打开mysql控制台,创建测试数据库“hibernate”

  创建数据库命令:create  database hibernate_first;

 

7.导出数据表并添加数据

  执行ExportDB即可导出数据表

  执行Client即可对该数据表添加数据

  查看数据表及数据

    打开mysql控制台

    改变数据库命令:use hibernate_first;

    显示数据表命令:show tables;

    查看数据命令:select * from user;

 

 

显示数据,说明操作成功!

作者:zhaodandan19910306 发表于2012-2-25 12:56:40 原文链接
阅读:3 评论:0 查看评论

相关 [上手 hibernate] 推荐:

快速上手Hibernate

- - CSDN博客推荐文章
在前面我们已经对Hibernate有所了解,并知道了使用Hibernate的好处,下面就给大家展示一下如何快速使用Hibernate:. 1.下载Hibernate,并解压缩(下载地址: http://www.hibernate.org/downloads). 2.创建一个新的Java项目.   加入数据库驱动(以mysql示例).

Hibernate面试题

- - ITeye博客
什么是Hibernate的并发机制. Hibernate并发机制:. a、Hibernate的Session对象是非线程安全的,对于单个请求,单个会话,单个的工作单元(即单个事务,单个线程),它通常只使用一次,. 如果一个Session 实例允许共享的话,那些支持并发运行的,例如Http request,session beans将会导致出现资源争用.

Hibernate Lazy属性

- - 博客园_首页
  Hibernate 的延迟加载(lazy load)是一个被广泛使用的技术. 这种延迟加载保证了应用只有在需要时才去数据库中抓取相应的记录. 通过延迟加载技术可以避免过多、过早地加载数据表里的数据,从而降低应用的内存开销. Hibernate 的延迟加载本质上就是代理模式的应用,当程序通过 Hibernate 装载一个实体时,默认情况下,Hibernate 并不会立即抓取它的集合属性、关联实体所以对应的记录,而是通过生成一个代理来表示这些集合属性、关联实体,这就是代理模式应用带来的优势.

Hibernate 缓存

- - ITeye博客
1数据缓存:(date caching) 是一种将数据暂时存于内存缓存去中的技术,缓存通常是影响系统性能的关键因素. 2.ORM的数据缓存策略有3中.   1.事务级缓存:  分为 数据库事务和 应用级事务,是基于Session的生命周期的实现,每个session都会在内部维持一个数据缓存, 随session的创建和消亡.

hibernate优化

- - 开源软件 - ITeye博客
原文 http://developer.51cto.com/art/200906/129539.htm. 文章分为十三个小块儿对Hibernate性能优化技巧进行总结性分析,分析如下:. 一、在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数据量的,可以使用session.

JPA & Hibernate 注解

- - CSDN博客编程语言推荐文章
必须,name为可选,对应数据库中一的个表 . 可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息 . name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名 . catalog:可选,表示Catalog名称,默认为Catalog(""). .

hibernate 大对象类型的hibernate映射

- - CSDN博客推荐文章
在 Java 中, java.lang.String 可用于表示长字符串(长度超过 255), 字节数组 byte[] 可用于存放图片或文件的二进制数据. 此外, 在 JDBC API 中还提供了 java.sql.Clob 和 java.sql.Blob 类型, 它们分别和标准 SQL 中的 CLOB 和 BLOB 类型对应.

JBoss发布Hibernate 4.0

- - InfoQ cn
近日, JBoss发布了流行的对象/关系(O/R)映射框架 Hibernate. Hibernate 4主要的新特性如下所示:. 引入了“Services”API. 提供了更棒的日志,支持 i18n与消息编码(通过JBoss Logging而非 slf4j). 为 OSGi支持做好了准备.

Hibernate 二级缓存

- - CSDN博客推荐文章
很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下hibernate的二级缓存的,今天终于忍不住了. 我的经验主要来自hibernate2.1版本,基本原理和3.0、3.1是一样的,请原谅我的顽固不化. hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了.

Hibernate级联删除

- - CSDN博客推荐文章
如果cascade属性是默认值"none",当hibernate删除一个持久化对象的时候,不会自动删除与它关联的其他持久化对象. 如果希望自动删除它关联的其他持久化对象,可以把casacde属性设为"delete";. 那么hibernate在删除一个Shool对象时,实际执行的SQL是:. 作者:howlaa 发表于2013-9-29 20:37:17 原文链接.