结束了紧张的框架学习
在复习的同时把复习笔记整理一波
贴给大家 温故而知新 共同学习 共同进步
Hibernate POJO类规范?
1.声明无参公共的构造方法
2.提供用于作为OID的标识属性
3.为所有属性提供getter与setter方法
注意 该类不能用final修饰 因为hibernate懒加载生成代理对象的时候用的是cglib代理
Hibernate查询的三种方法
1.session.createQuery("hql"); hql查询 hibernate特有 hql语句不能有任何表中的字段
2.session.createCriteria(clazz);hibernate特有的无语句查询 传一个calss对象调用方法完成查询
3.session.createSQLQuery("sql');原生sql查询
总结:一般的话复杂查询还是用原生sql简单查询用HQL或者是Criteria
Struts2常量配置生效顺序
(与我们无关)struts-default.xml:该文件保存在struts2-core-2.1.2.jar文件中
(与我们无关)struts-plugin.xml:该文件保存在struts2-Xxx-2.1.2.jar灯Struts2插件jar文件中
struts.xml:该文件是web应用默认的Struts2的配置文件
struts.properties:该文件是struts2的默认配置文件
web.xml:该文件是web的配置文件
hibernate.cfg.xml中的配置(所有配置都是在hibernate核心<session-factory>标签内)
必选配置 4+1
方言配置 hibernate.dialect
数据库驱动配置 hibernate.connection.driver_class
hibernate.connection.url
hibernate.connection.username
hibernate.connection.password
可选配置 4
打印sql hibernate.show_sql
控制台格式化sql hibernate.format_sql
自动创建表 hibernate.hbm2ddl.auto
引入ORM元数据 <mapping resource="com/itheima/domain/User.hbm.xml" />
Struts2框架名称空间是哪个属性? namespace属性
Struts2框架的访问路径?<package namespace=""/>的值+<action name=""/>的值
<package name="" extends="" namespace="">
<action name="" class="">
</action>
</package>
hibernate cascade属性和inverse属性
inverse属性
多对一关系或者是多对一关系中 默认 inverse=false(默认双方都持有对外键维护的权利)
这个时候一的一方可以放弃(可以不放弃)外键维护(设置 inverse=true)多的一方不可以放弃这个权利
cascade属性
级联操作 功能 只是节省几行代码操作("能不用就不用 要用也只用save-update")
依赖注入的方式
set方法注入<property name="" value=""/> name:属性名 value:属性值 必须在bean中提供该属性名对应的共有set方法
构造函数注入<constructor-arg name="" value="" index="" /> index:构造函数参数的索引从0开始
p名称空间注入(了解)
spel注入(了解)
hibernate一级缓存
快照区保存了与一级缓存相对应的数据,但是并不是真正的对象
刷新一级缓存时,执行SQL语句的判定标准为数据区与快照区的数据是否相同
执行查询时,查询数据封装为对象保存在一级缓存数据区,同时将查询数据快照信息保存到快照区
有关值栈中 root对象栈数据操作?
valueStack.push(obj)将指定的对象压入栈顶
在jsp页面,可以使用<s:property/> 获得栈顶的数据
通过valueStack.getRoot()获取对象栈
在jsp页面,可以使用<s:property value="name"/> 获得对象栈中name属性的值
在struts2使用servlet原生APi
可以通过ActionContext操作servlet的三个作用域
ServletActionContext提供了访问servlet常用对象的方法。例如:getServletContext( )等
struts提供若干接口直接给action注入相应的对象。例如:ServletContextAware可以给当前action注入ServletContext对象
ServletActionContext.getRequest() 可以获得HttpServletRequest对象。
struts2与spring整合(加载spring容器)
1.导包 插件包struts2-spring-plugin-2.3.3.jar
2.把Action交给spring管理 注意:Action是多例 要添加属性scope="prototype"
spring整合struts2有两种方式:
一是spring管理action 用@Controller注解声明这个类被spring管理 struts2中不用配置
二是struts2创建action 配置全类名(不推荐)
hibernate与spring整合(加载spring容器)
hibernate的sessionFactory交给spring管理
在Dao层继承HibernateDaoSupport 并且提供set方法 注入并设置父类的sessionFactory
关于spring的切点表达式
execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern (param-pattern) throws-pattern?)
execution(<修饰符>? <返回类型> <类路径> ? <方法名> (<参数列表>) <异常模式>? )
execution(public void cn.itheima.service.UserServiceImpl. pay () )
最终演化为
execution( * cn.itheima.service.*ServiceImpl. * (..) )
execution(* cn.itheima.service.*ServiceImpl.*(..))
项目整合配置 一般来说
ssh框架整合 注意Action注解 默认扫描在struts,action包下面 hibernate 实体的JAP注解要开启注解扫描
web.xml spring的监听器 *ContextLoaderListener
设置spring配置文件的位置 key contextConfigLocation value classpath:applicationContext.xml 类路径src下
struts2的过滤器 StrutsPrepareAndExecuteFilter
扩大session作用范围的过滤器 OpenSessionInViewFilter (注意 所有的过滤器 都要放在struts2的过滤器之前 因为struts2的过滤器中没有放行代码)
applicationContext.xml
1. dataSource <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
属性: 1.driverClass
2.jdbcUrl
3.user
4.password
2. hibernate的sessionFactory
属性:1. dataSource 需要一个连接池
2. hibernateProperties 显示SQL语句,生成表结构,格式化,数据库方言
3. <property name="packagesToScan" value="com.itheima.domain"/> hibernate注解扫描
<property name="mappingDirectoryLocations" value="classpath:com/itheima/domain" /> 加载配置文件(到目录)
3. 注解扫描 <context:component-scan base-package="com.itheima"/>
4. 核心事务管理器
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
5. 开启事务注解 <tx:annotation-driven transaction-manager="transactionManager"/>
6. 读取配置文件 <context:property-placeholder location="classpath:db.properties" />
|
|