文档章节

Hibernate Demo

天高地厚宇宙无穷
 天高地厚宇宙无穷
发布于 2016/05/02 00:33
字数 806
阅读 20
收藏 0

实现步骤:

1、在MyEclipse中创建工程,并添加对Hibernate的支持,加入Oracle驱动包

2、数据表设计

3、编写配置文件

4、编写bean

5、编写业务接口及实现接口类

6、测试


代码:

1、数据表设计

-- Create table
create table JACK.TB_USER
(
  userid   NUMBER not null,
  username VARCHAR2(20) not null,
  password VARCHAR2(20) not null,
  age      NUMBER,
  sex      VARCHAR2(1)
)
tablespace JACKSPACE
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table JACK.TB_USER
  add constraint PK_JACK_TB_USER primary key (USERID)
  using index 
  tablespace JACKSPACE
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

2、模型

package com.jack.entitybean;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
	private String userName;
	private char sex;
	private double age;
	private int userId;
	private String password;
}

3、配置文件

<?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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

	<session-factory>
		<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
		<property name="connection.url">jdbc:oracle:thin:@localhost:1521:study</property>
		<property name="connection.username">jack</property>
		<property name="connection.password">jack123</property>
		<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
		<!-- 显示或不显示sql语句 -->
                <property name="hibernate.show_sql">true</property>
		<!-- 映射文件 -->
		<mapping resource="User.hbm.xml" />
	</session-factory>

</hibernate-configuration>

4、映射文件

<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC   
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
	<class name="com.jack.entitybean.User" table="jack.tb_user">
		<id name="userId" column="USERID">
			<!-- 算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID -->
			<generator class="assigned"></generator>
		</id>
		<property name="userName" column="USERNAME"></property>
		<property name="password" column="PASSWORD"></property>
		<property name="age" column="AGE"></property>
		<property name="sex" column="SEX"></property>
	</class>
</hibernate-mapping>

5、业务接口及实现类

import java.util.List;

import com.jack.entitybean.User;

/**
 * 增删改查
 * 
 * @author Jack
 * 
 */
public interface IUserManager {
	public boolean doSave(Object obj);

	public boolean doDelete(Object obj);

	public boolean doUpdate(Object obj);

	public List<User> findUserById(int id);

	public List<User> findUserByName(String name);

}
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import com.jack.entitybean.User;
import com.jack.factory.HibernateSessionFactory;

public class UserManagerImple implements IUserManager {
	boolean isOk = false;
	private Session session = null;

	@Override
	public boolean doSave(Object obj) {
		// TODO Auto-generated method stub
		session = HibernateSessionFactory.getSession();
		try {
			// 开启事务
			session.beginTransaction();
			// 保存User对象
			session.save(obj);
			// 提交事务
			session.getTransaction().commit();
			isOk = true;
		} catch (Exception e) {
			e.printStackTrace();
			// 回滚事务
			session.getTransaction().rollback();
		} finally {
			if (session != null) {
				if (session.isOpen()) {
					// 关闭session
					session.close();
				}
			}
		}
		return isOk;
	}

	@Override
	public boolean doDelete(Object obj) {
		// TODO Auto-generated method stub
		session = HibernateSessionFactory.getSession();
		try {
			// 开启事务
			session.beginTransaction();
			// 保存User对象
			session.delete(obj);
			// 提交事务
			session.getTransaction().commit();
			isOk = true;
		} catch (Exception e) {
			e.printStackTrace();
			// 回滚事务
			session.getTransaction().rollback();
		} finally {
			if (session != null) {
				if (session.isOpen()) {
					// 关闭session
					session.close();
				}
			}
		}
		return isOk;
	}

	@Override
	public boolean doUpdate(Object obj) {
		// TODO Auto-generated method stub
		session = HibernateSessionFactory.getSession();
		try {
			// 开启事务
			session.beginTransaction();
			// 保存User对象
			session.update(obj);
			// 提交事务
			session.getTransaction().commit();
			isOk = true;
		} catch (Exception e) {
			e.printStackTrace();
			// 回滚事务
			session.getTransaction().rollback();
		} finally {
			if (session != null) {
				if (session.isOpen()) {
					// 关闭session
					session.close();
				}
			}
		}
		return isOk;
	}

	@Override
	public List<User> findUserById(int id) {
		// TODO Auto-generated method stub
		List<User> list = null;
		session = HibernateSessionFactory.getSession();
		try {
			// 开启事务
			session.beginTransaction();
			// 保存User对象
			Criteria criteria = session.createCriteria(User.class);
			criteria.add(Restrictions.eq("userId", id));
			list = criteria.list();
			// 提交事务
			session.getTransaction().commit();
			isOk = true;
		} catch (Exception e) {
			e.printStackTrace();
			// 回滚事务
			session.getTransaction().rollback();
		} finally {
			if (session != null) {
				if (session.isOpen()) {
					// 关闭session
					session.close();
				}
			}
		}
		return list;
	}

	@Override
	public List<User> findUserByName(String name) {
		// TODO Auto-generated method stub
		List<User> list = null;
		session = HibernateSessionFactory.getSession();
		try {
			// 开启事务
			session.beginTransaction();
			// 保存User对象
			Criteria criteria = session.createCriteria(User.class);
			criteria.add(Restrictions.eq("userName", name));
			list = criteria.list();
			// 提交事务
			session.getTransaction().commit();
			isOk = true;
		} catch (Exception e) {
			e.printStackTrace();
			// 回滚事务
			session.getTransaction().rollback();
		} finally {
			if (session != null) {
				if (session.isOpen()) {
					// 关闭session
					session.close();
				}
			}
		}
		return list;
	}

}

6、测试

import org.hibernate.Session;
import org.junit.Test;

import com.jack.entitybean.User;
import com.jack.factory.HibernateSessionFactory;

public class Testing {
	@Test
	public void test01() {
		Session session = HibernateSessionFactory.getSession();
		session.close();
	}

	@Test
	public void test02() {
		User user = new User();
		user.setUserId(11333);
		user.setUserName("张小三");
		user.setPassword("1234567890");

		UserManagerImple manager = new UserManagerImple();
		System.out.println(manager.doUpdate(user));
		// System.out.println(manager.doSave(user));
		// System.out.println(manager.doDelete(user));
		// System.out.println(manager.findUserById(11333));
		// System.out.println(manager.findUserByName("张小三"));
	}

	public static void main(String[] args) {
	}
}


© 著作权归作者所有

上一篇: Spring AOP Demo
下一篇: Tomcat使用简介
天高地厚宇宙无穷
粉丝 11
博文 178
码字总数 14180
作品 0
贵阳
私信 提问
Hibernate 入门

一、Hibernate包。 1、目录结构。 documentation:存放Hibernate相关文档,包括参考文档和API文档。 lib:存放Hibernate编译和运行所依赖的JAR包。其中required子目录下包含了运行Hibernate...

JackMo2015
2016/12/27
13
0
bboss/bboss-plugins

bboss 插件工程 bboss-plugins project.包含word转pdf、pdf转swf项目,持久层hibernate插件 bboss hibernate插件工程 hihernate插件包含以下两个功能: 1.通过bboss初始化hibernate并加载hib...

bboss
2017/03/30
0
0
幽默者/hibernate mysql demo

hibernate-mysql-demo 基于maven构建的hibernate mysql demo。 基于xml、annotation的hibernate demo:其中包含one-to-one、one-to-many、many-to-many映射关系的配置。 独立的测试用例。 内...

幽默者
2015/01/26
0
0
mybatisplus-spring-boot-starter 1.0.1 发布

mybatisplus-boot-starter 为 mybaits-plus 快速集成 spring-boot 简化配置而生,让您不在为对比 MyBatis 和 Hibernate 而烦恼 mybatis-plus 作为 mybatis 的好拍档补充了它的短板,让 myba...

青苗
2017/05/16
2.4K
4
mybatisplus-spring-boot-starter 1.0.0 发布

mybatisplus-spring-boot-starter 为 Mybatis-Plus 快速集成 spring-boot 简化配置而生,不在需拿 MyBatis 和 Hibernate相比, mybatis-plus 作为 mybatis 的好拍档补充了它的短板,让 myba...

青苗
2017/05/05
2.2K
14

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
10
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
1K
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部