文档章节

hibernate简单增删改查

一个yuanbeth
 一个yuanbeth
发布于 2016/08/17 09:28
字数 592
阅读 24
收藏 0
点赞 0
评论 0

一dao层

package cn.itcast.b_dao;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import cn.itcast.a_helloword.User;

public class UserDao {
    private static SessionFactory sessionFactory;
    
    static {
       //读取配置文件并生成Session工厂对象
        Configuration cfg=new Configuration();
        cfg.configure("hibernate.cfg.xml");
        sessionFactory=cfg.buildSessionFactory();
    }
    
    /**
     * 保存用户
     * @param user
     */

    public void save(User user){
        Session session=sessionFactory.openSession();
        Transaction tx = null;
        try {
            tx=session.beginTransaction();
            session.save(user);//更新
            tx.commit();
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        } finally{
            session.close();
        }
    }
    
    /**
     * 更新用户
     * @param user
     */

    public void update(User user){
        Session session=sessionFactory.openSession();
        Transaction tx = null;
        try {
            tx=session.beginTransaction();
            session.update(user);//保存
            tx.commit();
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        } finally{
            session.close();
        }
    }
    
    /**
     *获取指定id的对象
     * @param id
     * @return
     */

    public User getById(int id){
        Session session=sessionFactory.openSession();
        Transaction tx=null;
        try {
            tx=session.beginTransaction();
            User user = (User)session.get(User.class, id);//获取
            tx.commit();
            return user;
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        }finally{
            session.close();
        }
    }
    
    /**
     * 删除指定id的用户
     * 
     * @param id
     */

    public void delete(int id) {
        Session session = sessionFactory.openSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            // -------------------------------------
            Object user = session.get(User.class, id); // 先从数据库获取对象
            session.delete(user); // 删除的是实体对象
            // -------------------------------------
            tx.commit();
        } catch (RuntimeException e) {
            tx.rollback();
            throw e;
        } finally {
            session.close();
        }
    }
    
    /**
     * 查询所有
     * @return
     */

   public List<User> findAll(){
       Session session = sessionFactory.openSession();
       Transaction tx = null;
       try {
        tx=session.beginTransaction();
        List<User> list = session.createQuery("FROM User").list();//使用H QL查询
        tx.commit();
        return list;
    } catch (RuntimeException e) {
        tx.rollback();
        throw e;
    } finally{
        session.close();
    }
   }
   
   /**
    * 
    * @param firstResult
    *        开始获取的记录的索引
    * @param maxResult
    *        最多获取多少条数据
    * @return 总记录数+一段数据
    */

   public QueryResult<User> findAll(int firstResult,int maxResult){
       Session session = sessionFactory.openSession();
       Transaction tx = null;
       try {
        tx=session.beginTransaction();
        
        //1.查询总记录数
        Long count = (Long) session.createQuery(
                     "SELECT COUNT(*) FROM User")
                     .uniqueResult(); //执行查询
        //2. 查询一段数据
        Query query = session.createQuery("FROM User");
        query.setFirstResult(firstResult);
        query.setMaxResults(maxResult);
        List<User> list = query.list();
        tx.commit();
        return new QueryResult<User>(list, count);
    } catch (RuntimeException e) {
        tx.rollback();
        throw e;
    }finally{
        session.close();
    }
   }
}

二分页对象

package cn.itcast.b_dao;

import java.util.List;

public class QueryResult<T> {
    private List<T> list; //一段数据
    private Long count;  //总记录数
    
    public QueryResult(List<T> list, Long count) {
        super();
        this.list = list;
        this.count = count;
    }
    
    public List<T> getList() {
        return list;
    }
    public void setList(List<T> list) {
        this.list = list;
    }
    public Long getCount() {
        return count;
    }
    public void setCount(Long count) {
        this.count = count;
    }
}

三测试

package cn.itcast.b_dao;

import static org.junit.Assert.*;

import java.util.List;

import org.junit.Test;

import cn.itcast.a_helloword.User;

public class UserDaoTest {

    private UserDao userDao=new UserDao();
    
    @Test
    public void testSave() {
        //准备对象
        User user=new User();
        user.setName("张三");
        
        //保存到数据库
        userDao.save(user);
    }

    @Test
    public void testSave_25() {
        for(int i = 1; i <= 25; i++){
            User user=new User();
            user.setName("张三-"+i);
            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 testFindAll() {
        //查询
        List<User> list = userDao.findAll();
        
        //显示
        for(User user : list){
            System.out.println(user);
        }
    }

    @Test
    public void testFindAllIntInt() {
        //分页的查询
        QueryResult<User> qr= userDao.findAll(0,10000);
        
        //显示
        System.out.println("总记录的数量:"+qr.getCount());
        
        for(User user : qr.getList()){
            System.out.println(user);
        }
    }

}

© 著作权归作者所有

共有 人打赏支持
一个yuanbeth
粉丝 74
博文 84
码字总数 48851
作品 0
深圳
程序员
hibernate笔记2

hibernate加载配置文件2种方式 这种方式看源码其实就是读取固定路径固定名字的配置文件,也就是src下的hibernate.cfg.xml Configuration configuration = new Configuration();configuration...

脑丨残 ⋅ 2014/06/30 ⋅ 0

整合hibernate4到spring4mvc框架

1.总体设计思路 写一个HibernateDao的公共接口HibernateCommonDao,实现基本的增删改查HibernateCommonDaoImpl,所有的具体业务类DaoImpl都继承自HibernateCommonDaoImpl并且implements它自己...

阿宇_ ⋅ 2015/09/15 ⋅ 0

BeetlSQL,Java Dao工具 - BeetlSQL

BeetlSQL 是一个全功能 DAO 工具,同时具有 Hibernate 优点 & Mybatis 优点功能,适用于承认以 SQL 为中心,同时又需求工具能自动能生成大量常用的 SQL 的应用。 BeetlSQL介绍 派别:SQL为中心...

闲大赋 ⋅ 2015/08/26 ⋅ 15

Action、Dao、Service三层的功能划分

原文地址 Action是管理业务(Service)调度和管理跳转的。 Service是管理具体的功能的。 Action只负责管理,而Service负责实施。 DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态...

木木侠 ⋅ 2017/05/14 ⋅ 0

hibernate中拦截器与事件监听器的区别

关于hibrenate中拦截器与事件监听器的介绍和使用的文章可以参看这篇文章: Hibernate拦截器(Interceptor)与事件监听器(Listener) 关于在hibernate中使用拦截器实现增删改查日志记录的文章可参...

z_jordon ⋅ 2015/04/22 ⋅ 0

巨大的菜鸟求指导,有关学习资料。

功能比较简单。 在页面上展示一个表单,实现增删改查的功能,页面使用jquery easyui的datagird 数据库使用mysql. 自己用struct2和hibernate实现了一下,但是觉得自己的代码写的很乱。想看看别...

zzbutcher ⋅ 2014/08/19 ⋅ 0

基于Spring的JdbcTemplate和Hibernate产生的BaseDao(一)

最近在看各种持久层 发现每一个框架提供的关于JDBC的封装都有限 我就按照易于扩展、灵活、简单方便的思路写了一个关于数据库持久层的操作 BaseDao 思路是这样的: BaseDao要有如下的功能 1 ...

deepler ⋅ 2012/12/16 ⋅ 6

Java程序员从笨鸟到菜鸟之(五十六)细谈Hibernate(七)Hibernate自身一对多和多对多关系映射

欢迎阅读本专题其他博客: 细谈Hibernate(十)hibernate查询排序和组件映射 细谈Hibernate(十一)hibernate复合主键映射 细谈Hibernate(十二)hibernate查询排序组件映射 细谈Hibernate(...

长平狐 ⋅ 2012/11/12 ⋅ 0

项目启动后第一次访问慢的要死!

公司要求写一个项目管理系统,就是简单的增删改查. 使用的是Struts2+Hibernate. 实体类什么的是用Myeclipse反向自动生成的. 现在遇到一个问题,每次启动web服务器后,第一次访问,发现查询都慢的...

Jwxl ⋅ 2013/03/20 ⋅ 5

“六神”——技术提高开发效率的一个方案

这个方案并不是我在系统设计方面的最早一次尝试。但它在提高开发效率方面,是效果最为显著的一个方案。 简介 “六神”框架提供了一套简单而通用的、从Web层到数据库操作(增加单个数据、删除...

winters1224 ⋅ 2017/03/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 36分钟前 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部