hibernate是什么框架,java的三大框架属于web,还是属于什么?
hibernate是什么框架,java的三大框架属于web,还是属于什么?详细介绍
本文目录一览: hibernate工作原理及为什么要用
hibernate 简介:
hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库。
hibernate核心接口
session:负责被持久化对象CRUD操作
sessionFactory:负责初始化hibernate,创建session对象
configuration:负责配置并启动hibernate,创建SessionFactory
Transaction:负责事物相关的操作
Query和Criteria接口:负责执行各种数据库查询
hibernate工作原理:
1.通过Configuration config = new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的
读取并解析映射信息
3.通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory
4.Session session = sf.openSession();//打开Sesssion
5.Transaction tx = session.beginTransaction();//创建并启动事务Transation
6.persistent operate操作数据,持久化操作
7.tx.commit();//提交事务
8.关闭Session
9.关闭SesstionFactory
为什么要用hibernate:
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
Hibernate是如何延迟加载?get与load的区别
1. 对于Hibernate get方法,Hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查询数据库,数据 库中没有就返回null。这个相对比较简单,也没有太大的争议。主要要说明的一点就是在这个版本(bibernate3.2以上)中get方法也会查找二级缓存!
2. Hibernate load方法加载实体对象的时候,根据映射文件上类级别的lazy属性的配置(默认为true),分情况讨论:
(1)若为true,则首先在Session缓存中查找,看看该id对应的对象是否存在,不存在则使用延迟加载,返回实体的代理类对象(该代理类为实体类的子类,由CGLIB动态生成)。等到具体使用该对象(除获取OID以外)的时候,再查询二级缓存和数据库,若仍没发现符合条件的记录,则会抛出一个ObjectNotFoundException。
(2)若为false,就跟Hibernateget方法查找顺序一样,只是最终若没发现符合条件的记录,则会抛出一个ObjectNotFoundException。
这里get和load有两个重要区别:
如果未能发现符合条件的记录,Hibernate get方法返回null,而load方法会抛出一个ObjectNotFoundException。
load方法可返回没有加载实体数据的代 理类实例,而get方法永远返回有实体数据的对象。
(对于load和get方法返回类型:好多书中都说:“get方法永远只返回实体类”,实际上并不正 确,get方法如果在session缓存中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load方法使用过,或者被其他关联对象延迟加 载过,那么返回的还是原先的代理对象,而不是实体类对象,如果该代理对象还没有加载实体数据(就是id以外的其他属性数据),那么它会查询二级缓存或者数 据库来加载数据,但是返回的还是代理对象,只不过已经加载了实体数据。)
总之对于get和load的根本区别,一句话,hibernate对于 load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方 法,hibernate一定要获取到真实的数据,否则返回null。
Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)
类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、
说下Hibernate的缓存机制:
Hibernate缓存的作用:
Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据
Hibernate缓存分类:
Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存
Hibernate一级缓存又称为“Session的缓存”,它是内置的,意思就是说,只要你使用hibernate就必须使用session缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,SessionFactory不会启用这个插件。
什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 常量数据
不适合存放到第二级缓存的数据?
1经常被修改的数据
2 .绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发
3 与其他应用共享的数据。
Hibernate查找对象如何应用缓存?
当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存
删除、更新、增加数据的时候,同时更新缓存
Hibernate管理缓存实例
无论何时,我们在管理Hibernate缓存(Managing the caches)时,当你给save()、update()或saveOrUpdate()方法传递一个对象时,或使用load()、 get()、list()、iterate() 或scroll()方法获得一个对象时, 该对象都将被加入到Session的内部缓存中。
当随后flush()方法被调用时,对象的状态会和数据库取得同步。 如果你不希望此同步操作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用evict() 方法,从一级缓存中去掉这些对象及其集合。
Hibernate的查询方式
Sql、Criteria,object comptosition
Hql:
1、 属性查询
2、 参数查询、命名参数查询
3、 关联查询
4、 分页查询
5、 统计函数
如何优化Hibernate?
1.使用双向一对多关联,不使用单向一对多
2.灵活使用单向一对多关联
3.不用一对一,用多对一取代
4.配置对象缓存,不使用集合缓存
5.一对多集合使用Bag,多对多集合使用Set
6. 继承类使用显式多态
7. 表字段要少,表关联不要怕多,有二级缓存撑腰
hibernate的开发步骤:
开发步骤
1)搭建好环境
引入hibernate最小的jar包
准备Hibernate.cfg.xml启动配置文件
2)写实体类(pojo)
3)为实体类写映射文件"User.hbm.xml"
在hibernate.cfg.xml添加映射的实体
4)创建库表
5)写测试类
获得Configuration
创建SessionFactory
打开Session
开启事务
使用session操作数据
提交事务
关闭资源
hibernate工作原理及为什么要用
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打开Sesssion5.session.beginTransaction();//创建事务Transation6.persistentoperate持久化操作7.session.getTransaction().commit();//提交事务8.关闭Session9.关闭SesstionFactory为什么要用:1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作3.hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。4.hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。这是我的学习笔记,希望对你有用
原理:
1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的
读取并解析映射信息
3.通过config.buildSessionFactory();//创建SessionFactory
4.sessionFactory.openSession();//打开Sesssion
5.session.beginTransaction();//创建事务Transation
6.persistent operate持久化操作
7.session.getTransaction().commit();//提交事务
8.关闭Session
9.关闭SesstionFactory
为什么要用:
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
参见:
http://www.cnblogs.com/javaNewegg/archive/2011/08/28/2156521.html
工作原理如下:
1.读取并解析配置文件。
2.读取并解析映射信息,创建SessionFactory
3.打开Session
4.创建事物Transaction
5.持久化操作
6.提交事务
7.关闭Session
8.关闭SessionFactory
hibernate,通过对jdbc进行封装,对 java类和 关系数据库进行mapping,实现了对关系数据库的面向对象方式的操作,改变了传统的jdbc + sql操作数据的方式,从而使开发人员可以花更多精力进行对象方面的开发
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate是一种ORM框架,主要作用是简化应用的数据持久层编程,不需要程序员编写大量SQL和JDBC说代码,也可以说成是对象持久化技术。所谓持久化对象(Persistent Object)即封装了数据库表记录的对象。程序中使用的对象是短暂的状态,当不使用时java的GC机制会自动释放不用的对象。而利用hibernate便可以实现对象的持久化,将对象保存到数据库中。
Hibernate映射文件(XML Mapping):持久化对象(PO)与数据库表记录之间的映射关系
Hibernate配置文件(hibernate.properties):配置相关的数据库访问信息,如数据库驱动类、连接串、访问数据库用户名和密码等
什么是Hibernate框架以及ORM
一、什么是Hibernate框架?
1、Hibernate框架是应用在javaEE三层结构中的dao层框架。
2、在dao层里面做对数据库的增删改查操作,使用Hibernate框架实现增删改查操作。Hibernate底层就是jdbc,对jdbc的轻量级的封装,使用Hibernate不需要写复杂的jdbc代码。
3、Hibernate是开源的、轻量级的框架。轻量级的框架:Hibernate不需要依赖其他的东西就可以直接使用。
总结:Hibernate是使用ORM思想对数据库进行的增删改查操作的轻量级框架。
二、ORM(Object/Relational Mapping):对象/关系映射
是通过使用描述对象和数据库之间映射的数据,将java程序中的对象自动持久化到关系数据库中;
本质上就是将数据从一种形式转换到另外一种形式。
Hibernate框架之间的关系是什么以及怎么处理
Hibernate是一个开源Java持久化项目,一个功能强大的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命
意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
在.NET下有移植的NHibernate.
Hibernate是一个开放源代码的对象关系映射框架。
对JDBC进行了非常轻量级的对象封装,使Java程序员可以随心所欲地使用对象编程思维来操纵数据库,
Hibernate持久化对象是基于简单的Java对象(Plain Old Java Objects)以及Java对象集合。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP
的Web应用中使用,最具有革命意义的是,Hibernate可以应用EJB的J2EE架构中取代CMP,
完成数据库持久化的重任。
注:
不要将持久化层逻辑与视图表现层逻辑或者业务逻辑层混合在一起。
要避免正在JSP等视图表现层组件直接访问数据库,将数据持久代码都放在持久层中,
这样程序更具有柔韧性且可以灵活地改变而不会影响到其他层。
举一个例子来讲:
如果将Hibernate用其他ORM框架(如JDO或IBATIS)来替换,只需要修改持久层,而不需要修改其他层的代码。
Java开源--Web框架Struts
在视图表现层,采用Struts框架构建Java Web应用程序。
Web应用程序不同于传统上的网站,这些网站通常仅提供静态页面,而Web应用程序可以和数据交互,
当用户与系统交互的时候,业务逻辑可以给用户一个用户化的响应。
在Web应用程序发展初期,Web应用程序通常是基于JSP(Java Server Pages)的,
使用JSP编写代码时通常读取数据库、页面设计代码以及控制流程代码都混合在一起
(维护过于复杂,亟待优化,尤其是大型项目)。
MVC(Model-View-Controller)体系结构的出现
Model表示业务逻辑或者是数据库代码,View代表页面设计代码,而Model本质上是一个Servlet,
将客户请求转发到相应的Action类。
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)模式应用框架的开源框架。
Struts提供了什么功能:
1、管理用户的请求,做出相应的响应
2、提供一个流程控制器,委派调用业务逻辑和其他上层处理
3、处理异常
4、装配需要显示的数据模型
5、执行页面验证
下面所提及的虽然Struts会涉及,但是不应该在视图层中出现。在视图层中引入这些代码,后期维护艰难。
6、直接与数据库通信的代码
7、系统的业务逻辑以及验证代码
8、事务处理
Java开源--J2EE框架Spring
spring是一个轻量级的J2EE框架。
核心是一个轻量级容器,实现IOC模式的容器,本身是一个全方位的整合框架,在Spring框架下可实现
对多个子框架的组合。Spring的核心即IoC/DI的容器,可以为设计人员完成各个组件之间的依赖关系的注入,
使组件之间的依赖性减小,提高了组件的重用性,容器特性使组件可以轻易地加入和脱离框架。
Spring的另一个方面使支持AOP,然而AOP框架知识Spring支持的其中一种框架,所以说Spring框架是AOP框架
并不是一种恰当的描述,但是Spring对AOP的支持使人们更加关注于Spring的AOP方面的能力,也成了Spring的
一大特色。
此外,Spring提供了一个自己的MVC Web框架的解决方案,但Spring并不要求程序员一定要使用该MVC Web框架,
而是可以使用自己所熟悉的MVC Web框架与Spring结合,如Struts Webwork等,它们都可以与Spring整合而
成为适合的解决方案。
Spring还提供其他方面的整合,比如持久化方面的整合,JDBC、O/R Mapping工具、事务处理等,Spring自己也做了多方面整合的努力,因此Spring是一个全方位的框架。
最后:
架构采用多层非分布式的结构,除数据库这一层外,可以分为表现层(Presentation Layer)、业务逻辑层(Bussiness Logic Layer)和数据持久层(Persistence Layer),这3层将存在于同一个Web容器中,
作为一个整体提供J2EE服务。
定义良好的接口可以相对隔离每一层的职责,使应用更简单,并且有很好的伸缩性。数据持久层是介于
业务逻辑层和数据库层之间的桥梁,它封装了与数据库层交互的逻辑,利用ORM(对象关系映射)技术可以
完全实现面向对象的逻辑处理。
Mybatis框架,和Hibernate框架的区别是什么?
1 Hibernate : 标准的ORM(对象关系映射) 框架;
不要用写sql, sql 自动语句生成; 使用Hibernate 对sql 进行优化,修改比较困难
应用场景: 试用需求,变化固定中小型项目;ERP,ORM,OA
2 mybatis: 程序员自己编写sql, sql 修改,优化比较自由。
mybatis 是一个不完全的ORM 框架(部分), mybatis 存在
映射关系(输入,输出映射);
应用场景: 除了hibernate 的场景,主要应用需求项目较多的场景, 互联网项目; 敏捷开发。
映射关系描述
hibernate: 对数据库结构提供了较为完整的封装,hibernate 的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。
只需定义好了POJO 到数据库表的映射关系,即可通过提供的方法完成持久层操作。
不需要对SQL 的熟练掌握, 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。
mybatis:POJO SQL之间的映射关系。然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。 相对“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM实现。
数据库的无关性:
hibernate 的 具体数据只需要利用xml 进行关联; HQL 语句与数据库无关
mybatis 更接近sql ,因此对数据库的依赖较多。
Mybatis优势
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
MyBatis容易掌握,而Hibernate门槛较高。
Hibernate优势
Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳
J2EE框架(Struts&Hibernate&Spring)的理解
J2EE是一个基于多层开发的java平台;能够开发BS的应用程序;
使用J2EE开发应用程序通常分为 : 客户端 - 表现层 - 业务服务层 - 持久层 - 数据层
其中客户端层不需要程序员开发,每一个浏览器都可以作为客户端层
表现层的技术包括JSP,servlet,以及struts、JSF等框架;由于表现层是J2EE中和客户端打交道的前端层,所以struts在J2EE中的作用主要是控制客户请求的走向(请求应该由哪个业务Action执行)以及为客户提供视图。
业务服务层的技术包括EJB,spring等框架;顾名思义,这个层的功能是提供业务逻辑(整个系统的核心,也就是增删改查操作)和系统级服务(事务、异常、权限、安全、日志等),而spring的作用就是管理这些业务对象和服务对象,通过spring的IOC技术对他们实现松耦合的隔离。同时,spring虽然是业务服务层的框架,但是他的功能并不局限在这一个层,spring开发初期致力于解决传统J2EE开发的困难性而设计,从表现层到持久层,spring都有涉足;在表现层方面,提供了自己的MVC框架;但是spring并不是替代J2EE中已有的框架,spring的精华之处在于和其他框架实现无缝整合。比如在SSH中,通过spring管理struts的业务逻辑Action和Hibernate的DAO对象
持久层的技术包括JDBC,Hibernate等框架;持久层,也就是将对象进行持久化到数据库中;传统的持久化方式JDBC由于是一种面向对象设计语言,在访问关系型数据库(mysql,Oracle)上有很大的缺陷(需要手动将数据库表转化为java对象), Hibernate的出现很大程度上解决了这个问题,HIbernate是一个对象关系映射工具,通过在java对象和数据库表之间建立映射关系(一个xml 类型的mapping文件),把对数据库表的操作转化为对java对象的操作。大大减低了编程的复杂性。
Struts主要跳转 传输数据
Hibernate 与数据库连接 操作 数据
Spring 集成
struts2一般控制页面跳转,它有核心控制器,MVC模式当中充当控制层,没有servlet麻烦。 hibernate是把对象存到数据库中,是关于关系映射的中间健,目前和它一样流行ORM有 iBatis TopLink。spring是功能很多,在ssh它贯穿整个,包括对象的创建,和一些对数据库的操作的封装
SSH:
Struts(表示层)+Spring(业务层)+Hibernate(持久层)
Struts:
Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。
在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)
Hibernate:
Hibernate是一个持久层框架,它只负责与关系数据库的操作。
Spring:
Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。
我们知道,传统的Java Web应用程序是采用JSP+Servlet+Javabean来实现的,这种模式实现了最基本的MVC分层,使的程序结构分为几层,有负责前台展示的 JSP、负责流程逻辑控制的Servlet以及负责数据封装的Javabean。但是这种结构仍然存在问题:如JSP页面中需要使用符号嵌入很多的 Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等。
Struts
为了解决这些问题,出现了Struts框架,它是一个完美的MVC实现,它有一个中央控制类(一个 Servlet),针对不同的业务,我们需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面负责数据的输入和输出显示,还有一个 Form类负责传递Action和JSP中间的数据。JSP中可以使用Struts框架提供的一组标签,就像使用HTML标签一样简单,但是可以完成非常复杂的逻辑。从此JSP页面中不需要出现一行包围的Java代码了。 可是所有的运算逻辑都放在Struts的Action里将使得 Action类复用度低和逻辑混乱,所以通常人们会把整个Web应用程序分为三层,Struts负责显示层,它调用业务层完成运算逻辑,业务层再调用持久层完成数据库的读写。 使用JDBC连接来读写数据库,我们最常见的就是打开数据库连接、使用复杂的SQL语句进行读写、关闭连接,获得的数据又需要转换或封装后往外传,这是一个非常烦琐的过程。
Hibernate
这时出现了 Hibernate框架,它需要你创建一系列的持久化类,每个类的属性都可以简单的看做和一张数据库表的属性一一对应,当然也可以实现关系数据库的各种表件关联的对应。当我们需要相关操作是,不用再关注数据库表。我们不用再去一行行的查询数据库,只需要持久化类就可以完成增删改查的功能。使我们的软件开发真正面向对象,而不是面向混乱的代码。我的感受是,使用Hibernate比JDBC方式减少了80%的编程量。 现在我们有三个层了,可是每层之间的调用是怎样的呢?比如显示层的Struts需要调用一个业务类,就需要new一个业务类出来,然后使用;业务层需要调用持久层的类,也需要new一个持久层类出来用。通过这种new的方式互相调用就是软件开发中最糟糕设计的体现。简单的说,就是调用者依赖被调用者,它们之间形成了强耦合,如果我想在其他地方复用某个类,则这个类依赖的其他类也需要包含。程序就变得很混乱,每个类互相依赖互相调用,复用度极低。如果一个类做了修改,则依赖它的很多类都会受到牵连。 为此,出现Spring框架。
Spring Spring的作用就是完全解耦类之间的依赖关系,一个类如果要依赖什么,那就是一个接口。至于如何实现这个接口,这都不重要了。只要拿到一个实现了这个接口的类,就可以轻松的通过xml配置文件把实现类注射到调用接口的那个类里。所有类之间的这种依赖关系就完全通过配置文件的方式替代了。所以 Spring框架最核心的就是所谓的依赖注射和控制反转。 现在的结构是,Struts负责显示层,Hibernate负责持久层,Spring负责中间的业务层,这个结构是目前国内最流行的Java Web应用程序架构了。另外,由于Spring使用的依赖注射以及AOP(面向方面编程),所以它的这种内部模式非常优秀,以至于Spring自己也实现了一个使用依赖注射的MVC框架,叫做Spring MVC,同时为了很好的处理事物,Spring集成了Hibernate,使事物管理从Hibernate的持久层提升到了业务层,使用更加方便和强大。 Struts框架是2000年就开始起步了,到目前已经发展了5年,技术相当成熟,目前全球Java开发中Struts框架是显示层技术中当之无愧的王者。它拥有大量的用户群和很好的开发团队。这也是国内大部分Java软件公司对新进员工的基本要求。 其他 Java这个名词似乎注定和开源紧密联系在一起了,在Java界,每天都有大量的开源技术出现,由于是开放源代码的,技术中存在的问题和不足很快就会被人发现,开源软件提供者会很快的修正或扩展这些技术,因此版本更新很快,几个星期或者几天就有一个新版本出来。 当我们在技术线路中选择了Java,也就选择了你必须持续学习,经常关注最新的技术,了解它们,看是否适合你的需要,然后学习使用它们。
希望我的回答能够帮到您!~~~
java的三大框架属于web,还是属于什么?
java的三大框架属于web。
java三大框架的各自作用:
hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是Model;
struts提供的丰富标签是用于显示层View;同时struts也充当了实现Control的功能(不管是Struts1,还是Struts2),接收参数,视图分发。
Spring是用于降低层与层间耦合度的,就是所有的类都可以由spring统一创建,用时只需注入即可(IOC)
从功能上来说,hibernate为M,struts2 为V,也可以为C,spring可以为C。
但大多数项目中,hibernate为M,struts2 为V+C,spring用来帮助管理类以及实现一些业务无关功能,如日志记录等,大多数都是用struts来做C的。
spring和hibernate有什么区别?分别都是干什么的?
spring和hibernate有什么区别?分别都是干什么的? hibernate 是一个数据持久层的框架,只管 怎么去访问及操作数据库的数据. spring 是一个更加强大的框架,是为J2EE 应用程序开发提供集成的框架,体现在其简单性、可测试性和松耦合上,同时对面向切面编程也有支撑的. 再简单打个比方, hibernate 是 仓库的仓储管理人员,负责货物的仓储管理. spring 就是 管理层的核心领导,负责协调调度,以保障企业的良好运作.
以下机构分别都是干什么的?有什么区别? 不同部门的纪律检查委员会是负责处理违犯党的纪律的情况下,以调查和处理党的领导干部和监督在公安机关负责调查违反纪律警方人员,该检察院国家法律监督,主要是负责国家工作有关的犯罪,及时发现和处理与犯罪审查逮捕和审查起诉职责,廉政公署(ICAC)调查违反的法律和纪律的官员, *** 机构的各级负责接受的请愿信访局,并协调处理的投诉。
ado 和 odbc有什么区别,分别是干什么的? 界面在VC里面做,需要建立exe工程,使用ado或者odbc建立都行,这两者是连接数据库的两种不同方法,ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。
ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。 各自连接数据库和执行sql的方式有点不同,但都可以实现操作数据库。
cobol中batch和online有什么区别?都是干什么的? batch:指的是非人工操作,由计算机自动执行cobol编译好的可执行文件,类似于计划任务:到了 特定时间自动执行。执行时间一般在夜间。周期有,日次,周次,月次之分。 online:指的是人工操作。一般是操作由带有画面的程序,直接操作画面上的各个控件。进而操作数据库等等。
java web start和tomcat有什么区别?分别是干什么的? java web start 是种技术,和tomcat没有什么关系,你可以百度下 tomcat是web容器,和asp中的iis一样
bank中的clerk和cashier分别是干什么的?有什么区别? clerk银行职员,普通员工 cashier收款员(商场等)
口袋怪兽龙牙和龙鳞有什么区别都是干什么的 龙牙不是能加龙系攻击,而是提升龙系招式威力10%,你去流星瀑布,有一个龙系训练师,不断变换场景,多与他打几次,他就会出宝宝龙,他的宝宝龙身上100%有龙牙,小偷即可。另,不嫌麻烦的话,在四大天王山洞入口处池塘,用高杆钓鱼,能钓到哈克龙,5%几率携带龙牙。野生的宝宝龙只有龙鳞啊。 龙鳞原是海刺龙进化道具,386里用水之石代替了,所以没用,卖了吧。
struts2 hibernate spring 三大框架有什么区别,他们各自适用的范围是什么?各自适用的场合是什么?
hibernate 是一个持久层框架,又是一个ORM框架,通俗的来讲就是 一个对象关系映射框架。使应用程序的持久化类到数据库中的表之间的关系的映射;hibernate其实就是是对jdbc的封装,减轻了程序员使用jdbc操作数据库的繁琐工作。让程序员操作数据库关心的不再是数据库中的表而是我们的持久化对象javabean。
spring :spring实现了工厂模式的工厂类--beanFactory这是一个轻量级框架,其中在spring中包含有三个重要的技术IOC 、DI、 AOP。
IOC: 控制反转 这个IOC是一种编程思想,也是一种架构的艺术,利用这个技术可以很好的实现模块与模块之间的解耦,耦合性降低 。如使用了Spring的IOC技术,对自己想使用的对象进行实例化的时候 ,不需要你自己进行new 操作了 ,而是交给 Spring容器帮你实例化对象。
struts2:它是基于webwork的xwork的 ,是xwork2的升级版, Struts2吸取了struts1和xwork2的 两者的优点 ,Strus2是以webwork为核心。所以struts2更加优秀的,更加整洁的MVC 框架 ,采用拦截器的机制处理用户的请求 这样的设计能够与原生的servletAPI完全脱离,在struts2中有一个核心类它就是StrutsPreparedAndExecuteFilter struts2准备执行过滤器 我们要想使用Struts2 对用户的请求处理 我们必须在web.xml中进行配置这个核心过滤器。 基本上是过滤所有请求的
struts2是控制层,主要是客户端的请求到来时,收集提交来的数据,并调用业务,实现跳转,我们叫做控制跳转层。
hibernate 是数据库的持久层,帮助我们把收集来的数据增删改查到数据库中,提高很方便的数据库操作。
Spring 是一个容器,就像一个大箱子把hibernate,struts2转载的在它的肚中,进行对象的控制,方便项目的结构控制,业务扩展。以及hibernate中的事物托管到可以做到。
三者可以很好的结合层一个javaee标准的mvc结构。
Struts2业务逻辑层,hibernate数据库连接层,spring为struts2注入
说struts2是控制层是错误的,因为struts2本身就是一个标准的Web层的MVC框架,主要控制的是"用户的请求——程序的处理——程序的返回"这个流转过程。
hibernate是一个持久层的框架,他在JDBC上进行的轻量级的封装,是用户可以直接用面向对象的方式来操作关系型数据库。例如,如果你想保存一个学生信息,以前可能需要写一个insert语句,用了hibernate就只用调用它的save方法就行了。
spring是一个多元化的框架,它有类似struts的MVC。但是他最主要的功能是依赖注入和面向切面编程。所谓依赖注入就是说以前你需要一个对象的话需要new一个,这样势必造成代码写死到程序中了,这样不利于改动。依赖注入可以把你需要的对象自动生成了给你,这样用起来就很灵活了。AOO就是在程序需要进行统一处理的地方进行处理,但是又不用写死在程序中。