`

使用Hibernate步骤:(一)

 
阅读更多

先部署jar文件

1、根目录下的 \hibernate3.jar

2、lib\required目录下所有jar

3、lib\jpa(java持久化API)\hibernate-jpa-2.0-api-1.0.1.Final.jar(Jpa是一种规范,而Hibernate是它的一种实现)

 

4、Oracle数据库的驱动包(在数据库安装目录 jdbc\lib\下 找对应的版本的驱动)

 

 

编写Hibernate配置文件:

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!-- 数据库连接 -->
		<property name="connection.driver_class">oracle.jdbc.OracleDriver</property>
		<property name="connection.url">jdbc:oracle:thin:@localhost:1521:oracle</property>
		<property name="connection.username">user01</property>
		<property name="connection.password">1234</property>
		<!-- 辅助参数 -->
		<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="current_session_context_class">thread</property>
		<!-- 映射文件 -->
		<mapping resource="po/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

 

创建持久化类和映射文件:

       持久化类示例:

 

package po;

public class User implements java.io.Serializable {
	private static final long serialVersionUID = -2998707288951184222L;
	private Integer id;	//OID
	private String name;
	private String password;
	private String telephone;
	private String username;
	private String isAdmin;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getTelephone() {
		return telephone;
	}
	public void setTelephone(String telephone) {
		this.telephone = telephone;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getIsAdmin() {
		return isAdmin;
	}
	public void setIsAdmin(String isAdmin) {
		this.isAdmin = isAdmin;
	}
}

 

映射文件示例:

 

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
                                            <!-- dynamic-update  动态更新 -->
		<class name="po.User" table="`USERS`" dynamic-update="true">
			<id name="id" type="java.lang.Integer" ><!-- setId,访问时直接调用的方法 -->
				<column name="`ID`" precision="4" scale="0"></column>
				<!-- assigned 需要由程序去生产主键,根据业务要求拼接的编码,要在程序中创建类 -->
				<!-- sequence 访问序列获得编码 identity自增序列  increment (不安全)先查出最大的编码,再加1当成主键 -->
				<!-- uuid uuid的算法创建uuid -->
				<!-- native 自增,hibernate自行判断自增类型,有默认的类型 -->
				<!--<generator class=sequence>
					 [如果不写param,自行寻找名为hibernate_sequence的序列]
					 [如果每张表用的序列不一样,就应写出如下<param>,指明序列名] 
					<param name="sequence">SEQ_ID</param> 
				</generator> -->
				<generator class="increment"></generator>
			</id>
			<!-- property 的name  为pojo里get,set方法名里的名 ,不是属性名 -->
                        <!-- 注意not-null,对delete()的影响 -->
			<property name="name" type="java.lang.String" column="`NAME`" length="50" not-null="true"></property>
			<property name="password" type="java.lang.String">
				<column name="`PASSWORD`" length="50" not-null="true"></column>
			</property>
			<property name="telephone" type="java.lang.String" column="`TELEPHONE`" length="15"></property>
			<property name="username" type="java.lang.String" column="`USERNAME`" length="50"></property>
			<property name="isAdmin" type="java.lang.String" column="`ISADMIN`" length="2"></property>
		</class>
</hibernate-mapping>

 

使用Hibernate API;

            得到Session - - >

package common;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateSessionFactory {
	private static Configuration cfg;
	private static SessionFactory sessionFactory;
	static {
		try {
			//读取默认位置的配置文件(如果改了路径,就应带参)
			cfg = new Configuration().configure();
			//得到SessionFactory对象.
			sessionFactory = cfg.buildSessionFactory();
		} catch (HibernateException e) {
			//此处应有日志
			
			throw new RuntimeException("Hibernate初始化失败",e);
		}
	}
	
	public static Session getSession(){
		//sessionFactory.openSession();不建议用opensession,因为这个会话没有绑定线程,需通过额外的代码来实现
		
		//建议用如下方法,得到与当前线程绑定的session, 但要注意此session要在事物环境下工作
		return sessionFactory.getCurrentSession();
	}
}

 

编写Dao 

 

package dao;

import po.User;
import common.HibernateSessionFactory;

public class UserDao {

	//增加
	public void add(User user){
		HibernateSessionFactory.getSession().save(user);
	}
	//查询
	public User queryById(java.io.Serializable id){
		//可以这样写 --》HibernaterSessionFactory.getSession().get("po.User", id);
		return (User)HibernateSessionFactory.getSession().get(User.class, id);
		//get() 查不到返回null              (OID  异常时)
		//load() 查不到,就报异常exception    (OID  异常时)
	}
	//更新
	public void update(User user){
		HibernateSessionFactory.getSession().update(user);
	}
	
	// for save or update
	public void test(User user){
		//方法一 、 id==null? save() : update() 产生的SQL语句,会把字段全部更新
		//HibernateSessionFactory.getSession().saveOrUpdate(user);
		
		/*
		//方法二 、  快照(在表中查询结果)
		User u = (User) HibernateSessionFactory
				.getSession().get(User.class,user.getId());
		//在查询的基础上,给查询的结果重新赋值,它会有一个比照的效果,u与user比照;
		//在比照中,如果数据有更新,就会更新表中数据   (hibernate中java对象的三种状态)
		//如果没有变化,就不产生变化
		//如果在User.hbm.xml中配置 (动态更新配置)
		//动态更新配置  dynamic-update="true" ,SQL语句就只更新变化的字段
		u.setIsAdmin(user.getIsAdmin());
		u.setName(user.getName());
		u.setPassword(user.getPassword());
		u.setTelephone(user.getTelephone());
		u.setUsername(user.getUsername());	*/		
		
		
		//方法三、   for save or update 
		//     配置  dynamic-update="true"
		//     merge()可以实现  动态更新
		HibernateSessionFactory.getSession().merge(user);
	}
	
	public void delete(User user){
		//建议先查  快照  
//              例如传过来的user只有oid,但name = null,此时直接delete会报错,因为映射文件里设置了name--》not-null,可以手动去把这个限制去掉
                //User u = (User) HibernateSessionFactory
//				.getSession().get(User.class,user.getId());
//		HibernateSessionFactory.getSession().delete(u);
                
                HibernateSessionFactory.getSession().delete(user);
	}
}

 

编写 service

 

package biz;

import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import common.HibernaterSessionFactory;
import po.User;
import dao.UserDao;

public class UserBiz {
	private  UserDao userDao = new UserDao();
	
	public void addUser(User user){
		Transaction tx = null;
		try {
			//开启事务
			tx = HibernaterSessionFactory.getSession().beginTransaction();
			
			userDao.add(user);
		
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			if(tx != null){
				tx.rollback();
			}
		}
	};
	
	public User getUserById(java.io.Serializable id){
		Transaction tx = null;
		User user = null;
		try {
			//开启事务
			tx = HibernaterSessionFactory.getSession().beginTransaction();
			user = userDao.queryById(id);
			tx.commit();
		} catch (HibernateException e) {
			e.printStackTrace();
			if(tx != null){
				tx.rollback();
			}
		}
		return user;
	}
    //省略部分代码
}

 

  • 大小: 17 KB
分享到:
评论

相关推荐

    MyEclipse+hibernate错误:Could not get list of suggested identity strategies from database解决

    在使用MyEclipse集成开发环境和Hibernate框架进行Java Web应用开发时,可能会遇到一个常见的问题,即"Could not get list of suggested identity strategies from database"。这个错误信息表明Hibernate在尝试获取...

    Hibernate Web应用的开发步骤

    Hibernate Web应用的开发一般经过以下几个步骤: (1)创建数据库。 (2)将Hibernate所需的JAR包复制到WEB-INF/lib下。 (3)创建Hibernate的配置文件。 (4)利用Hibernate的第三方工具或Eclipse的有关插件从...

    在Eclipse中搭建hibernate项目环境步骤

    通过本文,读者可以了解到搭建 Hibernate 项目环境的详细步骤,从而更好地使用 Hibernate 实现数据库操作。 步骤 1:加载 Hibernate 类库和依赖库 在 Eclipse 中,首先需要加载 Hibernate 类库和依赖库。可以通过 ...

    JAVA 使用hibernate配置实例

    在普通Java工程中配置Hibernate,我们需要以下步骤: 1. 添加Hibernate库:下载Hibernate的jar文件并将其添加到项目的类路径中。这包括hibernate-core、hibernate-entitymanager等核心库。 2. 创建实体类:为...

    搭建Hibernate项目环境步骤

    下面将详细阐述这个过程中的四个关键步骤: 1. **加载Hibernate类库和依赖库** 在开始构建Hibernate项目时,首先需要引入必要的库。这通常通过在项目的类路径中添加Hibernate的JAR文件来实现,包括Hibernate的核心...

    BONC_Hibernate

    - **第一部分**:介绍了如何创建第一个Hibernate应用程序,包括设置环境、编写实体类、创建映射文件等步骤。 - **设置**:配置Hibernate所需的环境和依赖库。 - **第一个class**:创建一个简单的Java类作为持久化...

    Hibernate5.0 jar包

    hibernate5.0jar包,包括:antlr-2.7.7.jar、dom4j-1.6.1.jar、geronimo-jta_1.1_spec-1.1.1.jar、hibernate-commons-annotations-5.0.0.Final.jar、hibernate-core-5.0.0.Final.jar、hibernate-jpa-2.1-api-1.0.0....

    Hibernate使用指南

    使用 Hibernate 的步骤主要包括以下几个步骤: * 导入 jar 包:在项目中添加 Hibernate 的 jar 包,以便使用 Hibernate。 * 添加配置文件:在项目的 src 目录下添加 hibernate.cfg.xml 配置文件,以便配置 ...

    hibernate入门实例操作步骤

    Hibernate是一款强大的Java对象关系映射(ORM)框架,它极大地简化了数据库操作,使得开发者可以使用Java对象的方式处理数据库事务。本篇将详细介绍Hibernate入门实例的操作步骤,包括手工配置文件和利用Eclipse自动...

    Hibernate完整使用教程

    Hibernate 的原理可以概括为以下几个步骤: * 对象模型的定义 * 对象关系映射的定义 * SQL 语句的生成 * 数据库交互的处理 Hibernate 创始人 Hibernate 的创始人是 Gavin King,他是一名澳大利亚的软件开发者。...

    Hibernate执行持久层访问步骤

    《Hibernate执行持久层访问步骤详解》 在Java开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。它允许开发者使用面向对象的方式进行数据操作,而无需关注底层的SQL语句。本文将...

    Eclipse上使用Hibernate

    本文将指导您在 Eclipse 环境中使用 Hibernate,包括下载和安装 Hibernate、配置 Hibernate、生成实体类和 DAO 类、添加映射资源等步骤。 下载和安装 Hibernate 首先,您需要下载 Hibernate 并将其添加到项目中。...

    手写Hibernate 步骤(图,文字)以及原因

    以下是对手写Hibernate步骤的详细解释: 1. **初始化**: - 首先,你需要配置`hibernate.cfg.xml`文件,其中包含了数据库连接信息,如URL、用户名、密码,以及映射文件的位置。这些信息会被读入并存储在内存中的...

    Hibernate的三个准备和七个步骤

    接下来是使用Hibernate进行数据库操作的具体步骤: 1. **获取配置信息:** - 通过`Configuration`类的`configure()`方法加载`Hibernate.cfg.xml`文件中的配置信息。这一步骤非常重要,因为它初始化了整个Hibernate...

    Hibernate连接SQLite配置说明和方言代码

    Hibernate连接SQLite配置步骤: 1、添加SQLite库: 1.1、将两个jar包:com.zy.hibernate.dialect.SQLiteDialect.jar、sqlite-jdbc-3.7.2.jar拷贝到“\WEB-INF\lib”文件夹下; 2、配置hibernate: 2.1、将...

    myeclipse下hibernate用法

    MyEclipse 中使用 Hibernate 的步骤 MyEclipse 是一个功能强大的集成开发环境,支持多种编程语言和框架,而 Hibernate 则是一种流行的 ORM(Object-Relational Mapping)框架,用于简化数据库交互。本文将指导您...

    hibernate数据库相关操作步骤

    本文将详细介绍使用Hibernate进行数据库操作的步骤。 1. **配置Hibernate** - 创建`hibernate.cfg.xml`配置文件:这是Hibernate的核心配置文件,用于定义数据库连接信息,包括驱动类、URL、用户名和密码。 - 添加...

    Hibernate反向工程详细步骤

    接下来,我们将分步解析如何在MyEclipse中使用Hibernate反向工程生成实体类。 ##### 步骤1:新建Java项目 在MyEclipse中,首先需要创建一个新的Java项目。通过“File”菜单下的“New”选项,选择“Project”,然后...

    hibernate-5.2.10最新jar包

    详细介绍如何在实际项目中集成Hibernate,包括配置文件设置、实体类设计、数据访问层的构建、事务处理等步骤,以及如何进行增删改查操作。 8. 性能优化: 分析并探讨Hibernate的缓存机制(一级缓存和二级缓存)、...

    hibernate安装包

    安装和使用Hibernate的步骤一般如下: 1. 添加依赖:将`hibernate_jar_core`中的JAR文件添加到项目的类路径中,或者在Maven或Gradle等构建工具中配置相关依赖。 2. 配置Hibernate:创建`hibernate.cfg.xml`配置文件...

Global site tag (gtag.js) - Google Analytics