1 Hibernate
的核心接口之一
SessionFactory
接口:SessionFactroy
接口负责初始化 Hibernate
。它充当数据存储源的代理,并负责创建Session
对象。这里用到了工厂模式。需要注意的是SessionFactory
并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory
就够,当需要操作多个数据库时,可以为每个数据库指定一个
SessionFactory
。
2
管理
SessionFactory
SessionFactory
:单个数据库映射关系编译后的内存镜像。大部分情况下,一个J2EE
应用对应一个数据库。Spring
通过ApplicationContext
管理SessionFactory
,无须采用单独Hiberate
应用必需的hibernate.cfg.xml
文件。
SessionFactory
与数据库的连接,都由Spring
的配置管理。实际的J2EE
应用,通常使用数据源,数据源会采用依赖注入的方式,传给Hibernate
的SessionFactory
。具体配置如下所示:
<?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>
<!--
定义数据源
,
该
bean
的
ID
为
dataSource-->
<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>
<!--
定义
Hibernate
的
SessionFactory-->
<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>
<!--
定义
Hibernate
的
SessionFactory
的属性
-->
<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>
SessionFactory
由ApplicationContext
管理,会随着应用启动时候自动加载。SessionFactory
可以被处于ApplicaionContext
管理的任意一个bean
引用,比如DAO
。Hibernate
的数据库访问需要在Session
管理下,而SessionFactory
是Session
的工厂。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>
分享到:
相关推荐
HibernateSessionFactory.java
hibernate中的SessionFactoryhibernate中的SessionFactoryhibernate中的SessionFactory
一个实例小工程,讲解的是将hibernate的sessionFactory交给spring管理的配置方法
Session s= HibernateSessionFactory.getSession(); 就是Hibernate的工具java类
针对sessionFactory没有出现的可能原因;
(S+S+H)(private_SessionFactory_属性_dao类)_方式_SSH_整合--总结
博文链接:https://shaqiang32.iteye.com/blog/201918
NULL 博文链接:https://chaoyi.iteye.com/blog/2148991
Hibernate中的sessionFactory
用于获得Session会话及关闭Session会话
NULL 博文链接:https://zgdkik.iteye.com/blog/1835667
NULL 博文链接:https://jie2workjava.iteye.com/blog/901847
spring管理sessionFactory,将sessionFactory注入基础类,将基础类设置为单例模式,下载后直接部署使用,根据实体类自行建表
NULL 博文链接:https://tedtian.iteye.com/blog/1988917
Hibernate中涉及到的增加,删除,查询,修改,操作.