Hibernate是一个比较流行的持久层框架,它对JDBC进行轻量级的封装,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
我们写一个简单的Demo,Hibernate操作Access数据库。
1、首先建立工程导入hibernate3.0的Jar包。
2、编写Hibernate工具类和配置文件
package persistence;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure()
.buildSessionFactory();
} catch (HibernateException ex) {
throw new RuntimeException("Exception building SessionFactory:"
+ ex.getMessage(), ex);
}
}
public static Session currentSession() throws HibernateException {
Session s = sessionFactory.openSession();
return s;
}
public static void closeSession(Session s) {
if (s != null) {
s.close();
}
}
}
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<property name="show_sql">true</property>
<property name="connection.driver_class">
sun.jdbc.odbc.JdbcOdbcDriver
</property>
<property name="connection.url">
<!--连接数据库的URL,-->
jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=D:\student.mdb
</property>
<property name="dialect"> <!--指定连接的语言-->
org.hibernate.dialect.SQLServerDialect
</property>
<mapping resource="Student.hbm.xml" /><!--映射Student这个资源-->
</session-factory>
</hibernate-configuration>
Student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="model.Student" table="student"><!--把类和数表关联起来-->
<id name="id" unsaved-value="null"> <!--id的产生方式是uuid.hex-->
<generator class="uuid.hex" />
</id>
<property name="cardId" type="string" /><!--映射学号-->
<property name="name" type="string" /><!--映射名字-->
<property name="age" type="int" /> <!--映射学生岁数-->
</class>
</hibernate-mapping>
模型Student.java
package model;
public class Student {
private String id;
private String name;
private String cardId;
private int age;
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 getCardId() {
return cardId;
}
public void setCardId(String cardId) {
this.cardId = cardId;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
dao StudentDao接口
package dao;
import java.util.List;
import model.Student;
public interface StudentDao {
/* 创建新的学生对象 */
public void createStudent(Student stu);
/* 删除学生对象 */
public void delStudent(String id);
/* 更新学生对象 */
public void modifyStudent(Student stu);
/* 获得所有的学生列表 */
public List<Student> getAllStudent();
}
dao实现类StudentDaoImpl
package dao.imp;
import java.util.List;
import model.Student;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import persistence.HibernateUtil;
import dao.StudentDao;
public class StudentDaoImpl implements StudentDao {
private Session session;
@Override
public void createStudent(Student stu) {
try {
session = HibernateUtil.currentSession();//开启连接
Transaction tx = session.beginTransaction();//开启事务
session.save(stu);
tx.commit();//关闭事务
} catch (HibernateException e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession(session);//关闭连接
}
}
@Override
public void delStudent(String id) {
try {
session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Student stu = (Student) session.get(Student.class, id);
session.delete(stu);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession(session);
}
}
@Override
public void modifyStudent(Student stu) {
try {
session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
session.update(stu);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession(session);
}
}
@Override
public List<Student> getAllStudent() {
List<Student> list = null;
try {
session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
Query q = session.createQuery("from Student");
list = q.list();
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
} finally {
HibernateUtil.closeSession(session);
}
return list;
}
}
HibernateTest测试类:
package persistence;
import java.util.List;
import model.Student;
import dao.StudentDao;
import dao.imp.StudentDaoImpl;
public class HibernateTest {
public static void main(String[] args) {
StudentDao dao = new StudentDaoImpl();
Student stu = new Student();
stu.setAge(30);
stu.setCardId("111111111");
stu.setName("小明");
/*-------------新增学生信息-------------------*/
//dao.createStudent(stu);
List<Student> list = dao.getAllStudent();
for(Student s:list){
System.out.println(s.getId() + "" + s.getName() + "," + s.getCardId() + "," + s.getAge());
}
Student stu2 = (Student) list.get(0);
stu2.setName("测试修改名称");
stu2.setAge(600);
//dao.modifyStudent(stu2);
//dao.delStudent(stu2.getId());
}
}
源码下载地址:http://download.csdn.net/detail/sydica/7035427
分享到:
相关推荐
以下是对Hibernate简单实例的详细讲解。 1. **Hibernate环境搭建**: 在开始任何操作之前,你需要在项目中引入Hibernate的核心库,包括hibernate-core.jar和其他相关依赖。通常,这些依赖可以通过Maven或Gradle等...
【标题】:“Hibernate简单实例共6页.pdf.zip”是一个压缩文件,其中包含了关于Hibernate框架的简明教程。从标题来看,这份文档很可能是对Hibernate在实际应用中的基础操作进行了概述,可能包括配置、实体映射、数据...
在本"struts2+hibernate简单例子"中,我们将学习以下关键知识点: 1. **Struts2配置**:首先,我们需要配置Struts2的核心文件`struts.xml`,定义Action类、结果类型以及拦截器栈。这包括设置包、添加Action元素,...
在这个"Struts+Hibernate简单例子"中,我们将深入探讨这两个框架的基本概念、如何整合使用以及它们在实际项目中的应用。 Struts是Apache软件基金会下的一个开源框架,主要负责处理Web应用程序的业务逻辑和控制流程...
Hibernate简单实例 Hibernate in Myeclipse,也就是java Web整合开发自学手册第23章的实例!调试了很久终于可运行!现在共享!希望对学习java web的朋友有帮助!直接在myeclipse添加项目,可运行!
在 "Hibernate简单例子几个" 的描述中提到了 "many-to-one",这是 Hibernate 中的一种关联映射类型,表示多对一的关系。比如,一个部门可以有多名员工,而每个员工只属于一个部门。在实体类中,我们可以使用 `@...
标题 "Eclipse + MyEclipse整合Struts+Spring+Hibernate简单例子开发" 指向的是一个关于如何在集成开发环境Eclipse与MyEclipse中搭建Struts、Spring和Hibernate(SSH)框架的教程。SSH是Java Web开发中常用的一个...
**一个Hibernate的简单实例** 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本实例旨在为初学者提供一个基础的Hibernate使用教程,帮助理解其基本概念和工作流程。...
### Struts+Spring+Hibernate 简单例子开发 ...以上即为Struts+Spring+Hibernate简单例子开发的整体流程和技术要点。通过本例可以了解到如何使用这些框架构建基本的应用程序,并理解各框架间的基本交互机制。
### 整合Struts+Spring+Hibernate简单例子开发 #### 一、项目概述与环境配置 本文档将详细介绍如何在Eclipse环境下利用MyEclipse工具整合Struts+Spring+Hibernate框架,开发一个简单的用户信息查询系统。该系统...
【Hibernate简单实例】是关于如何使用Hibernate框架进行数据库操作的一个基础教程。Hibernate是一个开源的对象关系映射(ORM)框架,它允许Java开发者在不直接编写SQL语句的情况下,通过对象的方式来管理和操作...
**hibernate简单例子** 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本示例将向您展示如何使用Hibernate来实现客户资料的添加和查看功能。 首先,我们需要理解...
【MyEclipse整合Struts+Spring+Hibernate简单实例开发】 在Java Web开发中,整合Struts、Spring和Hibernate三大框架可以构建出强大的企业级应用。本教程将介绍如何使用MyEclipse工具进行这样的整合,以一个简单的...
【Hibernate入门案例源码】是针对初学者设计的一份教程,旨在帮助理解并掌握Java持久化框架Hibernate的基础应用。Hibernate是一个强大的ORM(对象关系映射)框架,它简化了数据库与Java对象之间的交互,使开发者可以...
这个简单的例子将帮助初学者理解Struts、Spring和Hibernate如何协同工作,同时也为更复杂的项目打下基础。通过实际操作,开发者可以更深入地了解每个框架的核心功能和它们之间的交互机制。对于想要提升Java Web开发...
在这个简单的实例 "demo1" 中,你可以找到一个基础的 Spring MVC 和 Hibernate 结合的项目结构,包括配置文件、实体类、DAO、Service、Controller 和视图页面。通过这个实例,新手可以逐步了解和实践这两个框架的...