1.配置EntityManagerFactory(类似与SessionFactory)和事务
原理:
使用Spring提供的LocalContainerEntityManagerFactoryBean来整合JPA,获取EntityManagerFactory;
事务通过JpaTransactionManager来管理,需要注入EntityManagerFactory
applicationContext.xml:
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
<!-- 引入外部属性文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 实体管理工厂 -->
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- 数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 扫描实体类 -->
<property name="packagesToScan" value="cn.itcast.bos.domain" />
<!—JPA供应商适配:数据库和方言 -->
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!-- 数据库类型配置 -->
<property name="database" value="ORACLE" />
<!-- 是否自动生成DDL建表 -->
<property name="generateDdl" value="true" />
<!-- 配置dialect方言 -->
<property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect"/>
<!-- 打印sql -->
<property name="showSql" value="true"/>
</bean>
</property>
<!-- 配置hibernate的其他属性 -->
<property name="jpaProperties">
<props>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
</bean>
<!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<!-- 注解驱动 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
db.properties:
1
2
3
4
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
jdbc.user=test
jdbc.password=test
启动tomcat测试:看控制台
2.3.2.Spring Data JPA的Repository(DAO)编写
Springdatajpa整合jpa(写dao接口+配置扫描—约定机制-它的整合相当于零配置)
Spring Data JPA的编程方式和以前不同。(无需写实现类,只需要写接口)
它的DAO(Repository)已经写好了默认的实现类,对于大部分通用功能,我们只需要提供接口即可使用。
使用方法:我们构建一个接口,继承如下的任意接口即可使用其内部提供的功能。
我们开发的方式是:自己的接口直接继承JpaRepository,如下:
提示:不需要写实现,因为SimpleJpaRepository已经帮你实现了(内置功能)。
测试:
一般我们在业务层进行测试。因此,编写业务层,编写业务方法进行测试:
【回顾】
之前的Spring注解开发,需要分别在DAO和Service上添加注解(@Repository和@Service),然后在Service中使用@Autowired注入DAO。
【现在】
当DAO被Spring Data管理后,在DAO上就无需添加@Repository注解(也无法添加,因为无实现类)。
如何让DAO被Spring Data管理?需要在applicationContext.xml中配置对DAO的扫描,该配置会自动扫描继承Repository接口的类,作为Spring的bean。而你之后要做的仅仅是在Service中注入DAO即可。
最后
以上就是称心板凳最近收集整理的关于2.3.1.Spring 整合 JPA的全部内容,更多相关2.3.1.Spring内容请搜索靠谱客的其他文章。
发表评论 取消回复