`
退役的龙弟弟
  • 浏览: 453911 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate3的一个简单实例

阅读更多

package com.ru.utils;会话工厂的工具类

<wbr></wbr>


import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;


public class GetSession {

private static SessionFactory sf=null;

//实例块只会被调用一次

static{

//读取hibernate的配置文件并且初始化"hibernate.cfg.xml"如果放在src下可以不写

Configuration configuration=new Configuration().configure("hibernate.cfg.xml");

//创建会话工厂

sf=configuration.buildSessionFactory();

}

public static SessionFactory getSessionFactory(){

return sf;

}

}


开发流程

1.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>创建一个项目

2.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>画出一个简单项目框架示意图

3.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>引入hibernate开发包(从网上下载google<wbr>hibernate<wbr><a href="http://www.hibernate.org/" style="text-decoration:none; color:rgb(76,107,115)">http://www.hibernate.org</a>),</wbr></wbr>完后我们

4.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>开发hibernate有三种方法(开发顺序)该成mysql数据库

我们使用第二种开发项目

创建employe.

create table employee(

id int primary key,

name varchar(64) not null,

email varchar(64) not null,

hiredate date not null);

<wbr></wbr>

创建一个序列,将来用于主键的自增长:

--创建一个序列

create sequence emp_seq

start with 1

increment by 1

minvalue 1

nomaxvalue

nocycle

nocache

<wbr></wbr>

5.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>开发domain对象和对象关系映射文件

<wbr></wbr>

对象关系映射文件:作用是用于指定domain对象和表的映射关系. ,该文件的取名有规范:

domain对象.hbm.xml,一般我们放在domain对象同一个文件夹下(包下)

<wbr></wbr>

我们的Employee.hbml.xml配置文件

<!DOCTYPE hibernate-mapping PUBLIC

<wbr><wbr><wbr><wbr><wbr><wbr>"-//Hibernate/Hibernate Mapping DTD 3.0//EN"</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<hibernate-mapping package="com.hsp.domain">

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;class name="Employee" table="employee"&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!-- id</wbr></wbr></wbr></wbr></wbr></wbr>元素用于指定主键属性-->

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;id name="id" column="id" type="java.lang.Integer"&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!--</wbr></wbr></wbr></wbr></wbr></wbr>该元素用于指定主键值生成策略hilo native increment sequence uuid -->

<wbr>&lt;!--如果是mysql的话:&lt;generator class="increment"&gt;&lt;/generator&gt;自增长改成这样</wbr><wbr>就可以了--&gt;</wbr>
<wbr><wbr><wbr><wbr><br><wbr><wbr><wbr><wbr>&lt;generator class="sequence"&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;param name="sequence"&gt;emp_seq&lt;/param&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/generator&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/id&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!--</wbr></wbr></wbr></wbr></wbr></wbr>对其它属性还有配置-->

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="name" type="java.lang.String"&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;column name="name" not-null="false"<wbr>/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="email" type="java.lang.String" &gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;column name="email" not-null="false"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="hiredate" type="java.util.Date"&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;column name="hiredate" not-null="false" /&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/class&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>

</hibernate-mapping>

<wbr></wbr>

6.<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>手动配置我们的hibernate.cfg.xml文件,该文件用于配置连接的数据库的类型,driver,

,用户名,密码,url ....同时管理对象关系映射文件,该文件的名称,我们一般不修改.

<wbr></wbr>

hibernate.cfg.xml配置文件

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

<wbr><wbr><wbr><wbr><wbr><wbr><wbr>"-//Hibernate/Hibernate Configuration DTD 3.0//EN"</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr>"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<hibernate-configuration>

<session-factory>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!-- hibernate</wbr></wbr></wbr></wbr></wbr></wbr>设计者,给我们提供了一写常用的配置-->

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!--</wbr></wbr></wbr></wbr></wbr></wbr>配置使用的driver -->

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="connection.driver_class"&gt;oracle.jdbc.driver.OracleDriver&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="connection.username"&gt;scott&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="connection.password"&gt;tiger&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="connection.url"&gt;jdbc:oracle:thin:@127.0.0.1:1521:orclhsp&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!--</wbr></wbr></wbr></wbr></wbr></wbr>配置dialect方言,明确告诉hibernate连接是哪种数据库-->

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="dialect"&gt;org.hibernate.dialect.OracleDialect&lt;/property&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!--</wbr></wbr></wbr></wbr></wbr></wbr>显示出对于sql -->

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;property name="show_sql"&gt;true&lt;/property&gt;<br></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr>&lt;!-- 让hibernate给我们自动创建表 create <wbr>每次都创建新表,update,如果没表创建新表,如果有表,查看关系映射文件是否有变化,没有变化更新数据,有变化创建新表. --&gt;</wbr></wbr>

<property name="hbm2ddl.auto">update</property>

<!-- 当获取session的方式为getcurrentsession的时候需要配置 -->

<property name="hibernate.current_session_context_class">

thread

</property>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;!--</wbr></wbr></wbr></wbr></wbr></wbr>指定管理的对象映射文件-->

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;mapping resource="com/hsp/domain/Employee.hbm.xml"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

</session-factory>

</hibernate-configuration>

<wbr>7.测试文件</wbr>
test.java

package com.ru.service;

 

import java.util.Date;

import java.util.Iterator;

import java.util.List;

 

 

import javax.transaction.HeuristicMixedException;

import javax.transaction.HeuristicRollbackExcepti<wbr>on;</wbr>

import javax.transaction.RollbackException;

import javax.transaction.SystemException;

 

 

import org.hibernate.HibernateException;

import org.hibernate.Query;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import org.hibernate.classic.Session;

 

import com.ru.domain.Employee;

import com.ru.utils.GetSession;

 

 

 

public class test1 {

 

public static void main(String[] args) {

insertuser();

//updateuser();

//deleteuser();

queryuser();

//loaduser();

// getuser();

}

//查询用户1

//getCurrentSession需要事务。并且session自动关闭。

public static void queryuser(){

SessionFactory sf=GetSession.getSessionFactory();

Session session=sf.getCurrentSession();

Transaction ts=session.beginTransaction();

//query查询,Employee是类,不是表。name是变量

try {

Query query=(Query)session.createQuery("from Employee where name='南成如'");

List<Employee> list=query.list();

for (Employee employee : list) {

System.out.print(employee.getId()+"--"+employee.getName()+"--"+employee.getEmail());

}

ts.commit();

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//查询用户2

//如果使用openSession不需要事务,需要手动关闭session

public static void loaduser(){

SessionFactory sf=GetSession.getSessionFactory();

Session session=sf.getCurrentSession();

Transaction ts=session.beginTransaction();

try {

Employee em=(Employee) session.load(Employee.class, 1);

System.out.print(em.getName());

ts.commit();

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

//查询用户3

//如果使用openSession不需要事务,需要手动关闭session

public static void getuser(){

SessionFactory sf=GetSession.getSessionFactory();

Session session=sf.openSession();

try {

Employee em=(Employee) session.load(Employee.class, 4);

System.out.print(em.getName());

} catch (HibernateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if (session!=null) {

session.close();

}

}

}

//修改用户

public static void updateuser(){

//得到会话工厂

SessionFactory sf=GetSession.getSessionFactory();

//创建会话,得到连接

Session session=sf.openSession();

//设置事务

Transaction transation=session.beginTransaction();

//修改用户要先获取用户

//load会通过主键属性,获取给对象实例。

Employee em=(Employee)session.load(Employee.class, 1);//产生一个select语句

em.setName("如");//导致一个update语句

em.setEmail("*********@qq.com");

//提交事务,关闭会话

transation.commit();

session.close();

}

//删除用户

public static void deleteuser(){

//获取会话工厂

SessionFactory sf=GetSession.getSessionFactory();

//打开会话

Session session=sf.openSession();

//设置事务,增删改都要设置事务,否则不执行

Transaction ts=null;

try {

ts=session.beginTransaction();

//删除用户先要获取用户

Employee em=(Employee)session.load(Employee.class, 1);

session.delete(em);

//提交事务,关闭会话

ts.commit();

} catch (HibernateException e) {

// TODO Auto-generated catch block

if (ts!=null) {

ts.rollback();//回滚

}

throw new RuntimeException(e.getMessage());

}finally{

if (session!=null&&session.isOpen()) {

session.close();

}

}

}

//添加用户

public static void insertuser() {

//1.读取heibernate的配置文件hibernate.cfg.xml,并完成初始化

Configuration configure=new Configuration().configure("hibernate.cfg.xml");

//2.创建会话工厂

SessionFactory sf=configure.buildSessionFactory();

//3.创建session,相当于连接jdbc

Session session=sf.openSession();

//4.4.对hiberate而言,要求程序员,在进行 增加,删除,修改的时候使用事务提交,

Transaction transation=session.beginTransaction();

//5.创建对象

Employee e=new Employee();

e.setName("如");

e.setEmail("*********@qq.com");

e.setHiredate(new Date());

//6.save employee就是持久化该对象 (把对象保存到了数据库中称为一条记录)

//==>insert into ....[被hiberante封装]

session.save(e);

//提交事务。关闭会话

transation.commit();

session.close();

}

 

}

分享到:
评论

相关推荐

    Hibernate的一个简单例子

    **Hibernate 是一个强大的Java持久化框架,用于简化数据库操作。在这个简单的例子中,我们将深入探讨Hibernate的核心概念,并了解如何在实际项目中应用它。** **一、Hibernate 概述** Hibernate 是一个对象关系映射...

    hibernate的第一个例子

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

    一个Hibernate的简单实例

    **一个Hibernate的简单实例** 在Java开发中,Hibernate是一个非常重要的对象关系映射(ORM)框架,它极大地简化了数据库操作。本实例旨在为初学者提供一个基础的Hibernate使用教程,帮助理解其基本概念和工作流程。...

    hibernate3+mysql简单学习实例.rar

    【描述】:这个压缩包“hibernate3+mysql简单学习实例.rar”包含了一个使用Hibernate3 ORM框架与MySQL数据库进行交互的初级教学示例。Hibernate是一个强大的Java对象关系映射(ORM)工具,它允许开发者将Java类与SQL...

    jpa+HIBERNATE的一个简单例子

    以下是一个简单的JPA + Hibernate的例子,展示了如何创建一个实体并进行持久化操作: 1. **定义实体类** ```java @Entity public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) ...

    Hibernate 的第一个例子

    这个简单的例子展示了如何使用Hibernate保存一个新用户到数据库。进一步学习时,你可以尝试查询、更新和删除操作,以及更复杂的查询表达式。 **总结** 通过这个"Hibernate的第一个例子",我们了解了如何配置...

    一个很简单的hibernate例子

    本示例将深入解析一个基于Hibernate的简单应用,帮助开发者理解其基本概念和工作流程。 首先,我们需要了解Hibernate的核心概念。Hibernate通过XML配置文件或注解来定义Java类和数据库表之间的映射关系,这样我们就...

    Hibernate三态及简单实例

    Hibernate三态及简单实例,主要简单的使用Hibernate的CRUD,这是我学习Hibernate写的。跟大家分享下。

    hibernate入门简单实例

    这个“hibernate_first”压缩包提供了一个适合初学者的简单实例,帮助理解Hibernate的基础用法。以下是关于Hibernate入门的一些关键知识点: 1. **对象关系映射(ORM)**:ORM是将数据库中的表映射为Java类的过程,...

    hibernate第一个例子

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

    Hibernate实践例子程序

    一个最简单的Hibernate project(不涉及Struts, Tomcat, XDoclet,JBoss等东东)必须的几个东东: 1. Hibernate工具包。 2. JDBC数据库连接驱动。以mysql为例,mysql-connector-java-3.1.×-bin.jar。 3. 配置...

    hibernate的一个简单例程

    **标题:** Hibernate简单示例教程 **描述:** 本教程旨在提供一个关于Hibernate框架的简明教程,包括其搭建过程及基本使用方法。通过学习,读者将能够理解Hibernate的核心概念,并能动手实现在Java应用程序中集成和...

    hibernate的简单例子

    Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发者用面向对象的方式来处理数据库操作。在Java编程环境中,Hibernate 提供了一种桥梁,将复杂的SQL语句与Java对象之间进行解耦,使得开发者可以更专注于...

    hibernate3全部jar包:hibernate3.jar.zip 下载

    Hibernate3 是一个强大的Java持久化框架,它允许开发者将数据库操作与业务逻辑解耦,使得应用程序的开发更为简便。这个“hibernate3全部jar包:hibernate3.jar.zip”包含了所有必要的库文件,方便用户一次性下载并...

    hibernate的一个简单的例子

    例如,在这个简单的例子中,可能会有一个"学生"实体,对应数据库中的"students"表。 2. **持久化类(Persistent Class)**: 实体类需要被注解为持久化类,这样Hibernate才能识别并管理它们。这通常通过在类上使用`@...

    spring3+hibernate3+derby的实例

    总结来说,"spring3+hibernate3+derby的实例"是一个完整的Java Web项目,展示了如何使用Spring 3作为应用程序框架,Hibernate 3作为ORM工具,以及Apache Derby作为数据库来构建一个可运行的应用。这样的实例对于学习...

    MyEclipse8.5 Hibernate+mysql入门简单例子

    该例子可以先通过mysql建立数据库 利用myeclipse的逆向工程生成pojo(java简单对象),dao(数据库操作对象),hibernateSession类 快速构建数据库操作架构,适合初学者参考. 关于myeclipse的逆向工程视频可以参考myeclipse...

    一个简单的hibernate_4 链接Oracle例子

    【标题】:“一个简单的hibernate_4 链接Oracle例子” 在Java开发中,Hibernate是一个非常流行的Object-Relational Mapping(ORM)框架,它允许开发者以面向对象的方式处理数据库操作,极大地简化了数据库编程。这...

    spring+Hibernate+jsp的简单例子

    这个"spring+Hibernate+jsp的简单例子"是为初学者提供了一个了解和学习这些技术如何协同工作的实践项目。下面我们将深入探讨这三个组件以及它们在Web开发中的应用场景。 1. Spring框架:Spring是一个全面的Java企业...

    Hibernate的多对一和一对多操作实例

    在IT领域的数据库设计与对象关系映射(ORM)框架中,Hibernate作为一个强大的工具,被广泛应用于Java应用程序中,用于处理数据库交互。本文将深入探讨Hibernate框架下“多对一”和“一对多”的关联关系,并通过一个...

Global site tag (gtag.js) - Google Analytics