SSJ框架整合

JPA导包

Spring和SpringMVC包(web项目的)
SSJ框架整合_第1张图片
用于操作数据库的Springjdbc包和JPA包(jpa是实现ORM规范的)
SSJ框架整合_第2张图片
操作数据的包(其中dbcp包为连接池包)
SSJ框架整合_第3张图片
Spring测试包和AOP包
SSJ框架整合_第4张图片
处理json的包和junit包
SSJ框架整合_第5张图片

Spring配置文件

新建一个applicationContext.xml文件和一个properties文件,properties文件中写入四个内容(ssj为数据库名,username为数据库账号,password为数据库密码)

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///ssj   
username=root
password=123

applicationContext.xml文件中填写


<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
    
    <context:property-placeholder location="classpath:jdbc.properties"/>
    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    bean>
    
    <bean id="entityMannagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        
        <property name="dataSource" ref="dataSource"/>
        
        <property name="packagesToScan" value="cn.itsource.ssj.domain"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                
                <property name="showSql" value="true"/>
                
                <property name="generateDdl" value="true"/>
                
                <property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
            bean>
        property>
    bean>
beans>

然后我们就可以拿到EntityManager了

注解

在类中拿到EntityManager 对象
@PersistenceContext
private EntityManager entityManager;

事务的传播机制:propagation(一共7种)

  •  多个方法之间,比如A方法 去调用B方法 事务就可以进行相互传播
    
  •     A转账
    
  •     B手续费
    
  • Propagation.REQUIRED(常用)

  •  表示当前方法必须运行在事务中。如果当前事务存在,方法将会在该事务中运行。否则,会启动一个新的事务
    
  •      如果A方法有事务 B方法就运行到A方式事务,如果A方法事务 创建一个事务
    
  • Propagation.SUPPORTS(常用)

  •  表示当前方法不需要事务上下文,但是如果存在当前事务的话,那么该方法会在这个事务中运行
    
  •       如果A方法有事务 ,B方法以事务方式运行,如果A方法没有事务 ,B就没有事务方式运行
    
  • Propagation.NEVER

  •  表示当前方法不应该运行在事务上下文中。如果当前正有一个事务在运行,则会抛出异常
    
  •      如果当前方法有事务,就会抛出异常  如果没有事务 正常运行
    
  • Propagation.REQUIRES_NEW

  •  表示当前方法必须运行在它自己的事务中。一个新的事务将被启动。如果存在当前事务,在该方法执行期间,当前事务会被挂起。
    
  •  如果使用JTATransactionManager的话,则需要访问TransactionManager
    

开启事务,propagation 属性为SUPPORTS时,readOnly 为是否只读
@Transactional(propagation = Propagation.SUPPORTS,readOnly = true)

你可能感兴趣的:(SSJ框架整合)