1.Struts,Hibernate,Spring综合在一起时什么状态?Struts,hibernate,Spring综合在一起基本上会这么来用(用一个图来描述):
执行步骤:
- Client端它发起一个request(请求)给我的app server(服务端)
- 这个app server会将我们的请求发给Struts(调用doFilter进行分发)
- 找到对应的action,会执行Action对应的方法,比如execute
- Action会调用service层进行业务逻辑上的处理。
- 在进行业务逻辑处理的时候,会调用DAO层,在DAO层会访问我们的实体类model,然后DAO会帮我们把实体类进行persistence到数据库
- –-返回
- DAO会将结果返回到Serivce
- Service会将结果返回给Action
- Action会把结果返回给Struts的Filter
- Struts的Filter会通过配置文件找到对应的JSP
- 视图(jsp)通过app server反馈给我们的客户端。
Spring去哪了呢?spring会贯穿在整个过程里面。Spring会帮action把service注入到action里面去,Spring会帮service把DAO注入到里面Servcie里面去,Spring还会针对service进行声明式的事物管理,这就是Spring的作用。
2.用了hibernate的结果就是当你拿到Session对象之后,以后的操作就非常简单,直接save(Student s),它内部执行了什么SQL语句跟我们没关系,全有Hibernate帮我们做了,”save(Student s)“这种写法是面向对象的,所以我们把面向对象的写法覆盖在了原来的面向关系数据库上,我们就不用再写面向关系的SQL语句了,我们只用面向对象的写法来操作数据库。
我们现在有一个Client端,然后Client new一个对象Student,new完这个对象之后,我想把它存到数据库里面,那么怎么做呢?采用Hibernate 它的写法是这样的,根本不用牵扯JDBC了,它创建好这个student之后,它(Client)想把这个student存到数据库,它就会跟hibernate打交道:①读取Hibernate.xml生成Configuration,②调用Configuration的buildSessionFactory方法创建一个SessionFactory对象,③Client端调用SessionFactory的OpenSession()方法创建一个Session对象。
3.Hibernate这个框架的原理:其实就是将我们的Object映射与relationship数据库相关的SQL语句,以及将与数据库相关的SQL语句组装成对象。
4.Hibernate自带的slf4j-api-1.5.8.jar只是定义了slf的接口,并没有slf的实现,所以还要自己下载slf4j,解压包里面的:slf4j-nop-1.5.8.jar
5.什么是O/R Mapping?
就是一大推的类库,我们调用它的时候,用面向对象的方式来调用,hibernate帮我们翻译成面向关系的方法
6.常见的O/R Mapping框架
hibernate, toplink,JDO
7.Hibernate3.0以后开始支持Annotataion.
8.想要输入@符号eclipse就自动提示:选择Preference --> java/editor/context Assist --> 修改Auto Activation triggers for java
9.理解JPA
JPA下面统领着一些具体的框架,这些具体的框架全部都实现了JPA规范;JPA就是一个标准,规范,下面的框架全部实现了这一标准(这个很像JDBC)
9.1(扩展)理解JDBC
JDBC只是规范,Oracle的驱动包(ojdbc.jar),SQL Server的驱动包,MySQL的驱动包都是其具体实现
9.2(扩展)理解SLF
Hibernate目前用到的一个日志框架SLF,SLF是一个规范(和JPA,JDBC类似)
①slf是一个日志框架,具体的日志实现你可以用各种各样的实现,你可以用slf自己的日志实现slf4j nodep,你也可以用log4j的日志实现,还可以用jdk logging API,还可以用apache commons-logging,而Hibernate3.3.2用的是slf4j
②当然我们可以在我们自己的项目里配slf自己的实现slf4j,但是很少用(不流行),所以我们可以把slf4j的接口对上log4j自己的实现,这是完全可以的。
slf4j-api-1.5.8.jar是slf的接口 对应是我们的接口slf
slf4j-nop-1.5.8.jar 对应就是slf的实现
如何把实现换成log4j的?
下面我们想把实现换成log4j的,不想用slf的(因为slf不是特别流行),我们现在实现换成log4j的。
将项目中的slf的实现(即slf4j-nop-1.5.8.jar)换成log4j-1.2.15.jar(log4j的实现);但是slf4j-api不能自动的和log4j对应起来,它们中间需要转换器,把slf的接口转换成log4j的接口,那么我们就需要到slf4j的包中引入这个转换器slf4j-log4j12-1.5.8.jar(这个jar是用于在slf4j和log4j中间做转换的jar包);从slf4j的包中还可以看出,可以将slf接口转换成与commons-logging对应的接口,即slf4j-jcl-1.5.8.sources.jar,但是这样还不行,还需要一个log4j的配置文件。
①show_sql 是hibernate.cfg.xml配置文件的配置,ddl日志跟hibernate.cfg.xml的配置文件没关系,是hibernate的类执行过程当中能够显示的信息。DDL语句在hibernate.cfg.xml中是配置不出来的,只能用日志输出。
show_sql配置是说是否需要打印日志而已。
10.Hibernate如果你想使用Annoation的话,可以参考文档
①Hibernate 自带的Hibernate-distribution-3.3.2.GA\documentation\manual
②Hibernate -annotation 自带的doc\references\zh_ch\html_single\index.html
③纯中文的Annotation帮助文档Hibernate-3.2.0_Reference_zh_cn.chm (网上下载)
相关推荐
java基本数据类型及字节大小,还有hibernate运行原理,供初学者参考
本人刚学习完,做了个整合,希望可以帮助到需要的人,虽然框架很落后,但是很适合初学者参考
通过实例你也许会明白hibernate事务,并发及缓存管理的运行原理,如果对这个感兴趣的可以看看
3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为Java Web应用运行 3.7 小结 3.8 思考题 第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制...
13.3 高速缓存基本原理 13.3.1 高速缓存策略和范围 13.3.2 Hibernate高速缓存架构 13.4 高速缓存实践 13.4.1 选择并发控制策略 13.4.2 理解高速缓存区域 13.4.3 设置本地的高速缓存提供...
Spring boot+Atomikos+JTA+Hibernate+MySQL实现分布式事务+多数据源,分别向两个不同的数据里面插入数据同时失败和成功,调用接口方式原理一样。
写了一个通用java访问数据库操作的DAO类,非常简单,非常强大,非常方便,非常好用。绝对原版,绝对原创。把hibernate彻底扔掉。(根据C#改编的,原本我是搞C#开发的)支持泛型集合,让程序运行效率更高。
Hibernate工作原理、Hibernate的核心组件、Persistent Object、Hibernate的运行过程、Hibernate缓存的作用、Hibernate缓存分类、Hibernate优点、 Hibernate缺点、spring原理 、AOP(Aspect-Oriented Programming): ...
按照顺序给出了系统的结构、功能以及问题解决方案的设计与实现,同时,针对该设计中的关键技术Hibernate 的原理技术进行分析,给出了解决方案,对开发过程中的几个重要问题进行了详细说明。 网上书店系统是通过网站...
ssh 运行流程图 struct2 spring hibernate
3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为Java Web应用运行 3.7 小结 3.8 思考题 第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制...
3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为Java Web应用运行 3.7 小结 3.8 思考题 第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制...
3.6.3 把helloapp应用作为独立应用程序运行 3.6.4 把helloapp应用作为Java Web应用运行 3.7 小结 3.8 思考题 第4章 hbm2java和hbm2ddl工具 4.1 创建对象-关系映射文件 4.1.1 定制持久化类 4.1.2 定制...
4.部署到Tomcat服务器上面,然后运行 5.在浏览器中输入http://localhost:8080/bookShopSSH6/login.jsp 随便输入用户名和密码,这时项目会自动创建表,然后打开Mysql数据库, 插入用户名和密码,然后重新登录。 6.将...
二、what(Hibernate缓存原理是怎样的?)Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存。 1.Hibernate一级缓存又称为“Session的缓存”。 Session内置不能被卸载,Session的缓存是事
检查项目并运行每个示例。 示例 1 - 添加新实体。 示例 2 - 添加一个新实体并使用session.get(..)检索它。 示例 3 - 添加新实体并将其从一级缓存中删除。 示例 4 - 更新会话中已存在具有相同标识符的实体的非 ...
1.1.2. 在Tomcat 服务器上运行示例.......................................................................................................................... 15 1.1.3. 运行测试..............................
接着介绍了MyBatis的运行原理和插件开发并配有一个完整的插件例子。为了增加实用性,作者还介绍了MyBatis-Spring项目,使得读者能够学习到如何把MyBatis整合到Spring项目中,最后作者还将讲解一些常用实例,比如Blob...