hibernate复习
Hibernate学习笔记
Hibernate项目的构建与配置1.在项目里倒入Hibernate所必须的Jar包(1)Hibernate框架可以使用在任何的Java项目里,并不一定是Web项目。
只需要在项目里倒入Hibernate所必须要使用的jar包就可以了。
(2)在Hibernate的官网下载hibernate-release-4.2.2.Final.zip解压,要使用Hibernate必须导入的jar包就在目录“hibernate-release-4.2.2.Final\lib\required”下。
倒入此路径下的所有jar包就可以了。
2.配置hibernate.cfg.xml文件(1)配置hibernate.cfg.xml文件可以参考“\project\etc”目录下的hibernate.cfg.xml文件与hibernate.properties文件。
(2)使用Hibernate连接MySQL的hibernate.cfg.xml配置文件如下:<hibernate-configuration><session-factory>(设置显示Hibernate产生的SQL语句)<property name="show_sql">true</property>(设置MySQL的SQL语法的方言)<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>(设置MySQL的驱动程序)<property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>(设置MySQL的数据库路径、用户名、密码)<property name="hibernate.connection.url">jdbc:mysql:///java</property><property name="ername">root</property><property name="hibernate.connection.password">lizhiwei</property>(设置当数据库要保存的表不存在时,就新建表)<property name="hibernate.hbm2ddl.auto">update</property>(设置对象与数据库表的关系映射文件)<mapping resource="vo/User.hbm.xml"/></session-factory></hibernate-configuration>(3)此配置文件一般放在项目的src目录下。
软件开发框架(J2EE)Hibernate概述习题与答案
一、多选题1.在Hibernate 主配置文件(hibernate.cfg.xml)中,以下哪个元素()为它的根元素。
A.<hibernate-configuration>元素B.<session-factory>元素C.<property>元素D.<mapping>元素E.<hibernate-mapping>元素2.在Hibernate 主配置文件(hibernate.cfg.xml)中,是通过哪个元素()来配置映射文件的。
A.<hibernate-configuration>元素B.<session-factory>元素C.<property>元素D.<mapping>元素E.<hibernate-mapping>元素3.下面关于Hibernate 的映射文件说法正确的有哪些()。
A.Hibernate 是以xml 格式的文件来指定对象与关系数据之间的映射B.在hibernate.cfg.xml文件中可以配置<mapping>元素的resource属性来指定映射文件C.配置映射文件时,需要遵循它对应的DTD 文件格式D.在映射文件中,<class>元素的<id>子元素只能出现一次E.<id>元素的<generator>子元素用来设定标识符生成器4.在Hibernate 的映射文件中,<id>元素的<generator>子元素用来设定标识符生成器,以下对常用的标识符生成器的用法说法正确的是()。
A.increment:适用于代理主键。
用于为long, short 或者int 类型生成唯一标识B.identity:适用于代理主键。
由底层数据库生成标识符C.sequence:适用于代理主键。
Hibernate 根据底层数据库的序列来生成标识符D.hilo:使用一个高/低位算法高效的生成long、short 或者int 类型的标识符E.seqhilo:使用一个高/低位算法来高效的生成long、short 或者int 类型的标识符,给定一个数据库序列(sequence)的名字5.Hibernate 采用xml 文件来配置对象—关系映射有哪些好处()。
Hibernate常见面试题汇总
一. H ibern ate工作使用步骤?1.读取并解析配置文件2. 读取并解析映射信息,创建Ses sionF actor y3.打开Sess sion4. 创建事务Tran satio n5.持久化操作6. 提交事务7.关闭Sess ion 8. 关闭Se sstio nFact ory 二.Hib ernat e的查询方式有几种?(1)导航对象图检索方式。
根据已经加载的对象,导航到其他对象。
(2)OID查询方式。
根据对象的O ID来查询对象。
Se ssion的get()和loa d()方法。
(3)HQL查询方式。
HQ L是面向对象的查询语言,ses sion的find()方法用于执行HQL查询语句。
可以利用Q uery接口。
Q ueryquery = se ssion.crea teQue ry(“f rom C ustom er as c wh ere c.name=: c ustom erNam e”);quer y.set Strin g(“cu stome rName”,”张三”);Listresul tList = qu ery.l ist();(4)QBC查询方式。
这种API封装了基于字符串形式的查询语句。
Crit eriacrite ria = sess ion.c reate Crite ria(U ser.c lass);Cr iteri on cr iteri on1 = Expe ssion.like(“nam e”,”T%”);Crite rioncrite rion2 = Ex pessi on.eq(age,new I ntege r(30));cr iteri a =crite ria.a dd(cr iteri on1);crit eria = cr iteri a.add(crit erion2);L ist r esult List= cri teria.list();这种查询方式使用的较少,主要是在查询中需要用户输入一系列的查询条件,如果采用HQL查询代码会比较烦。
J2EE期末复习(含答案)
1、ORM 有什么好处?AA).能进行关系对象的映射B).具有控制器功能C).能在服务器端保存客户端状态D).向DTO传递数据2、在使用property标签时,如果要显示标签的代码,需要设置下面哪个属性的属性值? CA).defaultB).valueC).escapeD).id3、以下哪一种检索策略利用了外连结查询?CA).立即检索B).延迟检索C).迫切左外连结检索D).迫切右外连结检索4、如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,使用Session 的什么方法? AA).createQuery()B).query()C).queryAll()D).queryObject()5、HQL查询语句from Cat as cat,不仅仅返回Cat的实例,而且还返回____的实例。
BA).Cat 父类B).Cat 子类C).Cat 实现接口D).Cat 兄弟类6、下面哪些子句不支持算数表达式?CA).compute by 和order byB).compute by 和insert byC).order by 和group byD).insert by 和group by7、使用Hibernate 的QBC 查询,要使用SQL 中的类似select count(*) from tablename 方法求出记录数,必须使用哪一个类?BA).RestrictionsB).ProjectionsC).CriteriaD).Criteron8、Struts2中默认的主题是哪一种?BA).simpleB).xhtmlC).css_xhtmlD).ajax9、在Hibernate 中,关于数据库的方言,下面哪个说法是正确的?DA).可以不写数据库方言B).数据库方言没有作用,可以随便写C).有通用的数据库方言可以使用D).数据方言对应于每个数据库,主要用于产生SQL 语句数据方言对应于每个数据库10、在JEE企业级开发中,SSH框架中Struts主要是完成Web的MVC中的哪个角色?AA).C(控制器)和V(视图)B).M (模型)和C(控制器)C).只有C(控制器)D).V(视图)和M(模型)11、在Struts2的包配置中,下面哪个属性是必须指定的?CA).namespaceB).extendsC).nameD).abstract12、通过实现下面哪个接口,可以很容易地实现一个拦截器类的编写?BA).ActionB).InterceptorC).AbstractInterceptorD).MethodInterceptor13、Action运行期间所有用到的数据都保存在下面哪个对象中?DA).RequestB).SessionC).ResponseD).ActionContext14、在使用SSH进行JEE企业级开发中,通常把模板文件放置在/WEB-INF目录下的原因是?AA).因为模板文件不能直接访问,为了防止用户直接访问模板文件,所以放在/WEB-INF目录下,让这些文件直接访问不到。
最经典的hibernate教程 从入门到精通 第一篇(共四篇)
• </session-factory>
准备3:添加实体类和映射文件(UserInfo.hbm.xml)
使用Hibernate的7个步骤:
1、 Configuration 7、 关闭Session 2、 创建 SessionFactory
6、 提交事务 5、
3、 打开 Session 4、 开始一个事务
2-1):添加配置文件 -- hibernate.cfg.xml
<session-factory> <property name="connection.url"> jdbc:microsoft:sqlserver://localhost:1433;Database=pubs </property> <property name="ername">sa</property> <property name="connection.password">pwd</property> <property name="connection.driver_class"> com.microsoft.jdbc.sqlserver.SQLServerDriver </property> <property name="dialect"> org.hibernate.dialect.SQLServerDialect </property> <property name="show_sql">true</property> <mapping resource="com/aptech/jb/entity/User.hbm.xml" /> </session-factory>
hibernate练习题
hibernate练习题1年。
以下语句中创建条件对象的正确语句是radioA,条件c = query . CreateCriteria();标准c =查询。
添加标准();C、条件c =会话.创建条件();D、条件c =会话创建条件(用户类);2的正确结论。
查询对象是选择大于A的对象,List()方法返回总数据为0到大于B的列表对象,uniqueResut()方法返回对象或对象数组。
数据总量为0到1条数据C,hql:selectusername from user model可以使用list()方法获取查询结果D,hql:selectusername from user model可以使用uniqueResut()方法获取查询结果3Hibernate实体对象生产规范不包括以下规则中的哪一个来选择A,构造方法B声明没有公共参数,标识属性256 所有属性的getter和setter方法D,声明为最终类(最终修饰符)4在HQL语句的参数查询中,执行以下代码。
下列选项可以正确地为参数赋值:QUERY = S . CREATE QUERY(\ radioA,query.setParameter(1,B,query.setParameter(0,C,query.setString(0,Tom);整数(0,汤姆);5关于Hibernate的瞬时对象状态是错误的。
它是为具有OID的瞬时状态的更多对象选择A,B与会话对象相关联,具有瞬时状态的对象具有OID,C不与会话对象相关联,并且具有瞬时状态的对象不具有OID。
与会话对象相关联的瞬时状态对象没有OID,6相关的QBC查询短语与会话对象不相关联,以下语句是正确的:多选A,限制。
介于表示范围比较b,限制。
eq表示相等比较C,限制。
le表示小于或等于比较d,限制。
ge表示大于或等于比较7年,以下操作对一级缓存的影响被错误地描述为| 1执行删除操作时,如果对象没有OID,将引发异常b。
hibernate4学习笔记
hibernate4学习笔记Hibernate4学习笔记本⼈全部以⾃学为主,在⽹上收集各种学习资料,总结归纳学习经验,现将学习路径给予⼤家分享。
此次学习的hibernate的版本是:hibernate-release-4.2.4.Final(截⽌2015年7⽉31⽇最新版),JAVA的版本是:java8.0,使⽤的开发⼯具是:Eclipse Mars Release (4.5.0)。
第⼀天:Hibernate4基础知识和HelloWorld简单编程Hibernate是⼀种半成品ORM框架,对数据库持久化操作,程序员对数据库的操作转换成对对象的操作。
ORM 采⽤元数据来描述对象-关系映射细节, 元数据通常采⽤XML 格式, 并且存放在专门的对象-关系映射⽂件中。
HelloWorld简单编程1、准备Hibernate环境(1)导⼊Hibernate的Jar包,如下:(2)导⼊Mysql驱动包,我⽤的数据库是:Mysql 5.0,数据库驱动包如下:以上所有Jar加完毕之后,需要加⼊到Eclipse⾃⾝系统⾥⾯,具体如下:以上操作完毕之后,Hibernate的环境就算搭建完毕,下⾯就可以进⼀步操作。
2、配置hibernate.cfg.xml⽂件,主要是对数据库的连接,具体如下:"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/doc/63fa364d5022aaea998f0fde.html /hibernate-configuration-3.0.dtd ">rootmysqlname="connection.driver_class">com.mysql.jdbc.Driver jdbc:mysql:///Test(或者:jdbc:mysql://localhost:3306/Test)name="dialect">org.hibernate.dialect.MySQLInnoDBDialecttruetrueupdate3、编写⼀个实例类News.java,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;public class News {private Integer id;private String title;private Date date;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public News(String title, String author, Date date) { super();this.title = title;this.author = author;this.date = date;}public News(){}@Overridereturn"News [id="+ id+ ", title="+ title+ ", author="+ author + ", date=" + date + "]";}}4、创建News.hbm.xml配置映射⽂件,具体代码如下:"/doc/63fa364d5022aaea998f0fde.html /hibernate-mapping-3.0.dtd">5、将映射⽂件News.hbm.xml指定到hibernate.cfg.xml配置⽂件⾥⾯,即在hibernate.cfg.xml⽂件⾥加⼊⼀⾏映射代码,具体如下:6、创建hibernate API操作测试类(Juit测试),验证hibernate的优势效果,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class HibernateTest {@Testpublic void test() {//1. 创建⼀个 SessionFactory 对象SessionFactory sessionFactory=null;//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和对象关系映射信息Configuration configuration=new Configuration().configure();//4.0 之前这样创建//sessionFactory=configuration.buildSessionFactory();//2). 4.0以后创建⼀个 ServiceRegistry 对象: hibernate 4.x 新添加的对象//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.ServiceRegistry serviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties() ).buildServiceRegistry();sessionFactory=configuration.buildSessionFactory(serviceRegistry) ;//2. 创建⼀个 Session 对象Session session=sessionFactory.openSession();//3. 开启事务Transaction transaction=session.beginTransaction();//4. 执⾏保存操作News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));session.save(news);//5. 提交事务/doc/63fa364d5022aaea998f0fde.html mit();//6. 关闭 Sessionsession.close();//7. 关闭 SessionFactory 对象sessionFactory.close();}}7、测试结果如下:(1)数据库⾥⾯的结果如下:(2)Eclipse下的语句⽣成如下:以上就是简单Hibernate的测试,总结:1、不需要在数据库⾥⾯创建任何数据,由hibernate ⾃动⽣成;2、代码简单易理解,不复杂,测试数据只需要先创建以下⼏个步骤:SessionFactory-→Session-→Transaction-→session操作数据库-→提交-→关闭;3、不需要写SQL 语句,从头到尾没有写⼀条SQL语句,反⽽Hibernate帮我们⽣成SQL语句。
J2EE期末复习(含答案)
1、ORM 有什么好处AA).能进行关系对象的映射B).具有控制器功能C).能在服务器端保存客户端状态D).向DTO传递数据2、在使用property标签时,如果要显示标签的代码,需要设置下面哪个属性的属性值 CA).defaultB).valueC).escapeD).id3、以下哪一种检索策略利用了外连结查询CA).立即检索B).延迟检索C).迫切左外连结检索D).迫切右外连结检索4、如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,使用Session 的什么方法AA).createQuery()B).query()C).queryAll()D).queryObject()5、HQL查询语句from Cat as cat,不仅仅返回Cat的实例,而且还返回____的实例。
BA).Cat 父类B).Cat 子类C).Cat 实现接口D).Cat 兄弟类6、下面哪些子句不支持算数表达式CA).compute by 和order byB).compute by 和insert byC).order by 和group byD).insert by 和group by7、使用Hibernate 的QBC 查询,要使用SQL 中的类似select count(*) from tablename 方法求出记录数,必须使用哪一个类BA).RestrictionsB).ProjectionsC).CriteriaD).Criteron8、Struts2中默认的主题是哪一种BA).simpleB).xhtmlC).css_xhtmlD).ajax9、在Hibernate 中,关于数据库的方言,下面哪个说法是正确的DA).可以不写数据库方言B).数据库方言没有作用,可以随便写C).有通用的数据库方言可以使用D).数据方言对应于每个数据库,主要用于产生SQL 语句数据方言对应于每个数据库10、在JEE企业级开发中,SSH框架中Struts主要是完成Web的MVC中的哪个角色AA).C(控制器)和V(视图)B).M (模型)和C(控制器)C).只有C(控制器)D).V(视图)和M(模型)11、在Struts2的包配置中,下面哪个属性是必须指定的CA).namespaceB).extendsC).nameD).abstract12、通过实现下面哪个接口,可以很容易地实现一个拦截器类的编写BA).ActionB).InterceptorC).AbstractInterceptorD).MethodInterceptor13、Action运行期间所有用到的数据都保存在下面哪个对象中DA).RequestB).SessionC).ResponseD).ActionContext14、在使用SSH进行JEE企业级开发中,通常把模板文件放置在/WEB-INF目录下的原因是AA).因为模板文件不能直接访问,为了防止用户直接访问模板文件,所以放在/WEB-INF目录下,让这些文件直接访问不到。
Hibernate基础知识详解
Hibernate基础知识详解<hibernate-mapping><class name="*.*.*" table="t_customer" catalog="***"><id name="id" column="c_id"><generator class="identity"/></id><property name="name" column="c_name" length="20"/><set name="orders" inverse="false" cascade="save-update"><key column="c_customer_id"/></set></class></hibernate-mapping>(1)统⼀声明包名,这样在<class>中就不需要写类的全名。
(2)关于<class>标签配置name 属性:类的全名称table 表的名称,可以省略,这时表的名称就与类名⼀致catalog 属性:数据库名称可以省略.如果省略,参考核⼼配置⽂件中 url 路径中的库名称(3)关于<id>标签,<id>是⽤于建⽴类中的属性与表中的主键映射。
name 类中的属性名称column 表中的主键名称 column 它也可以省略,这时列名就与类中属性名称⼀致length 字段长度type 属性指定类型<generator>它主要是描述主键⽣成策略。
Hibernate 考试题
Hibernate 考试题一.填空题:1. 对象关系映射(ORM)的基本原则是:类型(class)映射(),属性(property)映射(),关联关系(association)映射(),类型的实例或对象(instance | object)映射()。
2. Hibernate应用通常由四个部分组成,它们是使用Hibernate API的程序和(、、)。
3. Hibernate应用缺省的XML格式的配置文件名是(), 放置在()下;该配置文件的根元素是(),根元素的子元素是();配置数据库方言的属性名是();配置数据库连接的四种属性名是(、、、);配置映射资源的元素是(),如果映射用XML文件表示,用属性()表示,如果映射用标注(annotation)表示,用属性()表示。
4. Hibernate XML映射文件的根元素是();此根元素下主要的子元素是();映射实体类中表示主键的属性的元素是();映射实体类中普通属性的元素是();映射一对一关联关系的元素是();映射多对一关联关系的元素是();表示多对多关系用集合元素,这些集合元素是();描述外键用元素(); 如果一个类型不是实体,但它是某个实体的组成部分,我们用元素()表示;在描述继承关系时,如果用一张表对应整个类层次结构子类型用元素()描述,如果每个子类型对应各自的表子类型用()描述,如果只有真正的可实例化的子类型才对应表则子类型可用元素()或元素()描述;代表双向关联关系时表示是否维护表中外键关系的属性名是();代表级联操作的属性名是();使用乐观锁时我们通常会在实体类型中增加一整型或日期型的属性,在影射文件中用元素(或)描述。
5. 在Hibernate XML影射文件中描述主键生成机制用元素(),其属性描述了主键的生成策略,至少写出三种策略名(、、)。
6. 在Hibernate XML影射文件中级连操作的属性值至少写出三个(、、)。
7. 在Hibernate XML影射文件中描述HQL语句所用元素为()。
J2EE复习题
J2EE复习资料一、解释下面关于J2EE的名词(1)JNDI:Java Naming & Directory Interface,JA V A命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.(2)JMS:Java Message Service,JA V A消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.(3)JTA:Java Transaction API,JA VA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可.(4)JAF: Java Action FrameW ork,JA VA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策略.(5)RMI:Remote Method Interface,远程方法调用二、选择题(1)在标签处理类中,如何访问session范围内的共享数据? (多选)选项:(A)在TagSupport类中定义了session成员变量,直接调用它的getAttribute()方法即可。
(B)在标签处理类TagSupport类中定义了pageContext成员变量,先通过它的getSession()方法获得当前的HttpSession对象,再调用HttpSession对象的getAttribute()方法。
(C)pageContext.getAttribute(“attributename”,PageContext.SESSION_SCO PE)(2)在下面的选项中,哪些是TagSupport类的doStartTag()方法的有效返回值? (多选)选项:(A) Tag.SKIP_BODY(B) Tag.SKIY_PAGE(C) Tag.EVAL_BODY_INCLUDE(D) Tag.EVAL_PAGE(3)以下代码能否编译通过,假如能编译通过,运行时得到什么打印结果?(单选)request.setAttribute(\"count\",new Integer(0));Integer count = request.getAttribute(\"count\");选项:A)不能编译通过B)能编译通过,并正常运行C) 编译通过,但运行时抛出ClassCastException(4)一般情况下,关系数据模型与对象模型之间有哪些匹配关系(多选)A)表对应类B)记录对应对象C)表的字段对应类的属性D)表之间的参考关系对应类之间的依赖关系(2)以下关于SessionFactory的说法哪些正确?(多选)A)对于每个数据库事务,应该创建一个SessionFactory对象B)一个SessionFactory对象对应一个数据库存储源。
hibernate考试题
--------------------------------------装--------------------------------------订------------------------------线----------------------------------------**学院课程考试试卷课程名称:《Hibernate:使用Hibernate&EJB开发持久层企业及应用》(A)卷年级:班级:姓名:_______________ 学号:_________________ 考试(考查) 闭卷题号1-20 21-40 41-50 总分分数选择题(每题2分,共计100分)1. 一个持久化类的实例可能存在的状态有(ABD)。
[选三项]A.瞬态 B.持久态 C.隔离态 D.游离态2. 面向对象概念中的对象与面向关系概念中的(b )相对应。
A.表 B.表的行 C.表的列 D.表中行的数据3. 下面说法正确的是(ABC )。
[选三项]A.Hibernate是一个开放源代码的对象关系映射框架B.Hibernate是对JDBC进行了轻量级的对象封装C.Hibernate可以大大减少操作数据库的工作量D.Hibernate提供了数据查询机制,但没有提供恢复机制4. JDBC编程的缺点( ACD )。
[选三项]A.实现业务逻辑的代码和数据库访问代码掺杂在一起,使程序结构不清晰,可读性差B.在程序代码中嵌入面向关系的SQL语句,使开发人员能完全运用面向对象的思维来编写程序C.业务逻辑和关系数据模型绑定,如果关系数据模型发生变化,例如修改了CUSTOMERS表的结构,那么必须手工修改程序代码中所有相关的SQL语句,--------------------------------------装--------------------------------------订------------------------------线----------------------------------------这增加了维护软件的难度D .如果程序代码中的SQL 语句包含语法错误,在编译时不能检查这种错误,只有在运行时才能发现这种错误,这增加了调试程序的难度5. Hibernate 映射文件中<generator>子元素用来设定标识符生成器,下面哪些是Hibernate 提供的内置实现( ABD )。
Hibernate复习题1含答案
美斯坦福在线考试系统荆州理工G3 Hibernate科目: SCCEG3Hibernate总分: 100分时间: 60分钟一、单选题(共45题,每题2分,说明:选择一项正确的答案)1、下面关于Hibernate的说法,错误的是()A、Hibernate是一个“对象-关系映射”的实现B、Hibernate是一种数据持久化技术C、Hibernate是JDBC的替代技术他是对JDBC做了轻量级的对象封装D、使用Hibernate可以简化持久化层的编码参考答案: C2、在使用了Hibernate的系统中,要想在删除某个客户数据的同时删除该客户对应的所有订单数据,下面方法可行的是()A、配置客户和订单关联的cascade属性为save-updateB、配置客户和订单关联的cascade属性为allC、设置多对一关联的inverse属性为trueD、设置多对一关联的inverse属性为false参考答案: B详解3、下面一对多关联的配置中,存在哪些错误()<set name="orders" inverse="false" cascade="true"><one-to-many class="com.x.entity.Order"column="customer_id" /></set>A、inverse属性不可以设置为falseB、cascade属性不可设置为trueC、class="com.x.entity.Order"应为type="com.x.entity.Order"D、column属性不可再<one-to-many>节点内设置参考答案: B4、下面创建Criteria对象的语句中正确的是()A、Criteria c = query.createCriteria();B、Criteria c = query.addCriteria();C、Criteria c = session.createCriteria();D、Criteria c = session.createCriteria(User.class);参考答案: D5、下面关于Hibernate映射文件配置中dynamic-update属性说法正确的是()详解A、动态的修改,如果为true,只改变有改变的属性B、动态的修改,如果为true,只改变没有改变过的属性C、动态的修改,如果为true,改变所有的属性D、以上说法都错参考答案: A6、下面关系Hibernate对象的状态说话正确的是()临时持久化游离A、Hibernat的对象只有一种状态B、Hibernat的对象有2种状态C、Hibernat的对象有3种状态D、Hibernat的对象有4种状态参考答案: C7、Hibernate对象从瞬时到持久状态转换的方式有()。
hibernate学习笔记
Hibernate 学习笔记2010年7月9日星期五1目录1.学习纲要2.学习目的3.达标标准4.名词解释5.学习时间:两天又3小时(16~19pm)2具体内容2.1学习纲要2.1.1什么是hibernate?它是连接JAVA应用程序和关系数据库的中间件它对JDBC API进行了封装,负责JAVA对象的持久化在分层的软件架构中它位于持久化层,封装了所有数据访问细节,使业务逻辑层可以专注于实现业务逻辑。
它是一种ORM映射工具,能够建立面向对象的域模型和关系数据模型之间的映射2.1.2HIBERNATE原理依赖的技术有:JAVA反射机制(在org.hibernate.property中得到较多应用,通过INVORK()方法调用POJO对象的setter,getter方法设置和获取属性的值)i.Class类ii.getMethods方法得到Method类iii.Method类iv.invoke方法用来调用被反射类的方法CGLIB(用于对持久化类进行延迟加载时生成代理类)i.以asm项目为基础,对asm的功能进行封装和扩展,实现并扩展了JAVA的反射功能,可以在运行时状态下实现JAVA接口,扩展JAVA类ii.Asm项目是一个简洁的字节码工具,能够在运行的状态下动态的修改编译完成的JAVA类JAVASSIST(同CGLIB,是另一套解决方案,可以通过修改org.hibernate.cfg.Environment.java原码进行设置)i.是一个执行字节码操作的强有力的驱动代码库。
它允许开发者在代码被JAVA虚拟机载入之前定义一个新类或者修改类的的原代码。
XML技术(DOM4J)i.用来解析XML配置文件Antlr(another tool for language recognition)i.它是一个开源的工具,利用后缀为“.g”的文件来定义语法规则ii.Hibernate提供的语法规则有iii.Hql.giv.Hql-sql.gv.Sql-gen.gvi.Hibernate通过调用这些生成的解析类完成把HQL语句转为SQL语句的工作2.1.3HIBERNATE方法的内部实现略2.1.4Hibernate能做什么?2.1.5hibernate应用在哪些方面2.1.6Hibernate关联关系1.一对多关联<many-to-one name=”customer”column=”CUSTOMER_ID”class=”mypack.Customer”lazy=”false” not-null=”true”/>此种情况下不会加载关联的临时对象。
Hibernate学习总结
一.对象语言和操作数据库不匹配:模型不匹配(阻抗不匹配)①.可以使用JDBC手动转换;sql参数和jdbc中用对象赋值②.使用ORM(Object Relation Mapping对象关系映射)框架:hibernate 二.Hibernate安装配置①.配置文件Hibernate.cfg.xml和Hibernate.properties②.映射文件xxx.hbm.xml:对象模型和关系模型的映射三.开发流程1.由Domain Object -> mapping -> db2.有DB开始,用工具生成mapping和Domain Object3.由配置文件开始四.Domain Object限制1.默认的构造方法(必须的)2.有无意义的标示符id(主键) 可选3.非final的,对懒加载有影响可选Configuration SessionFactory Session Transaction Query CriteriaConfiguration类Configuration类负责配置并启动Hibernate,创建SessionFactory对象。
在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory 对象。
SessionFactory接口SessionFactory接口负责初始化Hibernate。
它充当数据存储源的代理,并负责创建Session对象。
这里用到了工厂模式。
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Session接口Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。
hibernate笔记
configuration.addClass(Customer.class);sf = configuration.buildSessionFactory();}(2)新增保存:save方法/**保存*/@Testpublic void save(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = new Customer();c.setName("洪七公");c.setAge(60);c.setDes("帮助");s.save(c);mit();//实质上执行了2步操作,1:s.flush();//清理缓存,让session缓存中的数据与数据库同步,2:事务提交s.close();//Session的缓存就没有了}(3)更新:update方法/**更新*/@Testpublic void update(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = new Customer();c.setId(3);c.setName("黄老邪");c.setAge(59);c.setDes("药师");s.update(c);mit();s.close();}(4)删除:delete方法@Testpublic void delete(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = new Customer();c.setId(3);s.delete(c);mit();s.close();}(5)查询:get和load方法/**使用ID查询信息*/@Testpublic void findCustomerById(){Session s = sf.openSession();Transaction tr = s.beginTransaction();Customer c = (Customer) s.get(Customer.class, 2);System.out.println(c.getId()+" "+c.getName()+""+c.getAge()+" "+c.getDes());mit();s.close();}(6)查询:query查询(支持hql语句,sql语句,qbc语句)/**查询所有信息*/@Testpublic void findAllCustomerList(){Session s = sf.openSession();Transaction tr = s.beginTransaction();/**使用Hql语句:操作持久对象和属性* 复习sql语句:操作数据库表和数据库表的列*/Query query = s.createQuery("from Customer o");List<Customer> list = query.list();if(list!=null && list.size()>0){for(Customer c:list){System.out.println(c.getId()+" "+c.getName()+" "+c.getAge()+" "+c.getDes());}}mit();s.close();}●hibernate在内存地址中存在一个一级缓存,存在在一级缓存中的对象,就说明该对象具有了持久化的能力,如果对象具有持久化能力就能操作数据库。
java hibernate面试题
java hibernate面试题1. 介绍Hibernate框架Hibernate是一个开源的对象关系映射(ORM)框架,用于在Java应用程序和数据库之间建立映射关系。
它提供了一种面向对象的编程模型,将Java对象与数据库表之间进行映射,从而使开发人员可以直接使用Java对象进行数据库操作。
Hibernate直接通过简单的配置,实现了对底层数据库的统一访问,大大简化了数据库操作代码。
2. Hibernate框架的特点和优势- 透明性: Hibernate隐藏了底层数据库的细节,使开发人员能够专注于业务逻辑而不用关心数据库操作。
- 高度可定制性: Hibernate提供了丰富的配置选项和灵活的映射策略,可以根据项目需求进行定制。
- 数据库无关性: Hibernate支持多种数据库,使用统一的API进行开发,使得应用程序可以无缝切换数据库。
- 缓存管理: Hibernate提供了缓存机制,可以提高应用程序的性能和扩展性。
- 对象关系映射: Hibernate将Java对象与数据库表之间建立映射关系,简化了数据库操作的代码编写。
- 事务管理: Hibernate支持事务管理,可以保证数据的一致性和完整性。
3. Hibernate中的持久化状态在Hibernate中,实体对象可以存在三种状态:瞬时态、持久态和脱管态。
- 瞬时态(Transient): 对象在内存中创建,但没有与会话关联。
对该对象进行更改不会影响数据库。
- 持久态(Persistent): 对象与会话关联,并且Hibernate会自动跟踪该对象的变化,并在事务提交时同步到数据库中。
- 脱管态(Detached): 对象与会话分离,再次与会话关联时需要手动进行合并或者更新操作。
4. Hibernate中的对象关系映射Hibernate通过注解或者XML文件来描述Java对象与数据库表之间的映射关系。
常用的映射关系有以下几种:- 一对一(One-to-one): 一个对象与另一个对象之间存在唯一对应关系。
2017(一)J2EE复习资料资料
一、填空题复习:P1 P4 P18-19 P35 P40 P54 P62 P82-83 P127 P119 P122二、单选题复习1.如果你已知某个实例的持久化标识,你可以使用Session的_____方法来获取它(A)A) load() B) loadAll() C) getAllData() D) init()2.如果你不能确定你要寻找的对象的持久化标识符,那么你需要使用查询,使用Session的____方法(A)A) createQuery() B) query() C) queryAll() D) que ryObject()3.使用Session的____会把对象的状态从数据库中移除(A)A) delete() B) remove() C) clear() D) removeAll()4.对原生SQL查询的控制是通过___接口进行的。
(A )A) SQLQuery B) Session C) List D) Query5.使用Hibernate的QBC查询,要使用SQL中的类似select count(*) from tablename方法求出记录数,必须使用哪一个类。
(B)A) Restrictions B) Projections C) Criteria D) Criteron6.在Hibernate中,关于数据库的方言,下面哪个说法是正确的(D )A) 可以不写数据库方言 B) 数据库方言没有作用,可以随便写C) 有通用的数据库方言可以使用D) 数据方言对应于每个数据库,主要用于产生SQL语句7.下面不属于持久化的是(A )A) 把对象转换称字符串的形式通过网络传输,在另一端接收到这个字符串后能把对象还原出来B) 把程序数据从数据库中读出来C) 从XML配置文件中读取程序的配置信息D) 把程序数据保存为文件8.下面的程序执行后没有报错,但数据总保存不到数据库,最可能的原因是(E)public static void imain(String[] args){SessionFactory sf=new Configration().configure().buildSessionFactor y();Session session=sf.openSession();Medal medal=new Medal();medal.setOwner(“totong”);medal.setType(“Gold medal”);session.save(user);session.close();}A) 配置文件配置有误B) 没有在配置文件中包含对映射文件的声明C) 配置文件配置有误D) 没有对持久化操作捕捉异常E) 没有开启事务9.已知wage.getItem().size()的值是1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、Object Relational Mapping,简称ORM是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.
2.Hibernate配置的两种方法:
属性文件(hibernate.properties)。
调用代码:Configuration cfg = new Configuration();
Xml文件(hibernate.cfg.xml)。
调用代码:Configuration cfg = new Configuration().configure();
dialect表示数据库方言。
3.自动创建表:<property name="hbmzddl.auto" >create</property>《update》
显示sql:<property name="shuow_sql" >true</property>
4.持久化对象的生命周期:临时状态(new)、持久化状态(saive)、托管化状态(close)。
5.session事务开始:beginTransaction;提交事务:comit;获得事务:getTransaction。
6.把映射文件写入的配置去:<mapping resource="com/bjsxt/hibernate/User.hbm.xml“/>
7.session是通过sessionFactory而产生的。
8.查询分为2种分别是:Hql查询(Hibernate Query Language,HQL)、标准化查询(Criteria Query)
9.给对象写一个映射文件一对一:
Person类
public class Person { private int id; private IdCard idCard; …..} 映射文件
<class name="com.bjsxt.hibernate.Person">
<id name="id">
<generator class="foreign"><param name="property">idCard</param> </generator> </id> ….
<one-to-one name="idCard" constrained="true"/> </class>
一对多:
Person类
public class Classes { private String id; private String name;private Set students; ….
public class Student { private String id; private String name; …..
映射文件
<hibernate-mapping>
<class name="com.bjsxt.hibernate.Classes">
<id name="id"> <generator class="uuid"/> </id>
<property name="name"/> <set name="students">
<key column="classesid" ></key>
<one-to-many class="com.bjsxt.hibernate.Student" />
</set>
</class>
</hibernate-mapping>
10.缓存分为三种:一级缓存(自带的在session中提交关闭无效)、二级缓存(需配置)、查询缓存。
11.spring是一个轻量级架构,其主要核心是IOC和AOP
IOC:Inversion of control,即反向控制;AOP:实现面向对象的编程。
12.bean的配置:
•添加BookFinder定义
<bean id="fileBookFinder" class="com.bjsxt.spring.impl.FileBookFinderImpl“/>•修改BookLister定义的配置
<bean id="bookLister" class="com.bjsxt.spring.BookListerImpl">
<property name="finder" ref=“fileBookFinder" /></bean>
13.依赖注入有三种:构造器注入—通过类的构造方法注入依赖关系
设值方法注入—通过类的setter方法注入依赖关系
注解方式—使用@Autowired或@Resource注入
14.Spring自动扫描和管理Bean有四种注解方式:
•@Service用于标注业务层组件(Service)
•@Controller用于标注控制层组件(Action)
•@Repository用于标注数据访问层组件(DAO)
•@Component泛指组件,不好归类时,可使用这个注解
15.AOP注解类型的写法:
@Aspect
public class MyInterceptor {
@Pointcut("execution (* cn.springtest.service.impl.PersonServiceBean.*(..))")
private void anyMethod(){}
@Before("anyMethod() && args(name)")
public void doAccessCheck(String name){
System.out.println("前置通知"+name); }
@AfterReturning(pointcut="anyMethod()",returning="result")
public void doAfterReturning(String result){
System.out.println("后置通知"+result); }
@After("anyMethod()")
public void doAfter(){
System.out.println("最终通知"); }
@AfterThrowing(pointcut="anyMethod()",throwing="e")
public void doAfterThrowing(Exception e){
System.out.println("例外通知"+e); }
@Around("anyMethod()")
public Object doBasicProfiling(ProceedingJoinPoint pjp)throws Throwable{
System.out.println("进入方法");
Object result=pjp.proceed();
System.out.println("退出方法");
return result; }}
16.Spring读取配置文件中bean的语句:
ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml"); personService ps=(PersonService)ctx.getBean("personService");
17.J2EE四层架构:表现层、业务逻辑层、持久层、数据库层。