北在北方

太白枝头看,花开不计年,杯中浮日月,楼外是青天。

导航

随笔分类 -  JPA

摘要:JPA2.0和Spring集成,persistence.xml文件可以需要,也可以不需要。 需要persistence.xml的只需做如下简单的配置:<?xml version="1.0" encoding="UTF-8"?><persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 阅读全文

posted @ 2012-11-09 22:47 CN.programmer.Luxh 阅读(1779) 评论(1) 推荐(0)

摘要:针对数据的增删改查,使用JPA做一些常用的封装。 一个基础DAO接口和一个DAO接口的实现类。 1、基础DAO接口BaseDaopackage cn.luxh.app.dao.common;import java.util.List;import cn.luxh.app.util.Pagination;import cn.luxh.app.util.QueryCondition;/** * interface <code>BaseDao</code> DAO接口,封装常用的数据库操作 * * @author Luxh */public interface BaseDao 阅读全文

posted @ 2012-08-19 14:30 CN.programmer.Luxh 阅读(3665) 评论(1) 推荐(0)

摘要:一、整合 spring3版本: 3.1.1 struts2版本: 2.3.4 jpa2.0实现: hibernate 4.1.1 连接池: BoneCP 0.7.1 (要求JDK6以上,应用服务器也需要保证JDK6以上) 缓存: ehcache 2.5.21、在MyEclipse下建立一个Web Project,把相应的jar到放到WEB-INF\lib目录中 所需的jar: antlr-2.7.7.jar aopalliance-1.0.jar aspectjrt.jar aspectjweaver.jar bonecp-0.7.1.RELEASE.jar b... 阅读全文

posted @ 2012-07-27 21:54 CN.programmer.Luxh 阅读(2398) 评论(10) 推荐(1)

摘要:Web中常用的权限管理模型是RBAC(基于角色的访问控制)。 RBAC的核心就是:"Who对What进行How的操作"。 Who :权限的主体,比如 User。 What:权限针对的资源,比如 用户管理。 How :具体的权限,比如 增加用户、删除用户。 1、先看看RBAC模型的实体关系图。 2、各个实体的说明。 1)组织(Oraganization):一个公司的组织架构、部门。这是一个树形的结构。比如赛思科技有限公司是一个顶级组织,它下面有软件研发部、市场部、销售部等子组织,那软件研发部的父组织就是赛思科技有限公司。组织---》用户 是一对多的关系。 2)用户(User. 阅读全文

posted @ 2012-07-20 18:43 CN.programmer.Luxh 阅读(3106) 评论(0) 推荐(0)

摘要:有时候我们需要设计树形结构实体,比如常见的部门组织就是典型的树形结构。 1、组织架构实体代码:package cn.luxh.jpa.entity;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;i... 阅读全文

posted @ 2012-07-14 11:28 CN.programmer.Luxh 阅读(9243) 评论(2) 推荐(1)

摘要:如果我们只需要查询实体中的某些属性,但是不希望查询的结果返回的是对象数组,就可以使用JPQL通过实体的构造器进行查询,这样查询结果返回的就是实体。 实体User.java:package com.cndatacom.jpa.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(n... 阅读全文

posted @ 2012-06-03 13:25 CN.programmer.Luxh 阅读(2089) 评论(0) 推荐(1)

摘要:EntityManager API 提供了创建 Query 实例以执行原生 SQL 语句的createNativeQuery方法。 实体User:package com.cndatacom.jpa.entity;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name="t_user 阅读全文

posted @ 2012-06-02 20:25 CN.programmer.Luxh 阅读(16883) 评论(0) 推荐(0)

摘要:从一关联到多的查询和从多关联到一的查询来简单说说关联查询。 实体Team:球队。 实体Player:球员。 球队和球员是一对多的关系。 Team.java:package com.cndatacom.jpa.entity;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;i... 阅读全文

posted @ 2012-06-02 14:54 CN.programmer.Luxh 阅读(17492) 评论(6) 推荐(2)

摘要:JPA的命名查询实际上就是给查询语句起个名字,执行查询的时候就是直接使用起的这个名字,避免重复写JPQL语句,使查询在代码中得到更多的重用。我不怎么喜欢使用命名查询,因为我不想把查询语句写在实体中,使得实体看起来变得复杂臃肿。 1、使用@NamedQuery注解在实体类中定义命名查询。 @NamedQuery(name="findAllUser",query="SELECT u FROM User u") @NamedQuery中的属性name指定命名查询的名称,query属性指定命名查询的语句。 如果要定义多个命名查询,需要使用@NamedQuerie 阅读全文

posted @ 2012-06-01 23:42 CN.programmer.Luxh 阅读(14851) 评论(0) 推荐(2)

摘要:JPQL:Java持久化查询语言,以面向对象的查询语法构造查询语句。 JPA使用javax.persistence.Query接口代表一个查询实例,Query实例由EntityManager通过指定查询语句构建。 以下程序中的em是EntityManager的一个实例,使用注入或通过 EntityManagerFactory 实例显式获取一个 EntityManager 实例。 1、一个基本的查询: SELECTu FROM User u 检索所有的User。u是User的别名。注意:关键字不区分大小写,例如:SELECT和select是一样的,但是实体的名称和实体的字段是区分大小... 阅读全文

posted @ 2012-05-31 23:07 CN.programmer.Luxh 阅读(3981) 评论(0) 推荐(0)

摘要:实体Player:玩家。 实体Game:游戏。 玩家和游戏是多对多的关系。一个玩家可以玩很多的游戏,一个游戏也可以被很多玩家玩。 JPA中使用@ManyToMany来注解多对多的关系,由一个关联表来维护。这个关联表的表名默认是:主表名+下划线+从表名。(主表是指关系维护端对应的表,从表指关系被维护端对应的表)。这个关联表只有两个外键字段,分别指向主表ID和从表ID。字段的名称默认为:主表名+下划线+主表中的主键列名,从表名+下划线+从表中的主键列名。 需要注意的: 1、多对多关系中一般不设置级联保存、级联删除、级联更新等操作。 2、可以随意指定一方为关系维护端,在这个例子中,我... 阅读全文

posted @ 2012-05-30 23:15 CN.programmer.Luxh 阅读(13134) 评论(16) 推荐(6)

摘要:JPA使用@OneToOne来标注一对一的关系。 实体City:城市。 实体Mayor:市长。 City和Mayor是一对一的关系。 这里用两种方式描述JPA的一对一关系。一种是通过外键的方式(一个实体通过外键关联到另一个实体的主键);另外一种是通过一张关联表来保存两个实体一对一的关系。 1、通过关联表的方式来保存一对一的关系。 City.java如下: 1 package com.cndatacom.jpa.entity; 2 3 import javax.persistence.CascadeType; 4 import javax.persistence.Column;... 阅读全文

posted @ 2012-05-28 22:16 CN.programmer.Luxh 阅读(5438) 评论(6) 推荐(0)

摘要:实体Company:公司。 实体Employee:雇员。 Company和Employee是一对多关系。那么在JPA中,如何表示一对多的双向关联呢? JPA使用@OneToMany和@ManyToOne来标识一对多的双向关联。一端(Company)使用@OneToMany,多端(Employee)使用@ManyToOne。 在JPA规范中,一对多的双向关系由多端(Employee)来维护。就是说多端(Employee)为关系维护端,负责关系的增删改查。一端(Company)则为关系被维护端,不能维护关系。 一端(Company)使用@OneToMany注释的mappedBy="c.. 阅读全文

posted @ 2012-05-27 21:43 CN.programmer.Luxh 阅读(9471) 评论(0) 推荐(0)

摘要:注意:这里说的是一对多的单向关联,不是一对多的双向关联。 实体Author:作者。 实体Book:作者写的书。 Author和Book是一对多的关系。 在JPA中,用@OneToMany来标识一对多的关系。实现一对多的单向关联,只需在代表一的实体(Author)中使用@OneToMany映射标注就可以了,代表多的实体不需要使用任何映射标注。 有两种方式实现一对多的单向关联。一种是在只使用@OneToMany来标识,这种方式是通过一张第三方表来保存关系。还有一种是使用@OneToMany和@JoinColumn来标注,这种方式是在多的一方(Book)的表中增加一个外键列来保存关系。... 阅读全文

posted @ 2012-05-27 17:23 CN.programmer.Luxh 阅读(18558) 评论(1) 推荐(1)

摘要:@GeneratedValue:主键的产生策略,通过strategy属性指定。 主键产生策略通过GenerationType来指定。GenerationType是一个枚举,它定义了主键产生策略的类型。 1、AUTO 自动选择一个最适合底层数据库的主键生成策略。如MySQL会自动对应auto increment。这个是默认选项,即如果只写@GeneratedValue,等价于@GeneratedValue(strategy=GenerationType.AUTO)。 2、IDENTITY 表自增长字段,Oracle不支持这种方式。 3、SEQUENCE 通过序列产生主键,MySQL不... 阅读全文

posted @ 2012-05-25 11:34 CN.programmer.Luxh 阅读(6248) 评论(0) 推荐(0)

摘要:一个实体,就是一个持久化的领域对象。通常情况下,一个实体代表在关系数据库中的一张表,实体的一个实例对应于表中的一行。 JPA规范对实体的要求: 1、实体类必须使用javax.persistence.Entity进行注解(@Entity)。 2、实体类必须要有一个公共的或者受保护的空参构造方法。 3、实体类不能声明为final,方法和需要持久化的属性也不能声明为final。 4、如果游离态的实体对象需要以值的方式进行传递,则必须实现Serializable接口。 5、实体类可以继承实体类和非实体类,非实体类也可以继承实体类。 6、持久化实例变量必须被声明为私有的、受保护的或者私... 阅读全文

posted @ 2012-05-24 23:46 CN.programmer.Luxh 阅读(1290) 评论(0) 推荐(1)

摘要:persistence.xml文件必须定义在classpath路径下的META-INF文件夹中。 我们看看基于Hibernate提供的一个比较完整的JPA2.0的persistence.xml文件。 persistence.xml: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 3 xmlns:xsi=" 阅读全文

posted @ 2012-05-24 12:27 CN.programmer.Luxh 阅读(22374) 评论(0) 推荐(2)

摘要:JPA,一套相当优秀的持久化规范,开始体验。 1、我使用Hibernate对JPA提供的实现,下载hibernate-release-4.1.1.Final.zip。解压。 在hibernate-release-4.1.1.Final\lib目录下有四个存放jar包的目录,其中 hibernate-release-4.1.1.Final\lib\jpa存放hibernate对JPA提供实现的jar hibernate-release-4.1.1.Final\lib\required 存放hibernate核心jar以及依赖的jar 这两个目录下的所有jar是我们体验JPA所必... 阅读全文

posted @ 2012-05-22 12:14 CN.programmer.Luxh 阅读(5571) 评论(1) 推荐(1)