随笔分类 -  JPA规范

摘要:Employee.java:(基类) 1 @Entity 2 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)//选择继承策略 3 @DiscriminatorColumn(name="type")//配置鉴别器 4 @DiscriminatorValue("0")//设置鉴别器值 5 public class Employee { 6 @Id 7 @GeneratedValue 8 private Integer id; 9 private String name;10 public Integer 阅读全文
posted @ 2011-12-03 19:02 一直在等 阅读(4648) 评论(1) 推荐(1) 编辑
摘要:两个或多个字段组成的主键,我们叫联合主键。在面向对象中,我们用JPA怎么定义这种情况呢?怎么定义联合主键?用面向对象的思想来思考的话,联合主键里的复合主键(字段),可以把它看成一个整体,然后采用一个主键类来描述这个复合主键的字段。关于联合主键类,大家一定要遵守以下几点JPA规范:必须提供一个public的无参数构造函数。必须实现序列化接口。必须重写hashCode()和equals()这两个方法。这两个方法应该采用复合主键的字段作为判断这个对象是否相等的。联合主键类的类名结尾一般要加上PK两个字母代表一个主键类,不是要求而是一种命名风格。AirLinePK.java: 1 @Embeddabl 阅读全文
posted @ 2011-12-03 14:15 一直在等 阅读(12682) 评论(0) 推荐(4) 编辑
摘要:Student.java: 1 @Entity 2 public class Student { 3 @Id 4 @GeneratedValue 5 private Integer id; 6 @Column(length=10,nullable=false) 7 private String name; 8 @ManyToMany 9 @JoinTable(name="student_teacher",joinColumns=@JoinColumn(name="studentId", referencedColumnName="id" 阅读全文
posted @ 2011-12-03 13:12 一直在等 阅读(2056) 评论(0) 推荐(1) 编辑
摘要:Person.java: 1 @Entity 2 public class Person { 3 @Id 4 @GeneratedValue 5 private Integer id; 6 @Column(length=10,nullable=false) 7 private String name; 8 @OneToOne(cascade=CascadeType.ALL,optional=false) 9 @JoinColumn(name="idcard_id")10 private IDCard idcard;11 p... 阅读全文
posted @ 2011-12-02 20:57 一直在等 阅读(2103) 评论(0) 推荐(1) 编辑
摘要:Order.java: 1 import java.util.HashSet; 2 import java.util.Set; 3 4 import javax.persistence.CascadeType; 5 import javax.persistence.Column; 6 import javax.persistence.Entity; 7 import javax.persistence.FetchType; 8 import javax.persistence.Id; 9 import javax.persistence.OneToMany;10 import javax.p. 阅读全文
posted @ 2011-12-01 23:36 一直在等 阅读(5689) 评论(0) 推荐(1) 编辑
摘要:查询语言(JPQL)这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。(跟HQL真的很像- -) 1 @Test 2 public void query(){ 3 EntityManagerFactory factory=Persistence.createEntityManagerFactory("sample"); 4 EntityManager em=factory.createEntityManager(); 5 Query query=em.createQuer... 阅读全文
posted @ 2011-12-01 20:51 一直在等 阅读(4488) 评论(0) 推荐(1) 编辑
摘要:使用jadnt158工具将ejb3-persistence.jar\javax\persistence.class进行反编译得到源码: 1 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. 2 // Jad home page: http://www.kpdus.com/jad.html 3 // Decompiler options: packimports(3) 4 // Source File Name: Persistence.java 5 6 package javax.persisten... 阅读全文
posted @ 2011-11-30 22:44 一直在等 阅读(1924) 评论(0) 推荐(1) 编辑
摘要:我们目前使用的是Hibernate,实际上我们操纵EntityManager对象时,它内部是操纵了Hibernate里面的session对象,只是对session对象做了封装而已。1 @Test2 public void getPerson(){3 EntityManagerFactory factory=Persistence.createEntityManagerFactory("sample");4 EntityManager em=factory.createEntityManager();5 Person p=em.fi... 阅读全文
posted @ 2011-11-30 21:37 一直在等 阅读(4896) 评论(1) 推荐(1) 编辑
摘要:1 import java.util.Date; 2 3 import javax.persistence.Basic; 4 import javax.persistence.Column; 5 import javax.persistence.Entity; 6 import javax.persistence.EnumType; 7 import javax.persistence.Enumerated; 8 import javax.persistence.FetchType; 9 import javax.persistence.GeneratedValue;10 import j.. 阅读全文
posted @ 2011-11-29 22:10 一直在等 阅读(3688) 评论(0) 推荐(1) 编辑
摘要:定于枚举类:1 public enum Gender {2 MAN,WOMAN3 }Person类: 1 import java.util.Date; 2 3 import javax.persistence.Column; 4 import javax.persistence.Entity; 5 import javax.persistence.EnumType; 6 import javax.persistence.Enumerated; 7 import javax.persistence.GeneratedValue; 8 import javax.persistence.I... 阅读全文
posted @ 2011-11-29 21:41 一直在等 阅读(6570) 评论(0) 推荐(1) 编辑
摘要:写实体bean,映射的数据可以采用XML配置方式,也可以采用注解方式,在JPA中推荐大家用注解的方式,因为注解的方式开发应用效率是挺高的。每个实体bean都要有个实体标识属性,这个实体标识属性主要用于在内存里面判断对象。通过@Id就可以定义实体标识。可以标识在属性的get方法前面,也可以标识在字段上面如果我们希望采用数据库的id自增长的方式来生成主键值的话,这时候我们要用到一个注解@GeneratedValue,这注解里面有一些属性,其中一个是策略strategy,生成主键值的方案,JPA里没有Hibernate提供的那么多方案,它提供的方案有如下图:AUTO: JPA自动选择合适的策略,是默 阅读全文
posted @ 2011-11-29 20:57 一直在等 阅读(4628) 评论(0) 推荐(1) 编辑
摘要:接上节:persistence.xml这个配置文件的模板可以从哪里找到呢?因为JPA是一规范,所以你即可以从JPA的规范文档里找到,也可以从任何一个实现了JPA规范的实现产品中找到。好比Hibernate,可以从hibernate-entitymanager-3.4.0.GA\doc\reference\en\html_single\index.html中找到。 1 <?xml version="1.0"?> 2 <persistence xmlns="http://java.sun.com/xml/ns/persistence" xm 阅读全文
posted @ 2011-11-29 20:24 一直在等 阅读(3616) 评论(0) 推荐(1) 编辑
摘要:开发JPA依赖的jar文件注意jar文件不能放在含有中文或是含有空格的路径下,否则可能会出现找不到类或是编译失败的错误。Hibernate核心包(8个文件):hibernate-distribution-3.3.1.GA.ZIPhibernate3.jarlib\bytecode\cglib\hibernate-cglib-repack-2.1_3.jar (CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包)lib\required\*.jarHibernate注解包(3个文件):hibernate-annotations-3.4.0.GA.ZI 阅读全文
posted @ 2011-11-28 23:44 一直在等 阅读(3831) 评论(1) 推荐(2) 编辑
摘要:什么是JPAJPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。从目前的开发社区的反应上看,JPA受到了极大的支持和赞扬,其中就包括了Spring与EJB3.0的开发团队。着眼未来几年的技术走向,JPA作 阅读全文
posted @ 2011-11-27 20:21 一直在等 阅读(11376) 评论(0) 推荐(2) 编辑