Hibernate Dao的使用 Hibernate学习笔记(二)

基于Hibernate编写DAO 上一篇介绍了如何在ssh环境中配置Hibernate框架,本篇介绍如何基于Hibernate框架编写DAO 1. Hibernate框架相关接口 Hibernate体系结构如图所示,下面介绍Hibernate体系结构中常用的类 SessionFactory 配置对象被用于创造一个 SessionFactory 对象,使用提供的配置文件 阅读详情

/**
 * ------------Hibernate 官方推荐的写法,未作任何改动,需要熟记并融汇贯通---------------
 *
 * 主要是通过一个ThreadLocal实现当前线程共用一个Session
 *
 * 并不是单态的,可以自己改成单态
 */

package dao;

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

public class HibernateUtil {
    public static final SessionFactory       sessionFactory;
    // sessionFactory的作用是提供session
    static {
        try {
            sessionFactory = new Configuration().configure()
                    .buildSessionFactory();// 构造一个sessionFactory,通过读取所有的hibernate配置文件
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError(ex);
        }
    }

    // ThreadLocal 本地线程 , 指当前线程的一个本地副本
    public static final ThreadLocal<Session> session = new ThreadLocal<Session>();

    // 本方法保证当前线程中只有一个Session的实例,并且获得它
    // 可以把Session理解成数据库连接 java.sql.Connection
    public static Session currentSession() throws HibernateException {
        Session s = session.get();// 从当前线程里面的到hibernate的Session
        if (s == null) {// 如果没得到
            s = sessionFactory.openSession();// 新建一个
            session.set(s);// 并且把它放到当前线程中去
        }
        return s;
    }

    // 关闭当前线程中的那一个Session
    public static void closeSession() throws HibernateException {
        Session s = session.get();
        if (s != null) {
            s.close();
        }
        session.set(null);
    }
}

 

下面的是对用户持久类的封装,不知道我这样理解对不对?上面的是参考的官网推荐的写法。

 

package dao;

import domain.User;

public class UserDao extends HibernateDao<User>
{
 public UserDao()
 {
  super(User.class);  
 }

}

 

 

使用dao更好的对数据库的操作进行了封装。对数据库操作更面向对象。但是不管是使用哪种方法都是有利有弊,还不能更彻底的做到封装,彻底的面向对象。

 

package app;

import java.util.ArrayList;
import java.util.Iterator;
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 dao.HibernateUtil;
import dao.UserDao;
import domain.Product;
import domain.ProductType;
import domain.Role;
import domain.User;

public class Test
{

 public static SessionFactory sessionFactory;
 
 public static void main(String[] args)
 {  
  sessionFactory = HibernateUtil.sessionFactory;  
 
  getPage();
 }
 
 static void getPage()
 {
  UserDao dao = new UserDao();
  List<User> list = dao.getAllPaged(2, 2);
  for(User u :list)
  {
   System.out.println(u.getName());
  }
 }

 

 

Hibernate 通用的Dao及其实现类 BaseDao.java接口: package com.crm.dao; import java.io.Serializable; import java.util.List; import org.hibernate.criterion.DetachedCriteria; /** * 通用的DAO的接口 * @author jt * */ public interface Ba... 阅读详情

相关推荐

建立使用JPA的DAO

5.5.3  建立使用JPA的DAO 前面我们把一个实体管理器工厂的引用装配到JpaTemplate里,然后把JpaTemplate装配到DAO。但Spring的JpaDaoSupport简化这一过程,可以把实体管理器工厂Bean直接装配到DAO类。 像JdbcDaoSupport和HibernateDaoSupport对相应DAO的作用一样,JpaDaoSupport也为使用JPA的

eddle的专栏 7092

ArrayList用法详解

1.什么是ArrayListArrayList就是传说中的动态数组,就是Array的复杂版本,用它主要有以下的好处: 可以动态的增加和减少元素 灵活的设置数组大小 实现了Icollection和List接口(目前还没学习到) 我们都用过数组,知道数组的长度是静态的,也就是一旦定义好,就无法更改,那么就会有一些局限性。ArrayList恰好解决了这一问题。在我们知道有多少数据元素时候,可...

heima201907的博客 631

关于HIbernate在dao层的最佳实践。

Hi ~大家好,好久没写博客了。最近复习一些框架de

CJaver的专栏 1035

ArrayList源码及应用

ArrayList是一种List实现,它的内部用一个动态数组来存储元素,因此ArrayList能够在添加元素的时候进行动态的扩容。 数组 我们知道ArrayList查找效率高,这个都是基于数组来实现的,那么数组为什么查找效率高呢? Java的数组中存储的每个元素类型一致,每个元素占用的空间大小相同。 Java数组中存储的每个元素,内存地址是连续的。 通常首元素的内存地址作为整个数组对象的内存地址。 数组中的元素是有下标的,有下标就可以计算出被查找的元素和首元素的偏移量。 实际上数组中查找元素是可以通过计

技术不值钱 262

hibernate Dao层实现

1.继承映射People.hbm.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-map...

yin1004981045的博客 3931

FDTD远场分析实战:从monitor数据到3D远场可视化的完整流程

本文详细介绍了FDTD远场分析的完整流程,从monitor采集的近场数据出发,通过近场-远场变换(NFFFT)生成3D远场可视化结果。文章重点解析了远场转换的物理原理、关键参数设置,并提供了构建稳健数据处理流水线及高级可视化(如3D辐射方向图)的实战脚本与技巧,适用于天线设计与光学器件分析。

weixin_29063035的博客 228

hibernate+pageBean实现分页dao层功能代码

今天闲来无事,摆弄了一下分页,突然发现很多代码长时间不用就生梳了,虽然有些基础,但没有一篇整合的。这里还是简单示例,主要是以后自己翻着看不用百度找啊找找不到一篇想要的 1、PageBean实体类,一页出的内容全都有 1 package entity; 2 3 import java.util.List; 4 5 /** 6 * 定义一个分页对象 7...

aopiao5855的博客 209

Python地理空间库安装指南:从gdal到geopandas的完整流程

本文详细介绍了Python地理空间库的完整安装流程,包括gdal、rasterio和geopandas等核心库的安装与配置。通过Anaconda环境管理和conda-forge频道,帮助开发者高效解决依赖问题,确保地理空间数据处理环境的稳定运行。

weixin_29091105的博客 465

一个好用的hibernate泛型dao

以前从springside2.0上搞下来的很好用的,基本实现dao零编码只要配置xml文件就行了。 先看图: 一共4层,com.demonstration.hibernate.basedao是我加的用来进一步解耦hibernate和spring的耦合。 原来的官方解释如下: SpringSide对Hibernate做了三层封装: 第一层:HibernateGenericDao,基...

web开发 268

测试丢包_电信IPRAN承载LTE业务丢包故障处理案例

银川 景旭阳电信IPRAN承载LTE业务丢包故障处理案例一.故障现象某地市IPRAN网络承载LTE基站业务,客户反馈近期丢包严重,基站侧ping侧核心网EPC丢包达到10%左右;且基站数量在10个左右,并分布在同一地区,需要IPRAN网络协助排查;随后查看了IPRAN网络;发现这些业务所在基站的PW-BFD历史告警存在频繁的UP/DOWN告警;综上信息展开故障处理,初步判断由于BFD频繁...

weixin_29740921的博客 1912

基于LSTM语义分析的企业风险预测系统

在数字化时代,企业面临着前所未有的挑战和机遇,而风险管理作为确保企业稳定发展的关键一环,其重要性日益凸显。为了及时、准确地监测和分析企业相关的风险,并预测可能带来的风险,本文介绍了一种基于长短期记忆(LSTM)语义分析的企业风险预测系统。该系统利用深度学习技术,通过将收集到的企业数据进行预处理和分析,结合LSTM模型对文本进行深度语义分析,从而实现对潜在风险的预测和评估。系统设计方面,该系统包括数据预处理、LSTM模型构建与训练、风险预测以及可视化展示等模块。

qiufangtaowvnyyidtf的博客 1393

Hibernate的DAO实现

10.7  Hibernate的DAO实现DAO对象是模块化的数据库访问组件,DAO对象通常包括:对持久化类的基本CRUD操作(插入、查询、更新、删除)操作。Spring对Hibernate的DAO实现提供了良好的支持。主要有如下两种方式的DAO实现:q      继承HibernateDaoSupport的实现DAOq      基于Hibernate3.0实现DAO不管采用哪一种实

ZWeb-Blog 1万+

个人量化系统的策略集合与赚钱之道:全栈深度解析 + 与主流开源框架对比

前三篇把系统的"骨架"拆完了——架构、工程化、部署。本篇回答最关键的问题:一句话:别人的系统是"程序员的系统"(写代码才能加策略),daily_stock_analysis 是"股民的 YAML"(写中文就能加策略)。这个差异决定了它能在多大程度上真的帮你赚钱。如果你用过 、、,加一个策略的流程是: 问题在哪?在 daily_stock_analysis 里,“策略” = 一个文件。每个 YAML 是一个自然语言描述的交易策略,包括: 看到没? ——整个策略就是一段中文,零代码。任何会写字的人都能加新策略

shiter编写程序的艺术 158

hibernate4 DAO

参考地址:http://www.verydemo.com/demo_c146_i10010.html 基于hibernate的通用、”万能“Dao的设计(4) 基于hibernate的通用、”万能“Dao的设计(四) 万能Dao,应该说绝大多数情况下,它就能提供足够多的操作数据库的功能。@Repository public class UniversalDao extends Ba...

yz16808334330的专栏 265

深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计

大家好,我是微学AI ,今天给大家介绍一下深度学习实战87-高中数学自适应测试系统研究与应用研发,前后台页面设计。高中数学自适应测试系统旨在通过精准评估学生能力,用最少的题目发现其薄弱环节,并提供定制化的学习计划,帮助学生快速提升成绩。同时,系统结合了AI大模型实现自动判卷、生成报告,减轻教师负担,并支持个性化作业布置,使教学更加高效。学生可以清晰了解自身学习状态,教师也能获得精准的学生画像,实现差异化教学。

微学AI的博客 445

「HTML和CSS入门指南」hr 标签详解

标签是 HTML5 中用于插入水平分割线的标签,常用于在页面中添加分隔线或者段落之间的分割线。通过灵活运用 标签和属性,我们可以帮助用户更好地理解页面内容,同时也可以美化和装饰页面。在实际应用中需要注意避免过度使用 标签,以使页面看起来简洁明了。

a451319296的博客 7663

Hibernate的DAO实现方式简要总结

Hibernate的DAO实现 DAO对象是模块化的数据库访问组件,DAO对象通常包括:对持久化类的基本CRUD操作(插入、查询、更新、删除)操作。Spring对Hibernate的DAO实现提供了良好的支持。主要有如下两种方式的DAO实现:        1. 继承HibernateDaoSupport的实现DAO             2.基于Hibernate3.0实现D

横练技术 1932

FastAPI 高级特性:同异步路由函数、依赖注入与后台任务

在现代 Web 开发中,高效的性能和简洁的代码结构是至关重要的。FastAPI 作为一个现代、快速(高性能)的 Web 框架,凭借其对异步编程的原生支持和直观的依赖注入系统,迅速成为开发者的热门选择。在本文中,将深入探讨 `FastAPI` 中的几个核心概念:同异步函数的区别、`Depends` 依赖以及后台任务。

qq_43629857的博客 204

Hibernate和Spring对DAO处理的实例

引用"Spring"手册上的话说: Hibernate+Spring显然是天生的结合. 下面是我用spring处理的一个HibernateDAO实例,可以看到,代码量大大减少了. java代码:  1     2   package infoweb.dao;  3     4   import java.util.List;  5   import java.util.

鲤鱼商城 2362

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Hibernate自动生成的DAO的修改方法

Hibernate自动生成的DAO的修改方法 使用MyEclipse中用hibernate反向工程生成的DAO会发生对象无法存储到数据库的现象,原因是没有运用事务。 方法一、使用Spring的事务管理 方法二、修改DAO,添加事务处理 当然可以在调用dao对象的代码前后加事务控制,但这样破坏了dao对数据库操作的封装,让业务层中掺杂了持久层代码。所以进行以下修改: import or

youngage的专栏 3834

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JAVA hibernate DAO —— save 方法

用 MyEclipse 自带的Hibernate 反向工程生成的 DAO 文件,使用里面的 save 方法,数据不能插入数据库。   注意 hbm.xml 文件里面的主键的自增问题。   nativ

Sy的学习笔记 7042

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

hibernate-generic-dao

原文地址: http://code.google.com/p/hibernate-generic-dao/ Hibernate Generic D.A.O. Framework The motivation behind the framework We had worked on a project where we hand-coded all of our DAOs.

Java_lab的专栏 2954

详细介绍 Hibernate 泛型 DAO 及其使用方法

  编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao。查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考。 首先定义接口泛型DAO接口 GenericDaopackage com.th.huz;import java.io.Serializable;import ja

阿铮的箩筐 3万+

Hibernate泛型DAO及使用方法

编写Spring+Hibernate框架下的应用,总是离不了编写一个通用的泛型GenericHibernateDao。查阅了网上不少的GenericHibernateDao实现,归纳整理为如下实现,供后续编码参考。  首先定义接口泛型DAO接口 GenericDao package com.pplsunny; import java.io.Serializable; import java

pplsunny----舞动青春 1136
上一篇: Hibernate 集合属性List 的使用----Hibernate 学习笔记总结(一)
下一篇: 最新最全JDK 下载地址
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值