1.配置EntityManagerFactory(类似与SessionFactory)和事务
原理:
使用Spring提供的LocalContainerEntityManagerFactoryBean来整合JPA,获取EntityManagerFactory;
事务通过JpaTransactionManager来管理,需要注入EntityManagerFactory
applicationContext.xml:
<!-- 引入外部属性文件 -->
<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:
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:xe
jdbc.user=test
jdbc.password=test
启动tomcat测试:看控制台