JPA一个最简单的Demo
首先,环境准备
JDK1.7 、Eclipse 、MYSQL
【第一步:找jar包】
由于JPA的实现由很多,在这里使用的是hibernate对JPA的实现,所以所有的jar包都是使用的hibernate的,所以需要到hibernate官网下载所有的hibernate的jar包。
网址:http://hibernate.org/
这里我下载的文件是:hibernate-release-4.3.5.Final.zip
解压以后呢,在该解压的文件夹中找齐以下的jar包:
(具体jar包看附件)
【第二步:准备JPA的配置文件】
在项目中的src下创建一个文件夹:META-INF
在META-INF下面创建XML文件:persistence.xml
在persistence.xml文件中加入以下的内容:
<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" version="2.1"> <persistence-unit name="JPA" transaction-type="RESOURCE_LOCAL"> <!-- 供应商 --> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <!-- 参数:数据库驱动名、地址、用户、密码、方言、显示执行SQL语句 --> <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver"/> <property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1:3306/world"/> <property name="hibernate.connection.username" value="root"/> <property name="hibernate.connection.password" value="root"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.show_sql" value="true"/> <!-- 其他设置 --> <property name="minPoolSize" value="5"/> <property name="initialPoolSize" value="10"/> <property name="idleConnectionTestPeriod" value="120"/> <property name="acquireIncrement" value="10"/> <property name="checkoutTimeout" value="3600"/> <property name="numHelperThreads" value="4"/> <property name="maxStatements" value="400"/> <property name="maxStatementsPerConnection" value="20"/> <property name="maxIdleTime" value="180"/> <property name="acquireRetryAttempts" value="30"/> <property name="maxPoolSize" value="200"/> </properties> </persistence-unit> </persistence>
注意:上面的配置的内容,特别是数据库的路径,用户名和密码需要更具自己的情况配置
【第三步:在数据库中创建测试表格,city,看附件2014-10-16_113529.png】
【第四步:创建对应的实体类即Java文件CityBean.java】
package bean; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; /** * * @author 青山 * @date 2014年10月16日 * @file name: CityBean.java * Columns:ID Name CountryCode District Population */ @Entity //@Entity将JavaBean标示为实体 @Table(name="city") //@Table该实体类对应的数据库中的表的名称 public class CityBean { @Id //Id标示该字段为主键 @Column(name="id")//Column标示该属性对应数据库中的哪个字段 private int cityId; @Column(name="Name") private String cityName; @Column(name="CountryCode") private String countryCode; @Column(name="District") private String district; @Column(name="Population") private long population; public int getCityId() { return cityId; } public void setCityId(int cityId) { this.cityId = cityId; } public String getCityName() { return cityName; } public void setCityName(String cityName) { this.cityName = cityName; } public String getCountryCode() { return countryCode; } public void setCountryCode(String countryCode) { this.countryCode = countryCode; } public String getDistrict() { return district; } public void setDistrict(String district) { this.district = district; } public long getPopulation() { return population; } public void setPopulation(long population) { this.population = population; } public String toString(){ return this.cityId+" "+this.cityName+" "+this.countryCode+" "+this.district+" "+this.population; } }
【第五步:使用工厂模式编写测试使用的管理类】
package util; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; /** * * @author 青山 * @date 2014年10月16日 * @file name: JPAManagerFactory.java */ public class JPAManagerFactory { /** * 这个类其实最主要的就下面两句代码 EntityManagerFactory fac = Persistence.createEntityManagerFactory("JPA"); EntityManager manager = fac.createEntityManager(); */ private static JPAManagerFactory factory; private static EntityManagerFactory emfactory; /* * 私有的构造方法 */ private JPAManagerFactory(){ } public static JPAManagerFactory getMFInstance(){ if(factory==null){ return new JPAManagerFactory(); }else{ return factory; } } public EntityManager getManager(){ if(emfactory==null){ emfactory = Persistence.createEntityManagerFactory("JPA"); } return emfactory.createEntityManager(); } public void closeFactory(){ if(emfactory!=null){ emfactory.close(); } } }
【第六步:测试】
package com.jpa.test; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; import util.JPAManagerFactory; import bean.CityBean; /** * * @author 青山 * @date 2014年10月16日 * @file name: CityBeanTest.java */ public class CityBeanTest { public static void main(String[] args) { EntityManager manager = JPAManagerFactory.getMFInstance().getManager(); //获取事务 EntityTransaction t = manager.getTransaction(); //开启事务 t.begin(); // 通过主键查找一个指定的对象 CityBean c1 = manager.find(CityBean.class, 1); System.out.println("find: "+c1.toString()); //添加一个对象到数据库 CityBean c2 = new CityBean(); c2.setCityId(10001); c2.setCityName("HongKong"); c2.setCountryCode(c1.getCountryCode()); c2.setDistrict(c1.getDistrict()); manager.persist(c2); System.out.println("add: "+c2.toString()); //修改一个数据 CityBean c3 = manager.find(CityBean.class, 10001); c3.setCityName("ShangHai"); c3.setPopulation(2000000); manager.persist(c3);//如果该数据存在就进行更新,如果不存在就进行插入 manager.refresh(c3);//并非更新数据,而是重新从数据库中把数据拿出来并放入c3 System.out.println("update: "+c3.toString()); //删除一个数据 manager.remove(c3); //提交 t.commit(); manager.close(); JPAManagerFactory.getMFInstance().closeFactory(); } }
对于初学的人来说,我想先有个直观的例子是非常重要的。网上找了一些例子,然后结合自己的理解写了上面的JPA的一个最简单的实现,当然了,这里还没有涉及关系的管理,慢慢加。
相关推荐
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
赠送jar包:hibernate-jpa-2.1-api-1.0.2.Final.jar; 赠送原API文档:hibernate-jpa-2.1-api-1.0.2.Final-javadoc.jar; 赠送源代码:hibernate-jpa-2.1-api-1.0.2.Final-sources.jar; 赠送Maven依赖信息文件:...
hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码 hibernate-jpa-2.1-api-1.0.0.final-sources.jar 源码
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.0-api-1.0.1.Final-sources.jar hibernate jpa 源代码
`hibernate-jpa-2.1-api-1.0.0.final.jar`是Hibernate对JPA 2.1规范的实现库,它使得开发者能够使用Hibernate的高效功能同时遵循JPA规范。 **1. Hibernate与JPA的关系** Hibernate最初作为一个独立的ORM框架,后来...
hibernate-jpa-2.1-api-1.0.0.Final.jar官方下载,请放心使用
java.lang.NoClassDefFoundError: javax/persistence/spi/ProviderUtil 或javax/persistence/entitylistener问题
java运行依赖jar包
这个源码包"hibernate-jpa-2.0-api-1.0.1.Final-sources"包含了完整的源代码,可以帮助我们深入了解其内部机制,从而更好地应用在实际项目中。 1. **JPA简介**:Java Persistence API(JPA)是Java平台上的一个标准...
本篇文章将重点围绕“hibernate-jpa-2.1-api-1.0.0.final-sources.jar.zip”这一压缩包,深入解析Hibernate对JPA 2.1 API的实现,以期帮助读者深入理解其内部机制。 JPA(Java Persistence API)是Java平台上的一个...
《Querydsl-JPA-Codegen 3.3.3与JBugmenot开源项目解析》 在IT领域,开源项目是推动技术发展的重要力量。本文将深入探讨两个相关的开源项目——"querydsl-jpa-codegen-3.3.3.zip" 和 "JBugmenot.zip",它们分别在...
总结来说,"springboot-jpa-activiti-bootstrap-master"项目是一个集成了SpringBoot、JPA和Activiti的实战案例,它涵盖了后端开发的多个重要环节,对于想要提升企业级应用开发能力的开发者来说,这是一个非常有价值...
**标题详解:** "hibernate-jpa-2.1-api 1.0.0.Final API" 这个标题指的是Hibernate对Java Persistence API (JPA) 2.1规范的实现,版本为1.0.0.Final。Hibernate是Java领域中最受欢迎的对象关系映射(ORM)框架之一...
标签:activemq-jpa-store-5.0.0-sources.jar,activemq,jpa,store,5.0.0,sources,jar包下载,依赖包
hibernate-jpa-2.1-api-1.0.2
java jar包,亲测试可用 安全,可以对其进行数字签名,只让能够识别数字签名的用户使用里面的东西。 加快下载速度; 压缩,使文件变小,与ZIP压缩机制完全相同。 ...能够让JAR包里面的文件依赖于统一版本的类文件。...