ssh整合
ssm s是spring 另个s是Springmvc h是hibernate
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new
一个对象,而是让Spring框架帮你来完成这一切。
- Spring配置文件
<!--扫描文件-->
<context:property-placeholder location="classpath:database.properties"></context:property-placeholder>
<!--数据源 datasource.-->
<bean id="dataSource" scope="singleton" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${usernames}"></property>
<property name="password" value="${password}"></property>
<property name="maxActive" value="${maxActive}"></property>
<property name="maxIdle" value="${maxIdle}"></property>
<property name="maxWait" value="${maxWait}"></property>
</bean>
<!--sessionFactory配置-->
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:/hibernate.cfg.xml"></property>
<property name="dataSource" ref="dataSource"></property>
<property name="packagesToScan" value="org.Houes.entity"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
</props>
</property>
</bean>
<!--事务通知-->
<!--事务管理器-->
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!--配置事务通知-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/>
<tx:method name="get*" propagation="SUPPORTS" read-only="true"></tx:method>
</tx:attributes>
</tx:advice>
<!--aop织入事务通知-->
<aop:config>
<aop:pointcut id="p" expression="execution(* org.Houes.dao..*.*(..))"></aop:pointcut>
<aop:advisor advice-ref="txAdvice" pointcut-ref="p"></aop:advisor>
</aop:config>
<context:component-scan base-package="org.Houes.dao"></context:component-scan>
Springmvn
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
- Springmvn配置文件
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--文件解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="fastJsonConfig">
<bean class="com.alibaba.fastjson.support.config.FastJsonConfig">
<property name="dateFormat" value="yyyy-MM-dd HH:mm:ss"></property>
<property name="serializerFeatures">
<array>
<value>WriteMapNullValue</value>
<value>DisableCircularReferenceDetect</value>
</array>
</property>
</bean>
</property>
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=utf-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--异常处理解析器-->
<!--<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">-->
<!--<property name="exceptionMappings">-->
<!--<props>-->
<!--<prop key="java.lang.RuntimeException">error</prop>-->
<!--</props>-->
<!--</property>-->
<!--</bean>-->
<!--放过静态资源-->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<mvc:resources mapping="/*" location="/WEB-INF/,classpath:/,/"></mvc:resources>
<context:component-scan base-package="org.Houes.contoller"></context:component-scan>
Hibernate
Hibernate框架式一个开源的对象关系映射(ORM)框架,是对JDBC的轻量级的对象封装,使java程序员可以使用对象思维来操纵DB。
在Hibernate之前,我们是如何操作DB的?JDBC,需要在程序中嵌入SQL语句。效率低下,不能忍啊。但是Hibernate的出现,让我们无需再操纵SQL语句了,每个表实例被实例化为一个java对象,操作DB的时候,只需要操作该实例对象即可。这就是Hibernate所做的事情。是不是有一个问题:这个表实例化成什么对象呢?没错,需要你再手动的创建一个跟表结构(R)相对应的java类(O)。然后将这两者相映射(M),酱子,对表的操作就完全转换为了对类对象的操作。这就是ORM。
-
Hibernate配置文件 可以在idea中生成 如果不用可以用注解方式
对应内容的注解如下:
基本hibernate变成持久化类注解
- @Entity : 标识为hibernate管理的实体类
- @Table(name="") : 对应的表
- @Id : 标识为主键
- @Column : 对应列
- @GeneratorValue : 注解增长策略
- @ManyToOne : 映射多对一
- @JoinColumn : 指定连接列,外键列
- @OneToMany
- @LazyToOne : 多对一延迟加载
- @LazyCollection : 一对多的延迟加载
- @Fetch : 抓取策略
- mappedBy : 属性,关联关系的方向
- @Cascade : 级联
- @ManyToMany
- @JoinTable()
ToOne : 多对一延迟加载
- @LazyCollection : 一对多的延迟加载
- @Fetch : 抓取策略
- mappedBy : 属性,关联关系的方向
- @Cascade : 级联
- @ManyToMany
- @JoinTable()