- 浏览: 443830 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (354)
- 面向对象分析设计/系统架构 (12)
- Mysql/Orcal11g (13)
- JSP/Java//Python/Xharbour (66)
- 软件测试 (21)
- 信息安全小知识 (1)
- Android (5)
- IT生活/哲学/兵法 (23)
- 软件工程/UML/需求分析学习与实践 (6)
- 操作系统/网络/组成原理 (9)
- 持续集成Maven/Hudson/自动化测试 (9)
- eBay /Paypal developer (10)
- Hadoop/HBase/Solr (0)
- 重构分析及其思考 (2)
- 企业架构 (7)
- 分析模式/设计模式 (4)
- SSH学习笔记 (1)
- Quartz及其JWatch监控 (0)
- Linux服务器 (0)
- ExtJs学习笔记 (1)
- 重读java编程思想 (3)
- ESB/SOA/WebServices (0)
- SpringMVC/Struts/Hibernate/Spring (7)
- Xharbour/Pelles C/ SQLite3 (0)
- Magento 电商 (1)
- Object C (1)
- note/redis (0)
- SpringBoot (0)
最新评论
-
snow8261:
太粗略了。
企业架构之数据架构 -
haithink:
面试成功没?
JVM 加载Class文件的原理及其机制 -
feisi0003731843:
不好意思我没有重启,重启后好多了,可有的地方回放还是不成功的。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
feisi0003731843:
这个好像不行吧,我试过了不好使啊。还是用id来做的。不能用啊。 ...
Selenium IDE测试ExtJs一种测试解决办法 -
yuchensuifeng:
您好,静态页面是可以的,但是,我指定error-page为js ...
JSP创建错误处理页面
简单总结下,JPA的入门。在学习JPA的时候运用参考Hibernate的知识来进行学习。
开发环境及其配置:
Eclipse3.5
依赖包:
antlr-2.7.6.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-entirymanager.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
infinispan-core-4.0.0.FINAL.jar
javassist-3.9.0.GA.jar
jbosscache-core-3.2.1.GA.jar
jta-1.1.jar
oscache-2.1.jar
proxool-0.8.3.jar
slf4j-api-1.5.8.jar
slf4j-nop-1.5.2.jar(注意这个包,一定要)
swarmcache-1.0RC2.jar
数据库驱动包:
mysql-connector-java-5.1.6-bin.jar
在src目录下建立META-INF,并且在该目录下建立一个persistence.xml文件
以上基本上就配置好开发环境了。
下面看看persistence.xml的文件
如果之前学过Hibernate的话,Properties里面的内容应该很清楚的,如果不清楚看了以上内容应该也很清楚。
这个 <persistence-unit name="test" transaction-type="RESOURCE_LOCAL" >就是体现JPA的东西了。什么意思呢?name这个先不说,待会看程序中的引用在来介绍。
transaction-type是事物类型。事物类型包括全局类型和本地类型。在不牵涉多个不同数据库的时候,一般使用本地事物。
下面给出一个Domain类
在实体类中@xx表示的是标签。
下面 看看test类
以上基本上能够构建一个JPA开发环境并且基本的操作能够了解。至于配置一对多,多对一,多对多等将在后续给出学习比较和实现。
开发环境及其配置:
引用
Eclipse3.5
依赖包:
antlr-2.7.6.jar
c3p0-0.9.1.jar
cglib-2.2.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
ehcache-1.5.0.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-entirymanager.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
infinispan-core-4.0.0.FINAL.jar
javassist-3.9.0.GA.jar
jbosscache-core-3.2.1.GA.jar
jta-1.1.jar
oscache-2.1.jar
proxool-0.8.3.jar
slf4j-api-1.5.8.jar
slf4j-nop-1.5.2.jar(注意这个包,一定要)
swarmcache-1.0RC2.jar
数据库驱动包:
mysql-connector-java-5.1.6-bin.jar
在src目录下建立META-INF,并且在该目录下建立一个persistence.xml文件
以上基本上就配置好开发环境了。
下面看看persistence.xml的文件
<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="test" transaction-type="RESOURCE_LOCAL" > <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> <property name="hibernate.connection.url" value="jdbc:mysql://localhost/hibernate"/> <property name="hibernate.connection.user" value="root"/> <property name="hibernate.connection.password" value="123456"/> </properties> </persistence-unit> </persistence>
如果之前学过Hibernate的话,Properties里面的内容应该很清楚的,如果不清楚看了以上内容应该也很清楚。
这个 <persistence-unit name="test" transaction-type="RESOURCE_LOCAL" >就是体现JPA的东西了。什么意思呢?name这个先不说,待会看程序中的引用在来介绍。
transaction-type是事物类型。事物类型包括全局类型和本地类型。在不牵涉多个不同数据库的时候,一般使用本地事物。
下面给出一个Domain类
mport java.util.Date; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; @Entity //申明是一个实体,也就是实体 @Table(name="test_Person") //申明实体对应数据表的名字 public class Person { private Integer id; private String name; private Date birthday; private Gender gender = Gender.MAN; //设置默认值 private String info;//大文本 private Byte[] file; //字节数据 private String imagepath; //该字段不持久化 public Person(){} public Person(String name){ this.name = name; } @Id @GeneratedValue(strategy=GenerationType.AUTO) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Temporal(TemporalType.DATE) public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } @Column(length=10,nullable=false) public String getName() { return name; } public void setName(String name) { this.name = name; } @Transient //不在数据表中生成一个imagepath字段 public String getImagepath() { return imagepath; } public void setImagepath(String imagepath) { this.imagepath = imagepath; } @Lob @Basic(fetch=FetchType.LAZY)//进行懒加载 public Byte[] getFile() { return file; } public void setFile(Byte[] file) { this.file = file; } @Lob public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }
在实体类中@xx表示的是标签。
下面 看看test类
import java.util.List; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; import javax.persistence.Query; import org.junit.BeforeClass; import org.junit.Test; import cn.itcast.domain.Person; public class PersonTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void save(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");//这里就是获取<persistence-unit name="test" >的name值 //-->sessionFactory ---> session --> begin事务 EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 em.persist(new Person("dave")); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void getPerson(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");//这里就是获取<persistence-unit name="test" >的name值 EntityManager em = factory.createEntityManager(); Person person = em.find(Person.class,1); System.out.println(person.getName()); em.close(); factory.close(); } @Test public void getPerson2(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");");//这里就是获取<persistence-unit name="test" >的name值 EntityManager em = factory.createEntityManager(); Person person = em.getReference(Person.class,1); //延迟加载 System.out.println(person.getName()); em.close(); factory.close(); } //新建状态 //托管状态 //游离状态 //删除状态 @Test public void UpdatePerson(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Person person = em.find(Person.class,1); person.setName("江都西"); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void UpdatePerson2(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Person person = em.find(Person.class,1); em.clear();//把实体管理器中的所有实体变为游离状态 person.setName("蒋笃淅"); em.merge(person); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void Delete(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Person person = em.find(Person.class,1); em.remove(person); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void query(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); Query query = em.createQuery("select o from Person o where o.id=?1"); query.setParameter(1, 2); List<Person> person = query.getResultList(); for(Person p:person){ System.out.println(p.getName()); } em.close(); factory.close(); } @Test public void deletequery(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Query query = em.createQuery("Delete from Person o where o.id=?1"); query.setParameter(1, 3); query.executeUpdate(); em.getTransaction().commit(); em.close(); factory.close(); } @Test public void queryUpdate(){ EntityManagerFactory factory = Persistence.createEntityManagerFactory("test"); EntityManager em = factory.createEntityManager(); em.getTransaction().begin();//开始事务 Query query = em.createQuery("Update Person o set o.name=:name where o.id=:id"); query.setParameter("name", "蒋笃淅"); query.setParameter("id", 3); query.executeUpdate(); em.getTransaction().commit(); em.close(); factory.close(); } }
以上基本上能够构建一个JPA开发环境并且基本的操作能够了解。至于配置一对多,多对一,多对多等将在后续给出学习比较和实现。
发表评论
-
java实现读取文件下所有的excel文件
2012-08-10 09:30 2010最近处理一个压缩包,里面有几百上千个excel文件。本来 ... -
在firefox浏览器下出现如果引用外部连接不存在会隐藏红叉
2012-07-23 15:38 960在firefox下引用出错的一些图片会隐藏红叉。而在IE下 ... -
java 字符替换的一些问题值得记录下
2011-09-30 16:40 844最近在处理一些字符串的替换中发生的一些问题。 最近需要临 ... -
ExtJs学习之弹出框,提示框,输入框等框
2011-06-23 22:13 92651.ExtJs之消息框: 语法:Ext.MessageB ... -
FreeMarker学习之概念
2010-08-04 10:12 829FreeMarker概述: 引用 1. ... -
HTML标准属性
2010-07-03 20:35 723核心属性(Core attributes) 以下标签 ... -
HTML标签
2010-07-03 20:14 965HTML 4.01 / XHTML 1.0 参考手册 按字母 ... -
HTML基础
2010-07-03 00:54 736基于Web前端技术是有HTML静态语言向现在的JaveSc ... -
Struts2的开发规范和技巧
2010-05-28 14:56 1199基于Struts2的开发,如果没有足够的经验和规范做支撑,并不 ... -
第一次的Struts2的一个异常记录
2010-05-28 14:22 987在配置正确struts.xml、web.xml、Action类 ... -
Java处理Excel全解一
2010-05-25 10:00 2150在获取客户需求的时候 ... -
Java EE 6 规范之平台概述
2010-05-22 21:28 2179JavaTM平台企业版(Java EETM)的概述 体系结构 ... -
Python3入门学习
2010-05-14 14:51 2193在学习一门计算机语言的时候,首先接触的入门程序基本上都是& ... -
Python3操作文件,目录和路径
2010-05-14 11:48 34651.遍历文件夹和文件 ... -
内存溢出
2010-04-22 14:23 1382java SE应用程序共同的问 ... -
JPA之ManyToMany的处理
2010-04-18 14:17 4475在处理关系中,最为麻烦的可能是多对多的关系处理,因为多对多 ... -
JPA之OneToOne关系处理
2010-04-18 14:05 3906在很早学习关系数据库的时候学过一对多,多对一,一对一,多对多的 ... -
JPA之OneToMany和ManyToOne处理
2010-04-18 13:52 18886前面介绍和总结了JPA ... -
JPA2.0的学习一
2010-04-15 17:18 8578Java EE 5平台引入了Java ... -
读取Properties文件的一些方法
2010-03-13 22:53 1122读取Properties文件常见的 ...
相关推荐
第二部分详细讲解了jsf ri、jta、jndi、rmi、jms、javamail、ejb 3的session bean、message driven bean、jpa、jax-ws 2、jaas等java ee知识,这部分知识以jsf+ejb 3+jpa整合开发为重点,通过使用netbeans ide工具...
Spring Data JPA 晋级提升篇:复杂场景实战用法与优化 Session与CompletableFuture的使用遇到的一些坑 SpringDataJpa之Hibernate5.0的Entity判断Dirty的过程 SpringDataJPA之Hibernate加载过程 高级用法学习资料: ...
SpringBoot是由Pivotal团队研发的,SpringBoot并不是一门新技术,只是将之前常用的Spring,SpringMVC,data- jpa等常用的框架封装到了一起,帮助你隐藏这些框架的整合细节,实现敏捷开发。简单来说,SpringBoot就是...
入门篇(Basics) SpringBoot(一)_快速实战搭建项目 SpringBoot(二)_项目属性配置 SpringBoot(三)_controller的使用 SpringBoot(四)_SpringDataJPA的使用 SpringBoot(五)_表单验证 SpringBoot(六)_AOP统一处理请求 ...
通过大量的实战编码进行讲解,课程以...第二章:springboot核心功能第三章:热部署的几种模式第四章:Web开发的各种技术第五章:数据访问层:spring data jpa、jdbctemplate、mybatis、redis第六章:异常相关的处理
第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化...
第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化...
第1篇为入门篇,内容包括Java Web开发 概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过 滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的 使用、如何自定义标签、资源国际化...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...
第1篇为入门篇,内容包括Java Web开发概述等;第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、...