SSJ框架整合

JPA导包

Spring和SpringMVC包(web项目的)
在这里插入图片描述
用于操作数据库的Springjdbc包和JPA包(jpa是实现ORM规范的)
在这里插入图片描述
操作数据的包(其中dbcp包为连接池包)
在这里插入图片描述
Spring测试包和AOP包
在这里插入图片描述
处理json的包和junit包
在这里插入图片描述

Spring配置文件

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

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

applicationContext.xml文件中填写

<?xml version="1.0" encoding="UTF-8"?>
<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">
    <!--加载properti文件-->
    <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>
    <!--得到EntityManagerFactory-->
    <bean id="entityMannagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <!--配置属性 引用上面的dataSource-->
        <property name="dataSource" ref="dataSource"/>
        <!--扫描实体类配置-->
        <property name="packagesToScan" value="cn.itsource.ssj.domain"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <!--是否显示sql-->
                <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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值