web02D

本文探讨了ThreadLocal在数据库连接管理中的应用及其重要性,避免因线程复用导致的连接关闭异常。同时介绍了DAO工厂模式的设计理念,通过配置文件实现不同数据访问层实现类的灵活切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DbUtil ThreadLocal

为什么要使用ThreadLocal?

为了是一个请求只产生一个连接对象threadLocal.set(conn).tomcat连接池中有多个线程对象缓存使用过的线程id 和线程对象.key value键值对的形式保存.当第二个连接到达服务器时tomcat会分配之前空闲的线程给请求对象,如果之前线程的Threadlocal中的connection对象是close的状态会报连接已关闭异常.需要清空连接对象,这样二手线程会重新创建连接对象.



DaoFactory Dao工厂设计模式


service(){

EmpDao dao=new JDBCEmpDaoImpl()

EmpDao dao=new HibernateEmpDaoImpl()

dao.xx()

UserDao dao=new UserDaoImpl()

dao.xx();

}


改进,使用配置文件的做Dao和实现类的的映射,使用反射生成dao实例类以后若需要切换不同的实现(hibernate/jdbc....ect)只需要更改配置文件的对象关系.即可.

=============java内存模型=================

栈堆方法区:

.class文件运行在虚拟机,.class跨平台而jvm虚拟机本身不是跨平台.


jvm把所管理的内存分成三部分 栈,堆,方法区.

person p=new person();

先执行右边的创建对象,jvm首先去根据import.的包名加类名去加载该类.静态方法变量此时被分配内存.再执行new 通过类class对象 把该类创建到堆当中成员变量被初始化初值.

此时栈低分配了一个p变量记录对象的内存地址,普通的值在栈当中直接赋值,对象类型,第次new时去方法去检查Persion 类中有没有被加载.静态成员在方法区只有一份...加载器从src开始加载.


jconsole查看java虚拟机内存的管理情况.









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值