Topict=c.getTopics().get(i);
listTopic.add(t);
}
session.getTransaction().commit();
}
publicvoiddeleteById(intid)throwsException{
Sessionsession=HibernateUitl.getSession();
session.beginTransaction();
Topict=(Topic)session.get(Topic.class,id);
Session.delete(t);
session.getTransaction().commit();
}
}
3.Hibernate编程
Hibernate编程:
员工Employee(姓名,出生日期(年月日),电话);部门Department(名称,地址,电话)。
一个员工只属于一个部门,一个部门可以有多个员工。
(1)建立实体类Employee和Department,并通过注解将其映射为t_employee和t_department两个表,两个表主键自动增长;(请省略get和set方法,将注解直接加在字段上)
(2)通过注解,为Employee和Department建立双向关联关系,外键名称为dpt_id;
(3)假设在Spring容器中已经配置了一个SessionFacotry,id为sessionFactory。
通过SpringIoC注解注入需要的资源,编写EmployeeDaoImpl,实现EmployeeDao。
/*EmployeeDao.java*/
publicinterfaceEmployeeDao{
publicListlistAllByDepartmentName(StringdptName)throwsException;
}
//仅供参考
@Entity
@Table(name=”t_employee”)
publicclassEmployee{
@Id
@GeneratedValue
privateintid;
privateStringname;
privateDatedate;
privateStringtelephone;
@ManyToOne
@JoinColumn(name=”dpt_id”)
privateDepartmentdept;
……
}
@Entity
@Table(name=”t_department”)
publicclassDepartment{
@Id
@GeneratedValue
privateintid;
privateStringname;
privateStringAddress;
privateStringtelephone;
@OneToMany
@JoinColumn(name=”dpt_id”)
privateListemps=newArrayList();
……
}
//EmployeeDaoImpl.java
@Repository
publicclassEmployeeDaoImplimplementsEmployeeDao{
privateSessionFacotrysessionFacotry;
publicListlistAllByDepartmentName(StringdptName)throwsException{
Sessionsession=getSessionFactory.openSession();
session.beginTransaction();
Stringhql=”fromEmployeeewheree.dept=:
dept”;
Queryquery=session.createQuery(hql);
query.setString(“dept”,dptName);
Listemps=query.list();
session.getTransaction().commit();
session.close();
returnemps;
}
@Resource
publicvoidsetSessionFacotry(SessionFacotrysessionFacotry){
this.sessionFacotry=sessionFacotry;
}
publicSessionFactorygetSessionFactory(){
returnsessionFactory;
}
}
4.SpringAOP编程
使用注解方式,定义一个切面,在该切面中定义一个Around环绕增强(Advice),当suse.j2ee2016.exam.service包及其子包下所有public方法执行时,该增强处理输出当前执行方法的方法名、执行的起始和截止时间。
//仅供参考
@Aspect
publicclassTxAspect{
//匹配suse.j2ee2016.exam.service包下所有类的
//所有方法的执行作为切入点
@Around("execution(public*suse.j2ee2016.exam.service.*.*(..))")
publicObjectprocessTx(ProceedingJoinPointjp)throwsjava.lang.Throwable{
System.out.println("执行目标方法起始时间:
"+newDate());
//获取目标方法的名称
Stringname=jp.getSignature().getName();
System.out.println("目标方法名称:
"+name);
//获取目标方法的参数
Object[]args=jp.getArgs();
//去执行目标方法,并保存目标方法执行后的返回值
Objectrvt=jp.proceed(args);
System.out.println("执行目标方法结束时间:
"+newDate());
returnrvt;
}
}
选择题
下面关于Spring的说话正确的是()(选择两项)
A.Spring是一个重量级的框架
B.Spring是一个轻量级的框架
C.Spring是一个IOC和AOP容器
D.Spring是一个入侵式的框架
下面关于IOC的理解,正确的是()(选择两项)
A.控制反转
B.对象被动的接受依赖类
C.对象主动的去找依赖类
D.一定要用接口
Spring核心模块的作用()
A.做AOP的
B.做IOC的,用来管理Bean的
C.是用来支持Hibernete
D.是用来支持Struts的
对Hibernate的支持主要用到Spring的那个模块()
A.SpringDAO模块
B.SpringORM模块
C.SpringMVC模块
D.SpringWeb模块
对Struts的支持主要用到Spring的那个模块()
A.SpringDAO模块
B.SpringORM模块
C.SpringMVC模块
D.SpringWeb模块
Spring包装Hibernate之后的Hibernate的DAO应该继承那个类()
A.HibernateDAO
B.SessionFactory
C.HibernateDAOSuport
D.Session
Spring中around通知的目标对象要实现的接口中invoke中方法的参数是()
A.方法
B.目标对象
C.方法执行参数
D.Exception
下面是Spring依赖注入方式的是()(选择两项)
A.set方法注入
B.构造方法的注入
C.get方法的注入
D.接口的注入
下面关于在Spring中配置Bean的init-method的说法正确的是()
A.init-method是在最前面执行的
B.init-method在构造方法后,依赖注入前执行
C.init-method在依赖注入之后执行
D.init-method在依赖注入之后,构造函数之前执行
下面关于Spring配置文件说话正确的是()(选择两项)
A.Spring配置文件必须叫applicationContext.xml
B.Spring配置文件可以不叫applicationContext.xml
C.Spring配置文件可以有多个
D.Spring配置文件只能有一个
看下面的代码,说法正确的是()
ACCP
A.其中的userName是UserTable中的属性,可以不要get、set方法。
B.其中的userName是UserTable中的属性,可以不要get方法,但是一定要有set方法
C.其中的userName是UserTable中的属性,可以不要set方法,但是一定要有get方法
D.其中的userName是UserTable中的属性,一定要有get和set方法
可以通过Web容器来启动Spring框架的类是()
A.ContextLoaderListener
B.ServletLoaderListner
C.ContextLoaderFilter
D.ActionServlet
在web.xml文件中配置Spring框架,下面配置正确的是()
A.
config
/WEB-INF/classes/applicationContext.xml
B.
servletConfig
/WEB-INF/classes/applicationContext.xml
C.
contextconfig
/WEB-INF/classes/applicationContext.xml
D.
contextConfigLocation
/WEB-INF/classes/applicationContext.xml
下面关于SpringBeanFactory接口说法正确的是()
A.BeanFactory是单例模式的实现,负责创建和管理bean
B.BeanFactory是工厂模式的实现,负责创建和管理bean
C.ApplicationContext类是它的实现类
D.以上说法都不对
下面关于Spring管理Bean的说法正确的是()
A.Bean在Spring容器中有两种管理方式,工厂模式和单例模式
B.Bean在Spring容器中有两种管理方式,原型模式和单例模式
C.Spring默认的利用工厂模式管理Bean
D.Spring默认利用原型模式管理Bean
下面关于设置注入优点说法正确的是()
A.构造期即创建一个完整、合法的对象
B.需要写繁琐的setter方法的
C.对于复杂的依赖关系,设置注入更简洁,直观
D.以上说法都不对
下面关于构造注入优点说法错误的是()
A.构造期即创建一个完整、合法的对象
B.不需要写繁琐的setter方法的
C.对于复杂的依赖关系,构造注入更简洁,直观
D.在构造函数中决定依赖关系的注入顺序
下面关于AOP的理解正确的是()(选择两项)
A.能够降低组件之间的依赖关系
B.将项目中的公共的问题集中解决,减少代码量,提高系统的可维护性
C.AOP是面向对象的代替品
D.AOP不是面向对象的代替品,是面向对象很好的补充
一般情况下,以下哪个选项不是关系数据模型与对象模型之间的匹配关系:
()
A表对应类
B记录对应对象
C表的字段对应类的属性
D表之间的参考关系对应类之间的依赖关系
以下关于SessionFactory的说法哪些正确?
()
A对于每个数据库事务,应该创建一个SessionFactory对象
B一个SessionFactory对象对应多个数据库存储源。
CSessionFactory是重量级的对象,不应该随意创建。
如果系统中只有一个数据库存储源,只需要创建一个。
DSessionFactory的load()方法用于加载持久化对象
以下程序的打印结果是什么?
()
tx=session.beginTransaction();
Customerc1=(Customer)session.load(Customer.class,newLong
(1));
Customerc2=(Customer)session.load(Customer.class,newLong
(1));
System.out.println(c1==c2);
mit();
session.close();
A运行出错,抛出异常
B打印false
C打印true
D运行通过,但什么都不显示
以下哪个不属于Session的方法?
()
Asave()
Bdelete()
Cupdate()
Dopen()
以下哪个选项不是持久化层的对象状态?
()
A临时状态
B独立状态
C游离状态
D持久化状态
对于以下程序,Customer对象在第几行变为游离状态?
()
Customercustomer=newCustomer();//line1
customer.setName(\"Tom\");//line2
Sessionsession1=sessionFactory.openSession();//line3
Transactiontx1=session1.beginTransaction();
session1.save(customer);//line4
mit();//line5
session1.close();//line6
Aline1
Bline3
Cline5
Dline6
以下哪一种检索策略利用了外连结查询?
()
A立即检索
B延迟检索
C迫切左外连结检索
D迫切右外连结检索
下面关于hibernate核心接口说明错误的是?
()
AConfiguration接口:
配置Hibernate,根据其启动hibernate,创建SessionFactory对象。