SessionFactory

1 Hibernate 的核心接口之一

SessionFactory 接口:SessionFactroy 接口负责初始化 Hibernate 。它充当数据存储源的代理,并负责创建Session 对象。这里用到了工厂模式。需要注意的是SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory

 

 

管理 SessionFactory

SessionFactory :单个数据库映射关系编译后的内存镜像。大部分情况下,一个J2EE 应用对应一个数据库。Spring 通过ApplicationContext 管理SessionFactory ,无须采用单独Hiberate 应用必需的hibernate.cfg.xml 文件。

SessionFactory 与数据库的连接,都由Spring 的配置管理。实际的J2EE 应用,通常使用数据源,数据源会采用依赖注入的方式,传给HibernateSessionFactory 。具体配置如下所示:

<?xml version="1.0" encoding="gb2312"?>

<!--  Spring 配置文件的 DTD 定义 -->

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

    "http://www.springframework.org/dtd/spring-beans.dtd">

<!--  Spring 配置文件的根元素是 beans-->

<beans>

         <!-- 定义数据源 , beanIDdataSource-->

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource>

                   <!--  指定数据库驱动 -->

<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>

                   <!--  指定连接数据库的 URL-->                 

           <property name="url"><value>jdbc:mysql://wonder:3306/j2ee</value></property>

                   <!--  root 为数据库的用户名 -->

           <property name="username"><value>root</value></property>

                   <!--  pass 为数据库密码 -->

           <property name="password"><value>pass</value></property>

    </bean>

         <!-- 定义 HibernateSessionFactory-->

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

           <!--  依赖注入数据源,注入正是上文定义的 dataSource>

           <property name="dataSource"><ref local="dataSource"/></property>

                   <!--  mappingResouces 属性用来列出全部映射文件 >

           <property name="mappingResources">

                <list>

                     <!-- 以下用来列出所有的 PO 映射文件 -->

                                     <value>lee/MyTest.hbm.xml</value>

                </list>

           </property>

          <!-- 定义 HibernateSessionFactory 的属性 -->

           <property name="hibernateProperties">

                    <props>

                                     <!--  指定 Hibernate 的连接方言 -->

                                     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

<!--  不同数据库连接,启动时选择 create,update,create-drop-->

                         <prop key="hibernate.hbm2ddl.auto">update</prop>

                    </props>

        </property>

    </bean>

</beans>

SessionFactoryApplicationContext 管理,会随着应用启动时候自动加载。SessionFactory 可以被处于ApplicaionContext 管理的任意一个bean 引用,比如DAOHibernate 的数据库访问需要在Session 管理下,而SessionFactorySession 的工厂。Spring 采用依赖注入为DAO 对象注入SessionFactory 的引用。

Spring 更提供Hibernate 的简化访问方式,Spring 采用模板设计模式,提供Hibernate 访问与其他持久层访问的一致性。如果需要使用容器管理的数据源,则无须提供数据驱动等信息,只需要提供数据源的JNDI 即可。对上文的SessionFactory 无须任何修改,只需将dataSource 的配置替换成JNDI 数据源,将原有的dataSource Bean 替换成如下所示:

<!--  此处配置 JNDI 数据源 -->

<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">

         <property name="jndiName">

                   <!--  指定数据源的 JNDI-->

                   <value>java:comp/env/jdbc/myds</value>

         </property>

</bean>

 

基于Python的医学知识图谱问答系统源码+说明文档(毕业设计),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业设计)基于Python的医学知识图谱问答系统实现源码+说明文档(毕业
内容概要:本文以程序"Hello.c"为研究对象,系统剖析了C语言程序在Linux系统中的完整生命周期。通过GCC工具链对预处理、编译、汇编、链接等编译流程进行实证分析,揭示了可执行文件从源代码到进程的P2P(Program to Process)转化过程。借助readelf、objdump等工具深入解析ELF文件格式,探讨了进程管理中的fork-exec机制、虚拟内存的地址转换体系(包括段式管理、四级页表与TLB),以及动态链接库的加载原理。通过异常信号处理实验,验证了Linux系统的进程调度策略与存储管理机制。本案例研究将计算机系统核心概念具象化,构建了从高级语言到机器指令、从静态文件到动态进程的知识闭环,为深入理解计算机系统工作原理提供了实践范本。 适合人群:计算机专业学生、对计算机系统原理感兴趣的编程爱好者以及从事嵌入式开发、系统编程等相关领域的工程师。 使用场景及目标:①帮助读者理解编译过程的各个阶段及其工具链的使用;②通过具体实例讲解ELF文件格式及其解析;③深入探讨进程管理机制,包括fork-exec机制、虚拟内存管理、动态链接等;④通过异常信号处理实验,验证Linux系统的进程调度策略与存储管理机制。 其他说明:本文不仅详细描述了程序从源代码到可执行文件的转换过程,还通过实验验证了计算机系统核心概念的应用,为读者提供了理论与实践相结合的学习路径。建议读者结合实际操作,通过搭建实验环境,加深对计算机系统工作原理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值