创建工具类,封装Session
1.SessionFactory 工厂类
1).创建Session
2).进行二级缓存
SessionFactory是重量级资源特点:功能非常强大,占用的内存就多
由于重量级资源占用内存,不能频繁的创建,只创建一个,就会引发线程安全问题,
重量级资源一般来讲是线程安全.运行多线程访问。
2.Session 代表了用户的操作
1.提供了一套CRUD的方法 save(Object); update(Object); delete(Object);
get(calss,pk);
2.内部封了Connection
Session:轻量级资源(每一个用户独享,消耗内存很少)
模拟一个注册
ReigstAction-->UserBiz -->UserDao
register(User u ) save(User u);
应该在同一个Session当中,在同一个线程中完成注册
对于事务的控制在Biz层进行处理
应为biz可能会处理多个Dao层的数据,事务的原子特性【要么成功要么失败】,事务的处理必须在Biz层处理
事务的特性:原子性,持久性,一致性,隔离性
Object ----> Thread对象
ThreadLocal 工具类:将一个对象存入到线程的Map当中
key: 当前ThreadLocal对象
value:存入的值/对象
1.实体类User.java.在com.jsu.hb.pojo包中
package com.jsu.hb.pojo; import java.util.Date; public class User { private Integer id;//使用封装类型 private String name; private Date birthday; private int age; 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 Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
2.数据库中提供的相对应的表
create table t_user( t_id Integer primary key, t_name varchar2(20), t_birthday date t_age Integer )
3.创建工具类HibernateUtil.java
package com.jsu.hb.util; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static SessionFactory sf; private static ThreadLocal<Session> tl= new ThreadLocal<Session>(); static{ try{ Configuration cfg = new Configuration(); cfg.configure(); sf=cfg.buildSessionFactory(); }catch(Exception e){ e.printStackTrace(); } } public static Session openSession(){ return sf.openSession(); } public static Session getCurrentSession(){ Session session = tl.get();//先从储存的线程中查找 if(session==null){ session=openSession(); tl.set(session); return session; } return session; } }
4.提供映射关系的配置文件,在com.jsu.hb.pojo包中
<?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> <!-- name:所操作对象的全路径 table:该对象所对应的表名 --> <class name="com.jsu.hb.pojo.User" table="t_user"> <!-- 主键配置 name:对象当中的主键名 User实体类当中 column:与表对应的列名 type:java当中的数据类型 --> <id name="id" column="t_id" type="java.lang.Integer"> <!-- 定义主键生成器 --> <generator class="increment"></generator> </id> <!-- 普通属性的配置,非主键属性的配置 --> <property name="name" column="t_name" type="java.lang.String"></property> <property name="birthday" column="t_birthday" type="java.util.Date"></property> <property name="age" column="t_age" type="java.lang.Integer"></property> </class> </hibernate-mapping>
5.在com.jsu.hb.dao包中,创建UserDao
package com.jsu.hb.dao; import org.hibernate.Session; import com.jsu.hb.pojo.User; import com.jsu.hb.util.HibernateUtil; public interface UserDao { public void save(User u); }
6.在com.jsu.hb.dao.impl包中,创建dao的实现类UserDaoImpl
package com.jsu.hb.dao.impl; import org.hibernate.Session; import com.jsu.hb.dao.UserDao; import com.jsu.hb.pojo.User; import com.jsu.hb.util.HibernateUtil; public class UserDaoImpl implements UserDao{ public void save(User u) { Session session = HibernateUtil.getCurrentSession(); session.save(u); } }
7.在biz层com.jsu.hb.biz包中创建UserBiz
package com.jsu.hb.biz; import com.jsu.hb.pojo.User; public interface UserBiz { public void register(User u); }
8.在com.jsu.hb.biz.impl包中创建biz的实现类UserBizImpl
package com.jsu.hb.biz.impl; import org.hibernate.Session; import org.hibernate.Transaction; import com.jsu.hb.biz.UserBiz; import com.jsu.hb.dao.UserDao; import com.jsu.hb.dao.impl.UserDaoImpl; import com.jsu.hb.pojo.User; import com.jsu.hb.util.HibernateUtil; public class UserBizImpl implements UserBiz { private UserDao userDao = new UserDaoImpl(); public void register(User u) { //在biz层处理事务 Session session = HibernateUtil.getCurrentSession(); Transaction tx = session.getTransaction(); tx.begin(); userDao.save(u); tx.commit(); } }
9.在com.jsu.hb.action包中,提供RegisterAction
package com.jsu.hb.action; import java.util.Date; import com.jsu.hb.biz.UserBiz; import com.jsu.hb.biz.impl.UserBizImpl; import com.jsu.hb.pojo.User; public class RegisterAction { public static void main(String[] args) { //1.获得数据 User u = new User(); u.setName("leon"); u.setAge(23); u.setBirthday(new Date()); //2.调用业务层处理数据 UserBiz userBiz = new UserBizImpl(); userBiz.register(u); //3.提示结果 System.out.println("********注册成功********"); } }
发表评论
-
Hibernateday06 QBC(Query by Criteria)
2012-07-24 16:59 821QBC (Query by Criteria)由hiberna ... -
Hibernateday06 SQLQuery 和NameQuery
2012-07-24 16:58 1209SqlQuery:在hibernate中使用sql Q ... -
Hibernateday06 HQL(Hibernate Query Language)
2012-07-21 22:18 1169HQL(hibernate query language) ... -
Hibernateday06学习笔记
2012-07-21 21:58 937HQL(hibernate query language) ... -
Hibernateday05继承关系union-subclass映射策略
2012-07-21 21:43 978union-subclass映射策略 特点:父表 ... -
Hibernateday05继承关系joined-subclass映射策略
2012-07-21 00:07 8042.joined-subclass映射策略 特点:父 ... -
Hibernateday05继承关系subclass映射策略
2012-07-21 00:00 7322.继承关系 O Product //产品 ... -
Hibernateday05由一个主键类,将对象当中的联合作为主键的属性描述成一个对象【主键类的复合主键】
2012-07-20 23:53 8372.由一个主键类,将对象当中的联合作为主键的属性描述成一个对象 ... -
Hibernateday05对象当中的几个属性组合作为表的主键【实体类属性的复合主键】
2012-07-20 23:47 833复合主键 注意:1.对象必须实现序列化接口 1. ... -
Hibernateday05主键生成器(hilo)
2012-07-20 23:36 924主键生成器 generator class="xxx ... -
Hibernateday05学习笔记
2012-07-20 23:24 7751.一对多自身相关 员工找经理 关系属性 Emp ... -
Hibernateday04多对多关系
2012-07-19 23:19 676多对多 O Student C ... -
Hibernateday04一对多的自身相关(双向关系)
2012-07-19 01:04 700自身相关的双向关系 class Emp{ Inte ... -
Hibernateday04一对多的自身相关(从经理找员工)
2012-07-19 00:21 701从经理找员工{1:*} class Emp{ Integ ... -
Hibernateday04一对多的自身相关(从员工找经理)
2012-07-18 23:45 750对多的自身相关 以Emp表为例:一个雇员会有多个下属, ... -
Hibernateday04学习笔记
2012-07-18 23:19 631一对多 O Dept ... -
Hibernateday03一对多双向操作
2012-07-17 23:44 6271.建表 create table g_dept( ... -
Hibernateday03一对多单向操作
2012-07-17 22:37 680一对多 1:* Employee ... -
Hibernateday03学习笔记
2012-07-17 22:25 5591.Hibernate关联关系 一对一的关联关系 1 ... -
Hibernateday02表的唯一外键
2012-07-24 16:57 822一对一:唯一外键:为外键加上唯一约束 公司 Com ...
相关推荐
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
通过我们最新收集的数据集,释放阿联酋充满活力的汽车市场的潜力,该数据集于2024年4月12日更新。该主要数据集来源于dubizzle.com,提供了阿拉伯联合酋长国当前汽车销售的全面快照,为汽车市场趋势和消费者偏好提供了宝贵的见解。
基于OpenCV的系统
美国大学生数学建模竞赛(MCM/ICM),简称“美赛”,是一项由美国数学及其应用联合会(COMAP)主办的国际性数学建模竞赛。该竞赛自1985年创办以来,已经成为全球范围内极具影响力的数学建模竞赛之一,旨在鼓励大学生团队应用数学知识解决实际问题,提升学生的数学建模能力、科研能力以及团队合作精神。 美赛作为一项国际性的学术竞赛,对参赛学生的数学、英语、论文写作和科研能力有很高的要求。竞赛通常要求三人一组,在四天内完成从建立数学模型、求解、验证到撰写论文的全过程。竞赛题目覆盖经济、管理、环境、资源、生态、医学、安全等多个领域。
Blackmagic SmartView SmartScope SmartView Duo SmartScope Duo 4K SmartView 4K 五月 2021 安装和操作手册
Unity是一个流行的跨平台游戏开发引擎,它允许开发者使用C#等语言创建2D和3D游戏。以下是一个Unity开发的基本入门教程: 1. 安装Unity 首先,你需要从Unity的官方网站下载并安装Unity Hub和Unity编辑器。Unity Hub是一个用于管理Unity版本和项目的工具。 2. 创建新项目 打开Unity Hub,点击“New”来创建一个新项目。选择你需要的Unity版本、模板(例如2D或3D)和其他设置。 3. 熟悉Unity界面 Unity的界面主要由以下几个部分组成: Hierarchy:显示场景中的所有游戏对象。 Project:显示项目的所有资源,如场景、模型、材质、脚本等。 Inspector:显示当前选中游戏对象的详细信息和属性。 Scene:显示当前场景的3D视图,你可以在这里编辑游戏对象。 Game:显示游戏运行时的视图。
根据各种因素预测一个地区发生洪水的概率。
python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包python 3.9.19源码编译包
总结出了信息技术课程常考的100道填空题,答案在花括号内。制卷时只需要将花括号及其中的内容替换成圆括号即可。
数据结构实验代码
一篇基础的Scratch语言教程 Scratch 是一种面向青少年的图形化编程语言,由麻省理工学院(MIT)的终身幼儿园团队开发。它通过拖放代码块的方式,使得编程教育变得更加直观和有趣。以下是一篇基础的Scratch语言教程,适合初学者入门。
第五次作业函数第一题--
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
本项目聚焦于基于扩散概率模型在无监督光学相干断层扫描(OCT)去噪中的应用。OCT是一种高分辨率的医学影像技术,常用于视网膜、心血管等疾病的诊断。 传统的OCT去噪方法往往需要依赖于带有清晰图像的监督学习,而本项目则探索在无监督环境下,利用扩散概率模型对OCT图像进行去噪。该方法无需清晰的图像作为监督,能够有效减少对大量标注数据的依赖。 在数据集方面,我们使用了公开的OCT影像数据集,如OCT2017等,并进行了预处理,包括图像裁剪、大小调整和归一化等。在环境搭建方面,我们使用Python编程语言,基于TensorFlow和PyTorch深度学习框架进行开发。为了提高计算效率,我们还使用了GPU加速计算。此外,我们还采用了Docker容器技术,确保实验结果的可重复性。 项目完成后,将实现对OCT图像的无监督去噪,提高医学影像的清晰度和可用性,为相关疾病的诊断和治疗提供有力支持。同时,项目成果也可应用于其他无监督去噪任务。
福禄克 1550B 兆欧表 用户手册
本课程旨在深入探讨二次元角色设计理念,引导学员掌握角色塑造技巧与创作方法。通过案例分析与实践训练,学员将学习角色设定、情感表达等关键要素,提升角色创作能力,激发创意潜能,打造独具魅力的二次元角色形象。 课程大小:6.4G
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
BRD母婴需求文档(产品需求文档及原型图都市孕妈项目).docx
知乎答题王小程序2.1.6开源素材教程.zip
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。