一、jar包

  最基础的hibernatejar包,以及数据库驱动的jar包

  

二、数据库

  t_user表
id int 主键 自动增长
name varchar()

三、配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!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="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">mysql123</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test</property>
<property name="hibernate.connection.autocommit">true</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 显示生成的sql语句 -->
<property name="hibernate.show_sql">true</property> <mapping resource="cn/itcast/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

hibernate.cfg.xml

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.domain">
<class name="User" table="t_user">
<id name="id" type="int">
<generator class="native" />
</id>
<property name="name" type="string"/>
</class>
</hibernate-mapping>

Uesr.hbm.xml

四、程序

  1、主要是负责session的开启,属于模板代码

 package cn.itcast.domain.dao;

 import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory sessionFactory;
static{
sessionFactory=new Configuration()
.configure()
.buildSessionFactory();
}
public static SessionFactory getSessionFactory(){
return sessionFactory;
}
public static Session openSession(){
return sessionFactory.openSession();
}
}

HibernateUtils.java

  2、定义一个接口,声明增删改查的方法

 package cn.itcast.domain.dao;

 import java.util.List;
import cn.itcast.domain.User; public interface UserDao { public void save(User user);
public void update(User user);
public void delete(int id);
public User getById(int id);
public List<User> findAll();
public QueryResult findAll(int firstNumber, int maxNumber);
}

UserDao.java

  3、对接口创建实现类

 package cn.itcast.domain.dao;

 import java.util.List;

 import org.hibernate.Session;
import org.hibernate.Transaction;
import cn.itcast.domain.User; public class UserDaoImpl implements UserDao { @Override
public void save(User user) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
session.save(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public void update(User user) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx=null;
try{
tx=session.beginTransaction();
session.update(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public void delete(int id) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
Object user = session.get(User.class, id);
session.delete(user);
tx.commit();
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public User getById(int id) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
User user =(User) session.get(User.class, id);
tx.commit();
return user;
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} @Override
public List<User> findAll() {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
List<User> user = session.createQuery(" FROM User").list();
tx.commit();
return user;
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} /**
* 分页查询
*/
@Override
public QueryResult findAll(int firstNumber, int maxNumber) {
// TODO Auto-generated method stub
Session session = HibernateUtils.openSession();
Transaction tx= null;
try{
tx=session.beginTransaction();
List<User> list = session.createQuery(" FROM User")
.setFirstResult(firstNumber)
.setMaxResults(maxNumber)
.list(); Long count = (Long) session.createQuery("SELECT COUNT(*) FROM User").uniqueResult();
tx.commit();
return new QueryResult(count.intValue(),list);
}catch(RuntimeException exception){
tx.rollback();
throw exception;
}finally{
session.close();
}
} }

UserDaoImpl.java

  4、做一个测试类

 package cn.itcast.domain.dao;

 import java.util.List;

 import org.junit.Test;

 import cn.itcast.domain.User;

 public class TestUserDao {

     private UserDao userDao = new UserDaoImpl();

     @Test
public void testSave_1() {
User user = new User();
user.setName("张三"); // 保存
userDao.save(user);
} @Test
public void testGetById() {
User user = userDao.getById(1);
System.out.println(user);
} @Test
public void testUpdate() {
// 从数据库获取一条存在的数据
User user = userDao.getById(1);
user.setName("李四"); // 更新
userDao.update(user);
} @Test
public void testDelete() {
userDao.delete(1);
} // ------------ @Test
public void testSave_25() {
for (int i = 1; i <= 25; i++) {
User user = new User();
user.setName("test_" + i);
userDao.save(user); // 保存
}
} @Test
public void testFindAll() {
List<User> list = userDao.findAll();
for (User user : list) {
System.out.println(user);
}
} @Test
public void testFindAllIntInt() {
// 查询
// QueryResult qr = userDao.findAll(0, 10); // 第1页,每页10条
// QueryResult qr = userDao.findAll(10, 10); // 第2页,每页10条
QueryResult qr = userDao.findAll(20, 10); // 第3页,每页10条 // 显示结果
System.out.println("总记录数:" + qr.getCount());
for (User user : (List<User>) qr.getList()) {
System.out.println(user);
}
} }

TestUserDao.java

hibernate搭建及其增删改查的更多相关文章

  1. Spring JdbcTemplate框架搭建及其增删改查使用指南

    Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...

  2. 肝 hibernate 配置and增删改查 and 测试

    已经通宵三天撸代码了,现在的我已经养成晚上修仙写代码的节奏了.....最近 刚刚复习到了 hibernate 谈谈 这篇文章就谈谈我对这货的理解吧. 在看这篇文章之前希望你 知道sessionfact ...

  3. Hibernate下的增删改查

    概述: 关系--对象映射的中间件,属于开源ORM框架,是我们业务逻辑层中的调用数据库的中间件 演变: jdbc---hibernater---mybatis hibernate和mybatis区别? ...

  4. bootstrap+Ajax+SSM(maven搭建)实现增删改查

    https://www.jianshu.com/p/d76316b48e3e 源码: https://github.com/Ching-Lee/crud 功能点: 分页 数据校验 ajax Rest风 ...

  5. Hibernate入门_增删改查

    一.Hibernate入门案例剖析:  ①创建实体类Student 并重写toString方法 public class Student { private Integer sid; private ...

  6. ssm项目框架搭建(增删改查案例实现)——(SpringMVC+Spring+mybatis项目整合)

    Spring 常用注解 内容 一.基本概念 1. Spring 2. SpringMVC 3. MyBatis 二.开发环境搭建 1. 创建 maven 项目 2. SSM整合 2.1 项目结构图 2 ...

  7. hibernate的配置, 增删改查

    路径:查找路径 实际上都是查找编译后的对应的路径,在bin文件夹中总 增删改必须开启事务才行 hibernate加载文件的两种方式 configure 1.引包 antlr-2.7.6.jar bac ...

  8. struts+hibernate 请求数据库增删改查(小项目实例)

      StudentAction.java package com.action; import java.util.ArrayList; import java.util.List; import j ...

  9. 5.Hibernate实现全套增删改查和ajax异步分页

    1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...

随机推荐

  1. flume 进阶

    一.flume事务 put事务流程: 1.doPut:将批量数据先写入临时缓冲区putList 2.doCommit:检查Channel内存队列是否足够, (1)达到一定时间没有数据写入到putLis ...

  2. 解决在data里面获取一个固定的img值

    正常情况下在data里面申明,在img标签里面通过 :src应用就行了,但是如果是直接申明引用是没效果的: html: <div class="logo"> <i ...

  3. [2019杭电多校第二场][hdu6598]Harmonious Army(最小割)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6598 题意是说一个军队有n人,你可以给他们每个人安排战士或者法师的职业,有m对人有组合技,组合技的信息 ...

  4. ARM汇编3

    一. 什么是协处理器? 1.1. SoC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定任务. 1.2. ARM设计上支持多达16个协处理器,但是一般SoC只实现其中的CP15.(c ...

  5. HDU 6617 Enveloping Convex(凸包+半平面交+二分)

    首先对于这m个点维护出一个凸包M,那么问题就变成了判断凸包P进行放大缩小能不能包含凸包M.(凸包P可以进行中心对称变换再进行放大缩小,见题意) 如何判断合适的相似比呢,我们可以用二分去放大缩小凸包P的 ...

  6. CSS3进度条动画

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. JavaScript基础1——在末尾添加节点

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Python + logging输出到屏幕,将log日志写入到文件

    logging提供了一组便利的函数,用来做简单的日志.它们是 debug(). info(). warning(). error() 和 critical(). logging函数根据它们用来跟踪的事 ...

  9. 树——binary-tree-postorder-traversal(树的前序遍历)

    问题: Given a binary tree, return the preorder traversal of its nodes' values. For example: Given bina ...

  10. 使用Node,Vue和ElasticSearch构建实时搜索引擎

    (译者注:相关阅读:node.js,vue.js,Elasticsearch) 介绍 Elasticsearch是一个分布式的RESTful搜索和分析引擎,能够解决越来越多的用例. Elasticse ...