北在北方

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

导航

05 2012 档案

摘要: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 阅读(13136) 评论(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 阅读(6249) 评论(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)

摘要:客户叫我删除掉一条记录,说因为流程走错了,给我发过来一串很长的中文,说把这个名称的记录删掉。 我直接用PL/SQL操作数据库,根据名字相等搜索,没有记录。因为这些记录的名称都是很相似的,都是类似于“关于下发2012年第一季度“畅享移动福生活”数据业务整合营销活动细则的通知……”之类,于是用like搜索,才出来一条记录,我也没注意看,直接就删了。 然后我登陆系统,进行查询,发现那条记录还在,把正常的记录给删了,而且被删的这条记录关联的流程还在审批中的。 马上想到数据恢复,Google一下Oracle数据恢复的,找到了OracleFlashback。网上资料说Oracle 10g以上的版... 阅读全文

posted @ 2012-05-24 16:19 CN.programmer.Luxh 阅读(571) 评论(7) 推荐(0)

摘要: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)

摘要:昨天一位项目组同事需要在ArrayList中删除所有不等于指定值的元素,但是她弄了很久,发现总是删得不完全。刚好我以前做过类似的功能,就告诉她是因为ArrayList删除元素后长度变小了,元素的索引也会跟着改变,但是迭代的下标没有跟着相应的改变的缘故。 将一些删除方法做一些总结: 1 /** 2 * 删除Arraylist中值为"c"的元素 3 */ 4 public static void main(String[] args) { 5 6 List<String> list = new ArrayList<String... 阅读全文

posted @ 2012-05-19 23:48 CN.programmer.Luxh 阅读(23814) 评论(10) 推荐(3)

摘要:表单中有多个<input type="file" name="uploadfile" contentEditable="false" style="width:80%">,提交表单时需要判断其中至少要有一个input已经选择好文件。 1 <input type="file" name="uploadfile" contentEditable="false" style="width:80%"><br> 阅读全文

posted @ 2012-05-18 17:37 CN.programmer.Luxh 阅读(2506) 评论(0) 推荐(0)

摘要:struts2的文件上传是用拦截器实现的,我们可以不用去关心底层的实现,使得上传文件变得很简单。 Action代码: 1 package com.test; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.text.SimpleDateFormat; 6 import java.util.Date; 7 import java.util.Random; 8 9 import org.apache.commons.io.FileUtils;10 import org.apache.struts... 阅读全文

posted @ 2012-05-18 00:00 CN.programmer.Luxh 阅读(637) 评论(0) 推荐(0)

摘要:java.io.File 类有个方法可以直接重命名文件。 方法:public boolean renameTo(File dest)。 1 File file1=new File("D:/test/a.txt"); 2 File file2=new File("D:/test/b.txt"); 3 boolean flag = file1.renameTo(file2); file1的文件名将重命名为file2的文件名,即a.txt重命名为b.txt。 在重命名前,如果已存在b.txt,则重命名不会成功,方法执行结果返回false。 必须确保目标文件在重 阅读全文

posted @ 2012-05-17 21:56 CN.programmer.Luxh 阅读(6451) 评论(3) 推荐(1)

摘要:FileDownloadAction:这个Action负责文件的下载控制。 Action中的fileName:接收请求传递的文件名(实际上是从页面传递过来)。 Action中的getInputStream()方法:以流的形式读取文件,是下载文件的入口。 package com.test.action;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import... 阅读全文

posted @ 2012-05-17 18:37 CN.programmer.Luxh 阅读(817) 评论(0) 推荐(0)

摘要:1 select 2 b.file_id 文件ID号, 3 b.tablespace_name 表空间名, 4 b.bytes/1024/1024 ||'MB' 字节数, 5 (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 ||'MB' 已使用, 6 sum(nvl(a.bytes,0))/1024/1024 ||'MB' 剩余空间, 7 sum(nvl(a.bytes,0))/(b.bytes)*100 ||'%'剩余百分比 8 from dba_free_space a,dba_data_fil 阅读全文

posted @ 2012-05-16 17:36 CN.programmer.Luxh 阅读(374) 评论(0) 推荐(0)

摘要:ajax()方法是jQuery底层的ajax实现,通过HTTP请求加载远程数据。 1 $.ajax({ 2 type: "GET", 3 url: "handleAjaxRequest.action", 4 data: {paramKey:paramValue}, 5 async: true, 6 dataType:"json", 7 success: function(returnedData) { 8 alert(returnedData); 9 ... 阅读全文

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

摘要:项目中需要导入几十MB、上百MB的TXT文本文件,利用oracle的sql loader导入非常不错。 String cmd = "sqlldr userid=数据库用户名/密码@数据库监听实例名 skip=1 errors=0 control=d:/test.ctl data=d:/test.txt log=d:/log/log.log bad=d:/log/bad.bad ";//返回与当前 Java 应用程序相关的运行时对象 Runtime run = Runtime.getRuntime(); // 启动另一个进程来执行命令Process p = run.exec( 阅读全文

posted @ 2012-05-14 21:40 CN.programmer.Luxh 阅读(329) 评论(1) 推荐(1)

摘要:public void writeData2Txt(String content) { //存放文件的目录 String fileDir = ServletActionContext.getServletContext().getRealPath("D:/file/"); //简单的生成文件名 String fileName =new SimpleDateFormat("yyyyMMddHHmmsszzz").format(new Date())+".txt"; File txtFile= new File(fileDir,fileN 阅读全文

posted @ 2012-05-14 14:05 CN.programmer.Luxh 阅读(552) 评论(2) 推荐(0)

摘要:Map<Object,Object> map = new HashMap<Object,Object>();Iterator<Entry<Object,Object>> iterator = map.entrySet().iterator();while(iterator.hasNext()) { Entry<Object,Object> entry = iterator.next(); Object key = entry.getKey(); Object value = entry.getValue();}Entry存的是Map的 阅读全文

posted @ 2012-05-14 13:09 CN.programmer.Luxh 阅读(528) 评论(0) 推荐(1)