序:同样的文件(persistence.xml)在不同时期(jpa和spring整合前,后),在不同地点(不同的测试方法中)中的内容是不一样的。
1:时间:jpa未和spring整合之前,地点在下面的测试方法当中:
/**
* jpa未和spring集成整合之前的测试方法,会扫描所有的实体类,,生成所有的数据表(标记为entity的类)
*/
public void test(){
Persistence.createEntityManagerFactory("itcast");
}
persistence.xml文件必须是:
<?xml version="1.0"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<!-- file:///D:\hibernate\hibernate-entitymanager-3.3.2.CR1\resources\org\hibernate\ejb\persistence_1_0.xsd -->
<persistence-unit name="itcast" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="123456"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.jdbc.fetch_size" value="18"/>
<property name="hibernate.jdbc.batch_size" value="10"/>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.format_sql" value="false"/>
</properties>
</persistence-unit>
</persistence>
其中的红色四行是必须有的,否则在运行方法:
public void test(){
Persistence.createEntityManagerFactory("itcast");
}
的时候,就会报
No suitable driver found for jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8的异常
或者是java.lang.UnsupportedOperationException: The user must supply a JDBC connection(根据这四条语句的先后顺序不同,会报不同错误)
/**
* jpa未和spring集成整合之前的测试方法,该方法将生成一条记录
*/public void test1(){
EntityManagerFactory factory = Persistence.createEntityManagerFactory("itcast");
EntityManager em = factory.createEntityManager();
em.getTransaction().begin();
em.persist(new ProductType());
em.getTransaction().commit();
em.close();
factory.close();
}
2:时间:jpa未和spring整合之后,地点在下面的测试方法当中:
/**
* jpa未和spring集成整合之后的测试方法
*/
public void test2(){
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
ProductTypeService productService = (ProductTypeService)ctx.getBean("productTypeServiceBean");
ProductType type = new ProductType();
type.setName("瑜伽用品");
type.setNote("好产品");
productService.save(type);
}
Juni会报这样的错:org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:375)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:263)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy17.save(Unknown Source)
at junit.test.ProductTest.test2(ProductTest.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.lang.UnsupportedOperationException: Not supported by BasicDataSource
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:899)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:44)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:417)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:70)
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:330)
... 23 more
而相应的MyEclipse控制台会报这样的错:
java.lang.UnsupportedOperationException: Not supported by BasicDataSource
这是因为在集成完spring以后,beans.xml里有这样的一句话:
<context:property-placeholder location="classpath:jdbc.properties"/>
而jdbc.properties:
driverClassName=org.gjt.mm.mysql.Driver
url=jdbc:mysql://localhost:3306/itcast?useUnicode=true&characterEncoding=UTF-8
username=root
password=root
initialSize=1
maxActive=100
maxIdle=8
minIdle=1
而jdbc.properties文件中的红色的4句和persistence.xml文件中的红色的四句是有冲突的,所以才出现了上面的错误,所以把persistence.xml文件中的红色的四句去掉就可以了。
总结:最大的收获就是同样的代码比如说A代码你测验过是好使的,但是假如你又写了代码B,那么即使代码A你从来没修改过,那么A也很有可能因为代码B出现的原因而不能运行了!
分享到:
相关推荐
至于`lib1`这个文件,可能包含了整合所需的一些依赖库,比如Struts2、Spring和JPA实现的JAR包,以及可能的数据库驱动和其他支持库。确保这些库被正确地添加到项目的类路径中是成功整合的基础。 总的来说,Struts2、...
在企业级Java开发中,Struts2、JPA(Java Persistence API)和Spring框架的整合是常见的技术栈选择,它们各自扮演着不同的角色,共同构建出强大的MVC(Model-View-Controller)架构应用。Struts2作为表现层框架,...
**SpringData、Spring和JPA整合详解** 在Java企业级开发中,Spring框架因其强大的功能和灵活的架构设计,已经成为主流的开发选择。SpringData和JPA(Java Persistence API)则是Spring框架的重要扩展,用于简化数据...
本教程将深入探讨如何在Spring Boot项目中整合Spring Data JPA,实现高效且简洁的数据持久化。 首先,Spring Boot整合Spring Data JPA的基础是引入相关的依赖。在`pom.xml`或`build.gradle`文件中,我们需要添加...
**JPA整合Spring源码详解** 在现代Java开发中,对象关系映射(ORM)框架如Java Persistence API(JPA)和Spring框架的结合使用,极大地简化了数据库操作。本篇将深入探讨JPA与Spring整合的源码实现,帮助开发者理解...
《JPA与Spring的深度整合:打造高效数据库操作框架》 在现代企业级应用开发中,数据管理是不可或缺的一部分。Java Persistence API(JPA)作为Java平台上的对象关系映射(ORM)标准,使得开发者可以使用面向对象的...
Spring整合JPA与MySQL是现代Java企业级应用中常见的数据持久化方案,它结合了Spring框架的灵活性和Java Persistence API(JPA)的强大功能,同时利用MySQL作为关系型数据库,提供高效、便捷的数据存储和查询能力。...
整合Spring和JPA的过程主要包括以下步骤: 1. **依赖配置**:在项目中引入Spring Data JPA和JPA供应商(如Hibernate)的依赖。这通常在Maven或Gradle的配置文件中完成。例如,在Maven的`pom.xml`中,你需要添加如下...
Spring Boot 整合 Spring Data JPA** - **环境搭建**:在 Maven 项目中添加相关依赖,包括 `spring-boot-starter-data-jpa`、数据库驱动(如 MySQL)、连接池(如 Druid),以及 Spring Boot 的父依赖 `spring-...
spring4.1.0已经正式发布了,整合一下使用spring mvc和springData和jpa的使用。 内含有详细的注释解释和完整的JAR包资源,导入工程即可使用,方便学习。
在Java Web开发领域,JPA(Java Persistence API)、Spring框架和Struts框架的整合是常见的技术栈,它们各自扮演着不同的角色,共同构建出高效、灵活的Web应用程序。下面将详细介绍这三个关键技术及其整合过程。 **...
通过使用Spring Data JPA,开发者可以避免编写大量的JPA(Java Persistence API)和SQL代码,专注于业务逻辑。本笔记将深入探讨Spring Data JPA的核心概念、功能以及如何在实际项目中应用。 首先,我们需要理解JPA...
**Spring 整合 JPA 简单实例** 在现代的Java开发中,Spring框架与JPA(Java Persistence API)的结合使用已经成为了一个常见的实践,它简化了数据库操作,提供了对象关系映射(ORM)的功能。JPA是Java EE的一部分,...
在Java Web开发中,Spring MVC和JPA(Java Persistence API)以及Hibernate作为ORM(对象关系映射)框架的实现,是构建高效、可维护性的应用的常见选择。本示例将探讨如何将这三个组件整合在一起,以实现一个完整的...
综上所述,这个实例提供了一个完整的Java Web开发环境,展示了如何使用Spring Data JPA、Spring 4.2、Spring MVC和Hibernate 4.3进行数据操作,以及如何利用Maven进行项目管理,同时借助IntelliJ IDEA提升开发效率。...
**Spring 2.5 整合 JPA 概述** Spring 框架以其高度的灵活性和可扩展性,已经成为Java开发中不可或缺的部分。在Spring 2.5版本中,它进一步增强了对Java Persistence API (JPA)的支持,使得开发者能够更加方便地将...
在这个"jpaSpring整合demo"中,我们看到开发者通过Spring框架来配置和管理JPA,以便更好地处理数据库交互。 **Hibernate**是JPA的一个实现,它是一个强大的ORM框架,能够自动将Java对象转换为SQL语句,反之亦然。在...
Spring Data JPA API。 Spring Data JPA 开发文档。 官网 Spring Data JPA API。
这是整合SpringMVC+Spring+SpringDataJPA+Hibernate简单的实现登录的功能,用的是mysql数据库,这是一个web Project 如果你用的是JavaEE6那么你要注意bean-validator.jar和weld-osgi-bundle.jar与slf4j的jar包冲突。...