`

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程序】这篇文章是关于初学者如何创建并运行第一个Hibernate程序的详细教程。Hibernate是一个流行的Java ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的编程,简化了数据...

    Hibernate实践例子程序

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

    hibernate

    当配置为`Lazy`时,关联的对象会在第一次访问时被加载。这种方式的优点在于可以减少不必要的数据库交互次数,从而提高应用性能。但需要注意的是,如果在一个事务之外访问懒加载的属性,会引发`...

    hibernate入门小例子

    7. **缓存机制**:Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的),用于提高性能。了解何时和如何使用缓存是优化Hibernate应用的关键。 通过这个入门小例子,你可以学习到如何...

    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 与 各种数据库连接配置

    以MySQL为例,一个基本的配置如下: ```xml &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt; &lt;property name="hibernate.connection.url"&gt;jdbc:mysql://localhost:3306/...

    hibernate3.1.2参考文档

    2. 第一个Hibernate应用程序 - 创建持久化类:以Event类为例,这是一个JavaBean,包含id、title和date属性,每个属性都有对应的getter和setter方法。id作为唯一标识,使用Long类型。注意,类中应有一个无参数的构造...

    myeclipse搭建hibernate框架

    安装MyEclipse是搭建环境的第一步,它是一个强大的集成开发环境,支持多种Java应用的开发,包括J2EE项目。MyEclipse提供了丰富的工具和功能,包括代码编辑、调试、部署等,是开发Java应用的理想选择。 接下来,安装...

    hibernate api 3.6.0 javadoc

    缓存(Caching)是Hibernate提高性能的关键特性,它包括第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的)。Javadoc详细介绍了如何配置和使用缓存,以及与缓存相关的策略。同时,Hibernate支持声明...

    hibernate3入门

    - **2001年末**:Hibernate的第一个版本发布。 - **2003年6月8日**:Hibernate 2 发布,并于同年末获得Jolt 2004大奖。 - **2005年3月**:Hibernate 3 正式发布,相比前一版本有重大改变,这份文档将以之前Hibernate...

    webwork+spring+hibernate入门实例

    WebWork是Apache Struts的第二代版本,它提供了一种模型-视图-控制器(MVC)架构,用于构建可维护的、可扩展的Web应用程序。WebWork的核心特性包括强大的动作调度、拦截器机制、强大的表单处理以及强大的异常处理。...

    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. ...

    hibernate5.3框架环境配置成功代码

    10. **缓存配置**: Hibernate提供了两级缓存机制,一级缓存在Session内部,二级缓存可配置第三方实现,如Ehcache。缓存能提高数据访问效率,但需注意数据一致性问题。 11. **实体生命周期管理**: Hibernate管理实体...

    Java Web整合开发实战:基于Struts 2+Hibernate+Spring(PDF)

    1章 Web的工作机制 2章 搭建Java Web开发环境 3章 JSP及其相关技术 2篇 表现层框架Struts技术 4章 Struts快速上手 5章 解密Struts之核心文件 6章 Struts之数据校验与GJ化 7章 详解Struts之标签库 8章 Struts...

    hibernate-release-4.3.0.Beta2

    《Hibernate框架深度解析:以hibernate-release-4.3.0.Beta2为例》 Hibernate,作为Java领域中的一款主流对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以专注于业务逻辑而无需过多关注底层SQL的...

    Hibernate环境

    Hibernate 是一个开源的Java语言下的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作,极大地简化了数据访问层的编码工作。在这个环境中,我们将探讨如何搭建一个基本的Hibernate项目,并...

    Hibernate学习笔记(1)

    - **第一步**:创建`HibernateSessionFactory`类和`hibernate.cfg.xml`配置文件。`HibernateSessionFactory`是Hibernate的核心,负责管理数据库会话,而`hibernate.cfg.xml`文件用于配置数据库连接信息。 - **第...

Global site tag (gtag.js) - Google Analytics