`

1 Hibernate 第一例

阅读更多

一个简单的CURD的例子.  源码中不包含所依赖的库, 要不然打的包太大了.  Hibernate 版本3.2

 

PO对象注意:

1 要有默认的构造方法

2 类是非final 修饰的.否则 懒加载无用. 

 

UserDAOImpl类的代码, 其它配置文件,请看附件中的源码包

 

package dao;

import java.util.Date;

import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.Transaction;

import dao.po.User;

/**
 * 这里做CURD工作
 * 
 */
public class UserDAOImpl
{
	/**
	 * @param args
	 */
	public static void main(final String[] args)
	{
		//test1();
		test2();
		//test3();
	}

	/**
	 * 保存查询测试
	 */
	public static void test1()
	{
		final User u = new User();
		u.setBirthday(new Date());
		u.setName("北京市");
		save(u);
		get(1);
	}

	/**
	 * 修改一个 脱管 的对象, 这是没有先查询.
	 */
	public static void test2()
	{
		final int id = 6;
		get(id);
		final User u = new User();
		u.setBirthday(new Date());
		u.setId(id); //这里指定ID , 好修改
		u.setName("重庆市");
		update(u);
		get(id);
	}

	/**
	 * 测试 load 强制加载
	 */
	public static void test3()
	{
		final User user = load(1);
		System.out.println("查询完成:" + user.getName());
	}

	public static void save(final Object obj)
	{
		Session s = null;
		Transaction t = null;
		try
		{
			s = HibernateUtil.getSeesion();
			t = s.beginTransaction();
			s.save(obj);
			t.commit();
		}
		finally
		{
			if (s != null)
			{
				s.close();
			}
		}
		System.out.println("保存完成");
	}

	public static User get(final int id)
	{
		final Session s = HibernateUtil.getSeesion();
		final User user = (User) s.get(User.class, id);
		s.close();
		System.out.println("查询完成:" + user.getName());
		return user;
	}

	public static User load(final int id)
	{
		final Session s = HibernateUtil.getSeesion();
		final User user = (User) s.load(User.class, id);

		//强制加载
		Hibernate.initialize(user);
		s.close();

		return user;
	}

	public static void update(final User u)
	{
		Session s = null;
		Transaction t = null;
		try
		{
			s = HibernateUtil.getSeesion();
			t = s.beginTransaction();
			s.update(u);
			t.commit();
		}
		finally
		{
			if (s != null)
			{
				s.close();
			}
		}
		System.out.println("修改完成");
	}
}

 

 

 

package dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * 这是一个工具类, 快速取得session
 * 
 */
public class HibernateUtil
{
	static SessionFactory	sessionFactory	= null;
	static
	{
		final Configuration cfg = new Configuration();
		cfg.configure(); //路径可以改变
		sessionFactory = cfg.buildSessionFactory();
	}

	public static SessionFactory getSessionFactory()
	{
		return sessionFactory;
	}

	/**
	 * 取得session
	 * 
	 * @return session
	 */
	public static Session getSeesion()
	{
		return sessionFactory.openSession();
	}
}

 

hibernate.cfg.xml

<!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="show_sql">true</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">1234</property>
	
	
	<mapping resource="dao/po/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 

分享到:
评论
7 楼 rainmars 2009-05-16  
hibernateUtil有些问题
6 楼 elf8848 2009-05-07  
引用
5 楼 mizhihua 17 小时前   回复 删除
请教和4楼一样的问题
4 楼 keer2345 2009-04-28   回复 删除
这位老大喜欢用final,
用和不用有什么区别呢?请指教!


是 checkstyle 自动加上地
5 楼 mizhihua 2009-05-06  
请教和4楼一样的问题
4 楼 keer2345 2009-04-28  
这位老大喜欢用final,
用和不用有什么区别呢?请指教!
3 楼 stevensinclair 2009-03-22  
JonasChen 写道

不错。学习ING。。。谢啦。。好人一身平安

老大 ! 一身平安?笑了~~~~
2 楼 TTLtry 2009-03-22  
  跟踪学习Hibernate 觉得看有些书很费力 觉得向编过Hibernate的人学习和借鉴其学习笔记是一种很好的学习方法
1 楼 JonasChen 2009-03-09  
不错。学习ING。。。谢啦。。好人一身平安

相关推荐

    Hibernate实践例子程序

    Hibernate 是一个开源的O/R mappimg的框架,基于JDBC...另外还有两个东东,一个是class2hbm,与第一个相反,是根据class来导出映射文件的。还有一个ddl2hbm,是根据数据库来导出表结构,并生成映射文件和POJO class。

    Hibernate+中文文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    HibernateAPI中文版.chm

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate3.2中文文档(chm格式)

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...

    Hibernate中文详细学习文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    hibernate 3中的缓存小结

    当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级...

    最全Hibernate 参考文档

    1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory ...

    Hibernate 中文 html 帮助文档

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    Hibernate教程

    2.2. 第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射...

    hibernate保存图片

    在此不讨论两种方案的优劣,我只是写了个hibernate的例子来实现第一种策略.例子很简单,t_user表主要两个字段,name和photo,其中photo字段类型为Blob.在此例中数据库我采用mysql,oracle的Blob字段比较特殊,你...

    hibernate 体系结构与配置 参考文档(html)

    第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. 映射...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    1.2. 第一部分 - 第一个Hibernate应用程序 1.2.1. 第一个class 1.2.2. 映射文件 1.2.3. Hibernate配置 1.2.4. 用Ant构建 1.2.5. 启动和辅助类 1.2.6. 加载并存储对象 1.3. 第二部分 - 关联映射 1.3.1. ...

    Java Web整合开发完全自学手册:Struts+Hibernate+Spring+Eclipse源码

    以国内使用最广泛的Struts为例,其新版本Struts2与前一版Struts1.x已经有了天壤之别。Hibernate也从2.0升级为3.X,近期Spring也最新推出了2.5版。读者如果再参考以前的版本书籍学习,无异于南辕北辙,而《JavaWeb...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (3)

    第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...

    Hibernate3+中文参考文档

    1.2. 第一个持久化类 1.3. 映射cat 1.4. 与Cat同乐 1.5. 结语 2. 架构(Architecture) 2.1. 概况(Overview) 2.2. 实例状态 2.3. JMX整合 2.4. 对JCA的支持 3. 配置 3.1. 可编程的配置方式 3.2. 获得SessionFactory ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...

    hibernate3.04中文文档.chm

    2.2. 第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. ...

    hibernate 框架详解

    第一部分 - 第一个Hibernate程序 2.2.1. 第一个class 2.2.2. 映射文件 2.2.3. Hibernate配置 2.2.4. 用Ant编译 2.2.5. 安装和帮助 2.2.6. 加载并存储对象 2.3. 第二部分 - 关联映射 2.3.1. 映射...

Global site tag (gtag.js) - Google Analytics