Hibernate Interview Questions

合集下载

struts+spring+hibernate面试题知识讲解

struts+spring+hibernate面试题知识讲解

struts+spring+hibernate面试题集1 Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因不是声明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在spring 中用scope="prototype"来管理2.MVC,分析一下struts是如何实现MVC的m:JavaBean 或结合 EJB 组件或者pojo构成c:Action 来实现v:一组 JSP 文件及其标签构成。

3.struts中的几个关键对象的作用(说说几个关键对象的作用)Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态form,ActonMapping:配置文件中action节点的信息......4.说说AOP和IOC的概念以及在spring中是如何应用的AOP:面向方面编程,ioc:依赖注入;声明式事务和编程式事务积极一些通用部分5.Hibernate有哪几种查询数据的方式hql查询,sql查询,条件查询6.load()和get()的区别hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。

由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在 load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理(load时候之查询一级缓存,不存在则创建代理)。

get() 现在一级缓存找,没有就去二级缓存找,没有就去数据库找,没有就返回null ;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

#Struts、Hibernate、Spring框架面试题

#Struts、Hibernate、Spring框架面试题

Hibernate工作原理及为什么要用?原理:1.读取并分析配置文件2.读取并分析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。

他很大程度的简化DAO层的编码工作3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4. hibernate的性能非常好,因为它是个轻量级框架。

映射的灵活性很出色。

它支持各种关系数据库,从一对一到多对多的各种复杂关系。

2. Hibernate是如何延迟加载?1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)2. Hibernate3 提供了属性的延迟加载功能当Hibernate在查询数据的时候,数据并没有存在和内存中,当程序真正对数据的操作时,对象才存在和内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类和类之间的关系主要体现在表和表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表和类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、4.说下Hibernate的缓存机制1. 内部缓存存在Hibernate中又叫一级缓存,属于使用事物级缓存2. 二级缓存:a) 使用及缓存b) 分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据c) 第三方缓存的实现5. Hibernate的查询方式Sql、Criteria,object comptositionHql:1、属性查询2、参数查询、命名参数查询3、关联查询4、分页查询5、统计函数6.如何优化Hibernate?1.使用双向一对多关联,不使用单向一对多2.灵活使用单向一对多关联3.不用一对一,用多对一取代4.配置对象缓存,不使用集合缓存5.一对多集合使用Bag,多对多集合使用Set6. 继承类使用显式多态7. 表字段要少,表关联不要怕多,有二级缓存撑腰7. Struts工作机制?为什么要使用Struts?工作机制:Struts的工作流程:在web使用启动时就会加载初始化ActionServlet,ActionServlet从struts-config.xml文件中读取配置信息,把它们存放到各种配置对象当ActionServlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm 对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;-(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;-(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;-(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBean技术的出现给我们构建强大的企业使用系统提供了可能。

hibernate面试题汇总

hibernate面试题汇总

hibernate面试题汇总Native主键生成方式会根据不同的底层数据库自动选择Identity、Sequence、Hilo主键生成方式特点:根据不同的底层数据库采用不同的主键生成方式。

由于Hibernate会根据底层数据库采用不同的映射方式,因此便于程序移植,项目中如果用到多个数据库时,可以使用这种方式。

Identity根据底层数据库,来支持自动增长,不同的数据库用不同的主键增长方式。

特点:与底层数据库有关,要求数据库支持Identity,如MySQl中是auto_increment,SQL Server 中是Identity,支持的数据库有MySql、SQL Server、DB2、Sybase和HypersonicSQL。

Identity无需Hibernate和用户的干涉,使用较为方便,但不便于在不同的数据库之间移植程序。

SessionFactory是一个大型对象,而且线程安全。

在一个程序中只需要一个数据库方言:多种数据库拥有不同的语言语法,通过设置dialect指定所用的数据库,并生成对应语法和语言的sql 语句。

暂态:数据库中没数据。

跟session不相关。

没存过。

游离态:在数据库中有记录,但是在session中没有。

需要手工同步。

持久态:数据库中有记录,session中也有这记录。

自动更新load 在加载的时候会根据加载策略来加载东西,加载策略默认为延迟加载,即只加载id.,如果需要用其它数据,必须在session关闭之前,去加载某一个属性。

lazy="true" or "false" 如果加载策略是立即加载,那么它在加载时会把数据信息全部加载,这个时候即使,关闭session,因为数据已经全部加载了,也能取得数据get 会直接采用立即加载策略加载数据,不管你配置的是延迟加载还是立即加载关于立即加载和延迟加载不仅只对自己这张表,将来表与表之间有关系时,一样会起作用。

oracle_jdbc_hibernate面试题

oracle_jdbc_hibernate面试题

oracle_jdbc_hibernate面试题一.选择题(1分,共20分)1.为了考虑数据的安全性,要求每个教师只能存取自己讲授的课程的学生成绩,应该创建________a).视图b).索引c).游标d).表2.关于类型定义Number(9,2)说法正确的有____________a) 整数部分9位,小数部分2位,共11位b) 整数部分7位,小数部分2位,共9位c) 整数部分6位,小数点一位,小数部分2位,共9位d) 以上说法均不正确3.获取当前系统时间的查询语句是_________________a)Sysdateb)Select sysdatec)Select sysdate from dual;d)以上都可以4.在数据库中可以创建和删除表、视图、索引,可以修改表。

这是因为数据库管理系统提供了_____________a)数据定义功能 b)数据操纵功能c)数据维护功能 d)数据控制功能5.下面所列条目中,哪一条不是标准的SQL语句?_______________a)ALTER TABLE b)ALTER VIEWc)CREATE TABLE d)CREATE VIEW6.数据库的并发操作可能带来的问题包括__________________a).非法用户的使用 b)丢失更新c).数据独立性会提高 d).增加数据冗余度7.使用sql查询时,使用where子句指出的是_______________________a)查询目标b) 查询条件c)查询视图d)查询结果8.在Oracle中,有一个教师表teacher的结构如下:ID NUMBER(5)NAME VARCHAR2(25)EMAIL VARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名_____________a).SELECT name FROM teacher WHERE email = NULL;b).SELECT name FROM teacher WHERE email <> NULL;c).SELECT name FROM teacher WHERE email IS NULL;d).SELECT name FROM teacher WHERE email IS NOT NULL;9.在Oracle中,下面哪条语句当COMM字段为空时显示0,不为空时显示COMM的值___________a)SELECT ename, NVL(comm, 0) FROM emp;b)SELECT ename, NULL(comm, 0) FROM emp;c)SELECT ename, NULLIF(comm, 0) FROM emp;d)SELECT ename, DECODE(comm, NULL, 0) FROM emp;10.在Oracle中,有一个名为seq的序列对象,以下语句能返回序列值但不会引起序列值增加的是____________a). select seq.ROWNUM from dual;b). select seq.ROWID from dual;c). select seq.CURRVAL from dual;d). select seq.NEXTVAL from dual;11.有表一的查询结果如下,该表为学生成绩表:select id,grade from student_gradeID GRADE-------- -----------1 502 403 704 805 306 90表二为补考成绩表select id,grade from student_makeupID GRADE-------- -----------1 602 805 60现在通过如下语句把补考成绩更新到成绩表中,并提交:update student_grade s set s.grade =(select t.grade from student_makeup twhere s.id=t.id);commit;请问之后查询:select GRADE from student_grade where id = 3;结果为_______________A.0B.70C.NullD.以上都不对12.在Oracle中,可用于提取日期时间类型特定部分(如年、月、日、时、分、秒)的函数有_____________a).DATEPART b).TO_CHAR c).TRUNC d). TIMPSTAMPAdfs13.元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值___________A、noneB、saveC、deleteD、save-update14.以下程序的打印结果是什么___________tx = session.beginTransaction();Customer c1=(Customer)session.load(Customer.class,new Long(1));Customer c2=(Customer)session.load(Customer.class,new Long(1));System.out.println(c1==c2);/doc/4913283610.html,mit();session.close();a)运行出错,抛出异常b)打印false c)打印true d).编译报错15.以下程序代码对Customer的name属性修改了两次:tx = session.beginTransaction();Customer customer=(Customer)session.load(Customer.class, new Long(1));customer.setName("Jack");customer.setName("Mike");/doc/4913283610.html,mit();执行以上程序,Hibernate需要向数据库提交几条update语句_______________a)、0 b)、 1 c)、 2 d)、 316.假设对Customer类的orders集合采用延迟检索策略,编译或运行以下程序,会出现什么情况?________________Session session=sessionFactory.openSession();tx = session.beginTransaction();Customercustomer=(Customer)session.get(Customer.class,new Long(1));/doc/4913283610.html,mit();session.close();Iterator orderIterator=customer.getOrders().iterator();a 编译出错b 编译通过,正常运行,不显示任何信息c 编译通过,正常运行,并显示出结果d 编译通过,但运行时抛出异常17.阅读下面代码:1)Student s = new Student();2)s.setAge(20);3)Session ses = factory.openSession();4)Transaction tx = ses.beginTransaction();5)ses.save(s);6)s.setAge(30);7)ses.update(s);8)s.setAge(40);9)ses.update(s);10)/doc/4913283610.html,mit();11)ses.close();执行到哪一句发出sql语句_______________a) 2 b) 3 c)4 d)1018.在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是___a) 配置客户和订单关联的cascade属性为save-updateb) 配置客户和订单关联的cascade属性为allc) 设置多对一关联的lazy属性为trued) 设置多对一关联的lazy属性为false//lazy是延迟加载19.下列关于PreparedStatement对象的说法错误的是___________a)PreparedStatement对象继承了Statement对象b)PreparedStatement可以有效的防止sql注入c)PreparedStatement不能用于批量更新操作d)PreparedStatement可以存储预编译的Sql,从而提升执行效率20.在Hibernate关系映射配置中,inverse属性的含义是______。

三大框架面试题

三大框架面试题

三大框架面试题hibernate工作原理及为什么要用?原理:1.读取并解析配置文件2.加载并解析映射信息,建立sessionfactory3.关上sesssion4.建立事务transation5.长久化操作方式6.递交事务7.关闭session8.停用sesstionfactory为什么要用:1.对jdbc出访数据库的代码搞了PCB,大大简化了数据出访层繁杂的重复性代码。

2.hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现。

他很大程度的简化dao层的编码工作3.hibernate采用java散射机制,而不是字节码进一步增强程序去同时实现透明性。

4.hibernate的性能非常好,因为它是个轻量级框架。

映射的灵活性很出色。

它支持各种关系数据库,从一对一到多对多的各种复杂关系。

2.hibernate就是如何延后读取?1.hibernate2延迟加载实现:a)实体对象b)集合(collection)2.hibernate3提供更多了属性的延后读取功能当hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

3.hibernate中怎样同时实现类之间的关系?(例如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、4.说道下hibernate的内存机制1.内部缓存存在hibernate中又叫一级缓存,属于应用事物级缓存2.二级缓存:a)应用领域及内存b)分布式内存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非关键数据c)第三方缓存的实现2、参数查阅、命名参数查阅3、关联查阅4、分页查阅5、统计数据函数6.如何优化hibernate?1.采用双向一对多关联,不采用单向一对多2.有效率采用单向一对多关联3.不必一对一,用多对一替代4.配置对象缓存,不使用集合缓存5.一对多子集采用bag,多对多子集采用set6.承继类采用隐式多态7.表字段要少,表关联不要怕多,有二级缓存撑腰7.struts工作机制?为什么必须采用struts?工作机制:struts的工作流程:在web应用领域启动时就可以读取初始化actionservlet,actionservlet从struts-config.xml文件中加载布局信息,把它们放置至各种布局对象当actionservlet接收到一个客户请求时,将执行如下流程.-(1)检索和用户命令相匹配的actionmapping实例,如果不存有,就回到命令路径违宪信息;-(2)如果actionform实例不存有,就建立一个actionform对象,把客户递交的表单数据留存至actionform对象中;-(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用actionform的validate()方法;-(4)如果actionform的validate()方法回到null或回到一个不涵盖actionmessage 的actuiberrors对象,就则表示表单检验顺利;-(5)actionservlet根据actionmapping所包含的映射信息决定将请求转发给哪个action,如果相应的action实例不存在,就先创建这个实例,然后调用action的execute()方法;-(6)action的execute()方法回到一个actionforward对象,actionservlet在把客户命令发送到actionforward对象指向的jsp组件;-(7)actionforward对象指向jsp组件生成动态网页,返回给客户;为什么必须用:jsp、servlet、javabean技术的出现给我们构建强大的企业应用系统提供了可能。

StrutsHibernateSpring经典面试题收藏

StrutsHibernateSpring经典面试题收藏

Struts,Hibernate,Spring经典面试题收藏关键字: struts, hibernate, spring先简单的提一下,要开发出好的,高质量的j2ee系统,评价系统的高低水平,解耦性至关重要!而在开发中主要分成三个层次,表现层,服务层,持久层。

从这三层次去解藕。

spring的作用就是把服务从表现层中,抽取出來,hibernate把持久层抽取出來。

剩下的表现层交给struts控制。

但是面对那么多的框架,为什么在持久层中我们选择hibernate ,在服务层我们用spring,下面都有说。

Hibernate工作原理?原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Sesssion4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭SesstionFactory为什么要用:1.对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2.Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。

他很大程度的简化DAO层的编码工作。

3.hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4.hibernate的性能非常好,因为它是个轻量级框架。

映射的灵活性很出色。

它支持各种关系数据库,从一对一到多对多的各种复杂关系。

Hibernate是如何延迟加载?1.Hibernate2延迟加载实现:a)实体对象b)集合(Collection)。

2.Hibernate3 提供了属性的延迟加载功能。

当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都是对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、 one-to-one。

黑马程序员java面试题之谈谈你对hibernate的理解

1. 面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程,不管程序运行的过程和操作怎么样,本质上都是要得到一个结果,程序上一个时刻和下一个时刻的运行结果的差异就表现在内存中的对象状态发生了变化。

2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。

从Java程序的运行功能上来讲,保存对象状态的功能相比系统运行的其他功能来说,应该是一个很不起眼的附属功能,java采用jdbc来实现这个功能,这个不起眼的功能却要编写大量的代码,而做的事情仅仅是保存对象和恢复对象,并且那些大量的jdbc代码并没有什么技术含量,基本上是采用一套例行公事的标准代码模板来编写,是一种苦活和重复性的工作。

3.通过数据库保存java程序运行时产生的对象和恢复对象,其实就是实现了java对象与关系数据库记录的映射关系,称为ORM(即Object Relation Mapping),人们可以通过封装JDBC代码来实现了这种功能,封装出来的产品称之为ORM框架,Hibernate就是其中的一种流行ORM框架。

使用Hibernate框架,不用写JDBC代码,仅仅是调用一个save方法,就可以将对象保存到关系数据库中,仅仅是调用一个get方法,就可以从数据库中加载出一个对象。

4.使用Hibernate的基本流程是:配置Configuration对象、产生SessionFactory、创建session对象,启动事务,完成CRUD操作,提交事务,关闭session。

5.使用Hibernate时,先要配置hibernate.cfg.xml文件,其中配置数据库连接信息和方言等,还要为每个实体配置相应的hbm.xml文件,hibernate.cfg.xml文件中需要登记每个hbm.xml文件。

struts和spring和hibernate面试必备题

Struts/spring/hibernate面试题集1 Action是不是线程安全的?如果不是有什么方式可以保证Action的线程安全?如果是,说明原因不是声明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在spring 中用scope="prototype"来管理2.MVC,分析一下struts是如何实现MVC的m:JavaBean 或结合 EJB 组件或者pojo构成c:Action 来实现v:一组 JSP 文件及其标签构成。

3.struts中的几个关键对象的作用(说说几个关键对象的作用)Action:控制器类,ActionForm:表单对象,DynaValidatorForm:动态form,ActonMapping:配置文件中action节点的信息......4.说说AOP和IOC的概念以及在spring中是如何应用的AOP:面向方面编程,ioc:依赖注入;声明式事务和编程式事务积极一些通用部分5.Hibernate有哪几种查询数据的方式hql查询,sql查询,条件查询6.load()和get()的区别hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,load默认支持延迟加载,在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,只能抛异常ObjectNotFoundEcception;所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。

由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在 load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理(load时候之查询一级缓存,不存在则创建代理)。

get() 现在一级缓存找,没有就去二级缓存找,没有就去数据库找,没有就返回null ;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

Java面试题之Hibernate

1、hibernate的inverse属性的作用?解决方案一,按照Object[]数据取出数据,然后自己组bean解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就Bean(type1filed1,type2field2),然后在hql里面就可以直接生成这个bean了。

2、spring+Hibernate中委托方案怎么配置?解决方案一,按照Object[]数据取出数据,然后自己组bean解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就Bean(type1filed1,type2field2),然后在hql里面就可以直接生成这个bean了。

3、hibernate进行多表查询每个表中各取几个字段,也就说查询出来的结果集没有一个实体类与之对应如何解决;解决方案一,按照Object[]数据取出数据,然后自己组bean解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就Bean(type1filed1,type2field2),然后在hql里面就可以直接生成这个bean了。

4、介绍一下Hibernate的二级缓存按照以下思路来回答:(1)首先说清楚什么缓存,(2)再说有了hibernate的Session就一级缓存,即有了一级缓存,为什么还要有二级缓存,(3)最后再说如何配置Hibernate的二级缓存。

(1)缓存就把以前从数据库中查询出来和使用过的对象保存在内存中(一个数据结构中),这个数据结构通常或类似Hashmap,当以后要使用某个对象时,先查询缓存中否有这个对象,如果有则使用缓存中的对象,如果没有则去查询数据库,并将查询出来的对象保存在缓存中,以便下次使用。

(2)Hibernate的Session就一种缓存,们通常将之称为Hibernate的一级缓存,当想使用session从数据库中查询出一个对象时,Session也先从自己内部查看否存在这个对象,存在则直接返回,不存在才去访问数据库,并将查询的结果保存在自己内部。

hibernat面试题

如何查看hibernate生成并执行的sql在定义数据库和数据库属性的文件applicationConfig.xml里面,把hibernate.show_sql 设置为true这样生成的SQL就会在控制台出现了注意:这样做会加重系统的负担,不利于性能调优hibernate都支持哪些缓存策略?Read-only: 这种策略适用于那些频繁读取却不会更新的数据,这是目前为止最简单和最有效的缓存策略* Read/write:这种策略适用于需要被更新的数据,比read-only更耗费资源,在非JTA环境下,每个事务需要在session.close和session.disconnect()被调用* Nonstrict read/write: 这种策略不保障两个同时进行的事务会修改同一块数据,这种策略适用于那些经常读取但是极少更新的数据* Transactional: 这种策略是完全事务化得缓存策略,可以用在JTA环境下hibernate里面sorted collection和ordered connection有什么区别?sorted collection是在内存中通过java比较器进行排序的ordered collection是在数据库中通过order by进行排序的Hibernate面试题小集Hibernate面试题专栏1. Hibernate有哪几种查询数据的方式3种:hql、QBC——Query By Criteria API、原生sql (通过createSQLQuery建立)2. 谈谈Hibernate中inverse的作用inverse属性默认是false,就是说关系的两端都来维护关系。

比如Student和Teacher是多对多关系,用一个中间表TeacherStudent维护。

Gp)i如果Student这边inverse=”true”, 那么关系由另一端Teacher维护,就是说当插入Student时,不会操作TeacherStudent表(中间表)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Hibernate Interview Questions 1. What is Hibernate? Hibernate is a powerful, high performance object/relational persistence and query service. This lets the users to develop persistent classes following object-oriented principles such as association, inheritance, polymorphism, composition, and collections.

2. What is ORM? ORM stands for Object/Relational mapping. It is the programmed and translucent perseverance of objects in a Java application in to the tables of a relational database using the metadata that describes the mapping between the objects and the database. It works by transforming the data from one representation to another.

3. What does an ORM solution comprises of? • It should have an API for performing basic CRUD (Create, Read, Update, Delete) operations on objects of persistent classes • Should have a language or an API for specifying queries that refer to the classes and the properties of classes • An ability for specifying mapping metadata • It should have a technique for ORM implementation to interact with transactional objects to perform dirty checking, lazy association fetching, and other optimization functions

4. What are the different levels of ORM quality? There are four levels defined for ORM quality. i. Pure relational ii. Light object mapping iii. Medium object mapping iv. Full object mapping

5. What is a pure relational ORM? The entire application, including the user interface, is designed around the relational model and SQL-based relational operations.

6. What is a meant by light object mapping? The entities are represented as classes that are mapped manually to the relational tables. The code is hidden from the business logic using specific design patterns. This approach is successful for applications with a less number of entities, or applications with common, metadata-driven data models. This approach is most known to all.

7. What is a meant by medium object mapping? The application is designed around an object model. The SQL code is generated at build time. And the associations between objects are supported by the persistence mechanism, and queries are specified using an object-oriented expression language. This is best suited for medium-sized applications with some complex transactions. Used when the mapping exceeds 25 different database products at a time.

8. What is meant by full object mapping? Full object mapping supports sophisticated object modeling: composition, inheritance, polymorphism and persistence. The persistence layer implements transparent persistence; persistent classes do not inherit any special base class or have to implement a special interface. Efficient fetching strategies and caching strategies are implemented transparently to the application.

9. What are the benefits of ORM and Hibernate? There are many benefits from these. Out of which the following are the most important one. i. Productivity – Hibernate reduces the burden of developer by providing much of the functionality and let the developer to concentrate on business logic. ii. Maintainability – As hibernate provides most of the functionality, the LOC for the application will be reduced and it is easy to maintain. By automated object/relational persistence it even reduces the LOC. iii. Performance – Hand-coded persistence provided greater performance than automated one. But this is not true all the times. But in hibernate, it provides more optimization that works all the time there by increasing the performance. If it is automated persistence then it still increases the performance. iv. Vendor independence – Irrespective of the different types of databases that are there, hibernate provides a much easier way to develop a cross platform application.

10. How does hibernate code looks like? Session session = getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); MyPersistanceClass mpc = new MyPersistanceClass ("Sample App"); session.save(mpc); tx.commit(); session.close(); The Session and Transaction are the interfaces provided by hibernate. There are many other interfaces besides this.

11. What is a hibernate xml mapping document and how does it look like? In order to make most of the things work in hibernate, usually the information is provided in an xml document. This document is called as xml mapping document. The document defines, among other things, how properties of the user defined persistence classes’ map to the columns of the relative tables in database. "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

相关文档
最新文档