`

第一个Hibernate实现CRUD

阅读更多

0.创建webapp 带入hibernate包。

1.新建domain类:(com.zchen.user.domain)

package com.zchen.user.domain;

import java.util.Date;

public class User {
	
	private int id;
	private String name;
	private Date birthday;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	

}

 

2.配置映射文件user.hbm.xml(com.zchen.user.domain)

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
  "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  
<hibernate-mapping package="com.zchen.user.domain">
	<class name="User" table="`user`">
	  	<id name="id" column="`id`">
		  <generator class="native">
		  </generator>
	  	</id>
	  	<property name="name" unique="true"/>
	  	<property name="birthday"/>
	</class>
	
</hibernate-mapping>

 

3.在src目录下创建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="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql:///user</property>
		<property name="connection.username">root</property>
		<property name="connection.password">mysqladmin</property>
		<property name="show_sql">true</property>
		<property name="hbm2ddl.auto">create</property>
		<mapping resource="com/zchen/user/domain/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 4.新建UserDao接口定义CRUD方法

package com.zchen.user.dao;

import com.zchen.user.domain.User;

public interface UserDao {

	public void saveUser(User user);
	public User findUserByName(String name);
	public User findUserById(int id);
	public void updateUser(User user);
	public void removeUser(User user);
}

 5.创建hibernate工具类得到session对象

package com.zchen.user.dao;

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

public final class HibernateUtil {
	
	private static SessionFactory sessionFactory;
	private HibernateUtil(){}
	static{
		Configuration cfg = new Configuration();
		cfg.configure();
		//cfg.setProperty(propertyName, value)
		sessionFactory = cfg.buildSessionFactory();
	}
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	public static Session getSession(){
		return sessionFactory.openSession();
	}
	

}

 6.定义UserDaoHibernateImpl类实现UserDao接口

package com.zchen.user.dao.impl;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import com.zchen.user.dao.HibernateUtil;
import com.zchen.user.dao.UserDao;
import com.zchen.user.domain.User;

public class UserDaoHibernateImpl implements UserDao {

	public User findUserById(int id) {
		Session session = null;
		User user = null;
		try {
			session = HibernateUtil.getSession();
			user = (User)session.get(User.class,id);
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session != null){
				session.close();
			}
		}
		return user;
	}

	public User findUserByName(String name) {
	/*	String hql="from User as user where user.name=:n";
		Query q = session.createQuery(hql);
		q.setString("n",name);
		User user = (User)q.uniqueResult();
	*/
		Session session = null;
		User user = null;
		try {
			session = HibernateUtil.getSession();
			Criteria c = session.createCriteria(User.class);
			c.add(Restrictions.eq("name", name));
			user = (User)c.uniqueResult();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session != null){
				session.close();
			}
		}
		return user;
	}

	public void removeUser(User user) {
		Session session = null;
		Transaction tx = null;
		try {
			session = HibernateUtil.getSession();
			tx = session.beginTransaction();
		//可以传id 然后用user.setId(id);再将user作为变量delete(user)
			session.delete(user);
			tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session != null){
				session.close();
			}
		}
	}

	public void saveUser(User user) {
		Session session = null;
		Transaction tx = null;
		try {
			session = HibernateUtil.getSession();
			tx = session.beginTransaction();
					session.save(user);
			tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session != null){
				session.close();
			}
		}

	}

	public void updateUser(User user) {
		Session session = null;
		Transaction tx = null;
		try {
			 session = HibernateUtil.getSession();
			 tx = session.beginTransaction();
			 session.update(user);
			tx.commit();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(session != null){
				session.close();
			}
		}
	}

}

 测试:

package test;

import java.util.Date;

import com.zchen.user.dao.UserDao;
import com.zchen.user.dao.impl.UserDaoHibernateImpl;
import com.zchen.user.domain.User;

public class DaoTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		UserDao dao = new UserDaoHibernateImpl();
		User user = new User();
		user.setName("admin");
		user.setBirthday(new Date());
		System.out.println("11111");
		dao.saveUser(user);
		
		user.setName("zchen");
		System.out.println("22222");
		dao.updateUser(user);
		
		User u = dao.findUserByName(user.getName());
		System.out.println("33333");
		dao.removeUser(u);

	}

}

 

分享到:
评论
1 楼 rochou 2012-08-24  
   

相关推荐

    JPA + Hibernate 3 CRUD操作历史审计日志的解决方案

    Hibernate是JPA的一个实现,提供了丰富的特性和优化,如缓存机制、第二级缓存、查询语言HQL等。 在审计日志的实现中,一种常见方法是使用AOP(面向切面编程)。AOP允许我们在不修改原有业务逻辑的情况下,添加额外...

    Hibernate-CRUD:HibernateCRUD

    Hibernate提供了第一级缓存(Session级别的)和第二级缓存(SessionFactory级别的),提高数据访问速度。 通过学习"Hibernate-CRUD"项目,开发者将深入理解如何在Java应用中利用Hibernate进行数据库操作,提升开发...

    我的第一个Hibernate 程序

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

    hibernate第一个hibernate

    《Hibernate入门:初识与实践》 ...总之,"hibernate第一个hibernate"项目是一个绝佳的起点,它将引导你了解并掌握Hibernate的基本概念和操作。通过实践,你可以逐步熟悉ORM思想,为后续的Java开发奠定坚实的基础。

    菜鸟快速运行第一个hibernate

    标题“菜鸟快速运行第一个hibernate”表明了这是一个针对初学者的教程,旨在帮助他们快速上手并成功运行他们的第一个Hibernate项目。Hibernate是一个强大的Java ORM(对象关系映射)框架,它简化了数据库操作,使得...

    第一个hibernate程序及解释

    在提供的文档“第一个Hibernate程序.doc”和源代码文件“FirstHibernate”中,你可以找到更具体的实现细节和解释,这对于理解并实践你的第一个Hibernate程序非常有帮助。通过这个起点,你可以进一步探索Hibernate的...

    hibernate的第一个例子

    **标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...

    hibernateCRUD

    本文将深入探讨“hibernateCRUD”主题,主要关注使用Hibernate进行基本的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。 一、Hibernate简介 Hibernate是Java领域内广泛使用的ORM框架,它允许...

    hibernate第一个例子

    【hibernate第一个例子】 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将引导初学者了解如何使用Hibernate进行简单的数据库连接和操作。 首先,我们需要...

    基于hibernate的简单数据库实现

    通过Hibernate,我们可以将Java对象与数据库中的表进行映射,实现对象的CRUD(创建、读取、更新、删除)操作。 1. **对象关系映射(ORM)概念** ORM是将数据库中的表格数据映射到面向对象模型的一种技术。它允许...

    Hibernate第一天(Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD)-附件资源

    Hibernate第一天(Hibernate的环境搭建、Hibernate的API、Hibernate的CRUD)-附件资源

    myeclips10对springmvc4.0+hibernate4.0的完整crud

    在【压缩包子文件的文件名称列表】中,"springMVC_01_H(succeed)"可能是一个步骤式的教程或者项目文件,其中的"H"可能代表Hibernate,表明这是系列教程或项目的第一部分,且已经成功完成。通常,这样的文件夹会包含...

    基于Struts2+Spring2+Hibernate3的CRUD(附源代码)

    【标题】"基于Struts2+Spring2+Hibernate3的CRUD(附源代码)" 描述了一种常见的Java Web开发框架组合,用于实现创建、读取、更新和删除(CRUD)操作。这个项目结合了Struts2作为MVC框架,Spring2负责依赖注入和事务...

    hibernate人生中第一个成功及完美程序(适合入门者)

    在这个“hibernate人生中第一个成功及完美程序”中,我们将深入探讨Hibernate的基本概念、核心功能以及如何构建一个简单的示例应用。 一、Hibernate概述 Hibernate是一个开源的ORM框架,它的主要任务是将Java对象与...

    第一个手写Hibernate

    "第一个手写Hibernate"项目旨在帮助开发者深入理解Hibernate的工作原理,通过手动编写相关代码,以实践的方式来学习和掌握Hibernate的核心概念。 **一、Hibernate简介** Hibernate是一个开源的ORM框架,它允许...

    我的第一个hibernate程序

    本教程将引导你了解并实现“我的第一个Hibernate程序”,带你入门这个强大的ORM(对象关系映射)工具。 一、Hibernate简介 Hibernate是Java领域中最流行的ORM框架之一,它允许我们将Java对象与数据库表进行映射,...

    Hibernate 的第一个例子

    在本文中,我们将深入探讨如何创建Hibernate的第一个例子,帮助初学者快速入门。** **一、Hibernate 简介** Hibernate 提供了丰富的API,简化了Java应用程序与关系数据库之间的交互。它通过XML配置文件或注解来定义...

    hibernate3 最简单实现项目

    Hibernate3是Hibernate的第三个主要版本,它在性能和功能上都有所提升,同时也保持了与前一版本的良好兼容性。 首先,理解Hibernate的核心概念是至关重要的。ORM允许开发者使用面向对象的方式来操作数据库,而无需...

Global site tag (gtag.js) - Google Analytics