JPA的persistence.xml的使用及常见问题
在J2SE项目中:
<?xml version="1.0" encoding="UTF-8" ?> <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"> <persistence-unit name="demo" transaction-type="RESOURCE_LOCAL"><provider>org.hibernate.ejb.HibernatePersistence</provider><class>com.ncs.entity.UserInfo</class><properties> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/> <property name="hibernate.connection.url" value="jdbc:oracle:thin:@127.0.0.1:1522:xe"/> <property name="hibernate.connection.username" value="system"/> <property name="hibernate.connection.password" value="151923"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> </properties> </persistence-unit></persistence>
注意:配置参数hibernate.hbm2ddl.auto 各个取值的含义
validate update create create-drop
这几个参数的作用主要用于:自动创建 更新 验证数据库表结构
如果不是此方面的需求取none
validate:加载hibernate时,验证创建数据库表结构
create:每次加载hibernate,重新创建数据库表结构,这就是导致数据库表结构丢失的原因
create-drop:加载hibernate时创建,退出是删除表结构
update:加载hibernate自动更新数据库结构
常见问题排错:
1.
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named HelloTitan at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34) at Main.main(Main.java:10)
原因:没有Persistence provider
解决办法:错误提示很明显:No Persistence provider.
(1)检查lib:jar丢失,则将需要的lib添加到classpath中,Jboss使用的是hibernate实现,这些lib在下面的目录中能找到
jboss-X\common\lib\
(2)可能provider不对.检查xml文件里面的provider
2.
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: HelloTitan] Unable to build EntityManagerFactory at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34) at Main.main(Main.java:10) Caused by: org.hibernate.HibernateException: Could not find datasource at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:79) at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137) at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:29) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669) ... 4 more Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325) at javax.naming.InitialContext.lookup(InitialContext.java:392) at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:75) ... 11 more
原因:JNDI没有初始化成功
解决办法: 在classpath添加 jnid.properties 文件 (以JBoss为例,配置如下)
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfacesjava.naming.provider.url=127.0.0.1:1099
3.
程序成功运行,但是数据没有写入数据库
原因:没有提交数据
解决办法:em.getTransaction().commit();
附录
Hibernate SQL方言 (hibernate.dialect)
RDBMS | 方言 |
---|---|
DB2 | org.hibernate.dialect.DB2Dialect |
DB2 AS/400 | org.hibernate.dialect.DB2400Dialect |
DB2 OS390 | org.hibernate.dialect.DB2390Dialect |
PostgreSQL | org.hibernate.dialect.PostgreSQLDialect |
MySQL | org.hibernate.dialect.MySQLDialect |
MySQL with InnoDB | org.hibernate.dialect.MySQLInnoDBDialect |
MySQL with MyISAM | org.hibernate.dialect.MySQLMyISAMDialect |
Oracle (any version) | org.hibernate.dialect.OracleDialect |
Oracle 9i/10g | org.hibernate.dialect.Oracle9Dialect |
Sybase | org.hibernate.dialect.SybaseDialect |
Sybase Anywhere | org.hibernate.dialect.SybaseAnywhereDialect |
Microsoft SQL Server | org.hibernate.dialect.SQLServerDialect |
SAP DB | org.hibernate.dialect.SAPDBDialect |
Informix | org.hibernate.dialect.InformixDialect |
HypersonicSQL | org.hibernate.dialect.HSQLDialect |
Ingres | org.hibernate.dialect.IngresDialect |
Progress | org.hibernate.dialect.ProgressDialect |
Mckoi SQL | org.hibernate.dialect.MckoiDialect |
Interbase | org.hibernate.dialect.InterbaseDialect |
Pointbase | org.hibernate.dialect.PointbaseDialect |
FrontBase | org.hibernate.dialect.FrontbaseDialect |
Firebird | org.hibernate.dialect.FirebirdDialect |
JPA的persistence.xml的使用及常见问题相关推荐
- JPA中persistence.xml模板
持久化单元,持久化对象的集合. 事务类型:本地事务和全局事务.某些应用场合,只能使用全局事务. 有两个数据库,mysql和oracle.转账时扣钱从mysql进行,加钱是在oracle执行,怎样确保两 ...
- 不在JPA 的 persistence.xml 文件里配置Entity class的解决的方法
在Spring 集成 Hibernate 的JPA方式中,须要在persistence配置文件里定义每个实体类.这样很地不方便.2种方法能够解决此问题: 这2种方式都能够实现不用在persist ...
- JPA介绍及persistence.xml配置介绍
JPA 全称是:Java Persistence API 是由EJB 3.0软件专家组开发,其宗旨是为POJO提供持久化标准规范,了解JPA 从 persistence.xml 开始.它的作用是用来配 ...
- JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法
原文地址:http://www.cnblogs.com/taven/p/3351841.html JPA 不在 persistence.xml 文件中配置每个Entity实体类的2种解决办法 在Spr ...
- JPA persistence.xml 文件初学者指南
介绍 在本文中,我将解释 JPA persistence.xml配置文件的用途,以及如何使用可用的 XML 标记或属性设置 Java Persistence 应用程序. 虽然 Spring 应用程序可 ...
- java persistence.xml_java – 找不到persistence.xml
我尝试使用jpa与spring-orm和hibernate. 我有带有TRADES表的mysql数据库.我尝试使用jpa使用此表. 我尝试使用persistence.xml测试EntityManage ...
- IDEA配置persistence.xml
persistence.xml 里面需要配置关于Hibernate的信息 以后需要的配置属性都可以在此文件里面找到<persistence xmlns="http://java.sun ...
- Maven 跨项目调用persistence.xml动态配置文件
1.场景 由于业务原因,需要把common项目中的persistence.xml移至database项目中,并且persistence.xml的部分变量是调用了父项目的父级pom.xml的参数. 2. ...
- [JPA] javax.persistence.EntityNotFoundException: Unable to find XXXX with id 0
[JPA] javax.persistence.EntityNotFoundException: Unable to find XXXX with id 0 解决办法是: 原因: 无论是@OneToO ...
最新文章
- 机器学习中,梯度下降算法的问题引入
- 算法--------最大正方形(Java版本)
- Oracle数据库基础入门《二》Oracle内存结构
- 基于BP神经网络+HOG特征提取的视频中车辆车牌识别算法仿真
- java代码是怎么运行的_Java代码是如何运行起来的?
- Python-函数和代码复用
- https://www.unimelb.edu.au/
- 教你怎么屏蔽掉在移动端的宽带运营商的流量劫持,屏蔽无耻的广告
- 计算机数据库系统考研复试面试题,2016年山西财经大学081203计算机应用技术871数据库系统概论复试笔试最后押题五套卷...
- PropertyUtils.copyProperties 属性值复制失败
- 目前常用的室内导航地图有哪些?什么软件可以室内导航?
- FlashFXP,flashfxp使用方法
- 波士顿法律第一至五季/全集Boston Legal迅雷下载
- 仿真软件测试基尔霍夫定律,标签:基尔霍夫定律
- windows10 飞秋不能发送文件 防火墙设置
- 中乾文化,如何树立正确的财富观?
- 微信小程序项目源码网上商城|电商+后台管理系统含论文+PPT+源码
- MATLAB智能算法30个案例分析pdf
- Vue.js 内置了10个过滤器,下面简单介绍它们的功能和用法。
- 使用百度大脑EasyDL创建吸烟监控模型