国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Spring jpa和mybatis整合遇到的問題解析

Spring jpa和mybatis整合遇到的問題解析

2020-06-22 12:32modprobe JAVA教程

有朋友說jpa相比mybatis太難用,多表聯合的查詢寫起來也比較費勁,所以便加入了mybatis的支持,在配置jpa時遇到各種問題,需要修改相關配置文件,下面小編給大家分享下修改配置文件的思路,感興趣的朋友參考下

前一陣子接手了一個使用SpringBoot 和spring-data-jpa開發的項目,后期新加入一個小伙伴,表示jpa相比mybatis太難用,多表聯合的查詢寫起來也比較費勁,所以便加入了mybatis的支持

開始的時候

?
1
2
3
@Configuration
@EnableJpaRepositories("com.xxx.xxx.repository")
class JpaConfig

使用這種方式去配置的jpa,遇到一個問題,就是能select 但是不能save,所以就修改為配置文件的方式:

下面直接上配置文件:

1、spring的配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?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"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:task="http://www.springframework.org/schema/task"
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
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">
<!-- 掃描注解文件 -->
<context:component-scan base-package="com.xxx"/>
<task:annotation-driven/>
<bean id="springContextHolder" class="com.xxx.common.config.SpringContextHolder"
lazy-init="false"></bean>
<bean id="configProperties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath*:jdbc.properties</value>
<value>classpath*:app.properties</value>
</list>
</property>
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="fileEncoding" value="UTF-8"/>
<property name="properties" ref="configProperties"/>
</bean>
<!-- dataSource 配置 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"
destroy-method="close">
<!-- 基本屬性 url、user、password -->
<!-- <property name="driverClassName" value="${ds.driverClassName}" /> -->
<property name="url" value="${ds.url}"/>
<property name="username" value="${ds.username}"/>
<property name="password" value="${ds.password}"/>
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${ds.initialSize}"/>
<property name="minIdle" value="${ds.minIdle}"/>
<property name="maxActive" value="${ds.maxActive}"/>
<!-- 配置獲取連接等待超時的時間 -->
<property name="maxWait" value="${ds.maxWait}"/>
<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${ds.timeBetweenEvictionRunsMillis}"/>
<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${ds.minEvictableIdleTimeMillis}"/>
<property name="validationQuery" value="${ds.validationQuery}"/>
<property name="testWhileIdle" value="${ds.testWhileIdle}"/>
<property name="testOnBorrow" value="${ds.testOnBorrow}"/>
<property name="testOnReturn" value="${ds.testOnReturn}"/>
<!-- 打開PSCache,并且指定每個連接上PSCache的大小 -->
<property name="poolPreparedStatements" value="${ds.poolPreparedStatements}"/>
<property name="maxPoolPreparedStatementPerConnectionSize"
value="${ds.maxPoolPreparedStatementPerConnectionSize}"/>
<!-- 配置監控統計攔截的filters -->
<property name="filters" value="${ds.filters}"/>
<!-- 關閉abanded連接時輸出錯誤日志 -->
<property name="logAbandoned" value="${ds.logAbandoned}"/>
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="typeAliasesPackage" value="com.xxx.culture.domain"/>
<!-- 自動掃描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:mapper/**/*.xml"/>
</bean>
<!-- DAO接口所在包名,Spring會自動查找其下的類 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xxx.xxx.dao"/>
</bean>
<!-- (事務管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 事務管理 通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<!-- 對insert,update,delete 開頭的方法進行事務管理,只要有異常就回滾 -->
<tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Throwable"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.Throwable"/>
<tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Throwable"/>
<tx:method name="remove*" propagation="REQUIRED" rollback-for="java.lang.Throwable"/>
<tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Throwable"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="flush*" propagation="REQUIRED"/>
<!-- select,count,get,find開頭的方法,開啟只讀,提高數據庫訪問性能 -->
<tx:method name="select*" read-only="true"/>
<tx:method name="count*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="search*" read-only="true"/>
<!-- 對其他方法 使用默認的事務管理 -->
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!-- 事務 aop 配置 com.xxx.smp.service..*Impl.*(..)) -->
<aop:config>
<aop:pointcut id="serviceMethods"
expression="execution(* com.xxx.xxx.service..*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
</aop:config>
<!-- 配置使Spring采用CGLIB代理 -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
<!-- 事務注解支持 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<import resource="applicationContext-jpa.xml"/>
</beans>

2、jpa的配置

初始時遇到一個問題:jpa org.hibernate.LazyInitializationException: could not initialize proxy - no Session

配置如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?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:tx="http://www.springframework.org/schema/tx"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd" >
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- 指定數據源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 指定Entity實體類包路徑 -->
<property name="packagesToScan">
<list>
<value>com.xxx.xxx.jpadomain</value>
</list>
</property>
<!-- 指定JPA屬性;如Hibernate中指定是否顯示SQL的是否顯示、方言等 -->
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!-- 是否生成ddl文件 -->
<property name="generateDdl" value="true"/>
<!-- 是否展示sql -->
<property name="showSql" value="false"/>
<!-- 必要的數據庫庫使用的詳細信息 -->
<property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
<!-- mysql,自行選擇 -->
<property name="database" value="MYSQL"/>
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy
</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
</props>
</property>
</bean>
<!-- Spring Data Jpa配置 -->
<!-- 配置 啟用掃描并自動創建代理的功能 factory-class="com.monk.base.jpa.PeakJpaRepositoryFactory"自己定義的bean注解方式,可以不寫,直接注解所有包下的 -->
<jpa:repositories base-package="com.xxx.xxx.repository"
transaction-manager-ref="transactionManager"
entity-manager-factory-ref="entityManagerFactory"/>
<!-- Jpa 事務配置 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<!-- 開啟注解事務 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
</beans>

以上所述是小編給大家介紹的Spring jpa和mybatis整合遇到的問題解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/modprobe/p/5675809.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲高清在线视频 | 日本不卡一区二区 | 国产一区中文字幕 | 亚洲片国产一区一级在线观看 | 午夜成人在线视频 | 久久久久久国产 | 久久中文字幕电影 | 日本精品视频一区二区 | 高清国产一区二区三区四区五区 | 黄色av网站免费看 | 国产精品一区二区三区四区 | 欧美一区二区在线免费观看 | 日韩一日 | 久久久久99 | 亚洲综合在线一区 | 欧美黄色性视频 | 美日韩免费视频 | 毛片网站大全 | 91国自产精品中文字幕亚洲 | 国产中文字幕一区 | 成人一区二区三区久久精品嫩草 | 91麻豆精品国产91久久久更新资源速度超快 | 色在线观看视频 | 毛片免费在线播放 | 日韩一区二区三区四区 | 欧美日韩久久 | 97人人草 | 日本99精品| 欧美日韩国产在线播放 | 成人激情视频免费在线观看 | 亚洲精品久久久 | 国产精品久久久爽爽爽麻豆色哟哟 | 一区二区三区精品 | 蜜桃视频一区 | 精品一区二区久久 | 国产精品亚洲精品 | 性色aⅴ免费视频 | 亚洲精品乱码久久久久久蜜糖图片 | 亚洲五月婷婷 | 国产在线视频网 | 免费在线一区二区 |