2008-06-11

Java EE 应用中的事务

关键字: java ee, 事务
事务是企业应用开发中的重要概念,对于部分 Web 应用,事务也是非常重要的(试想一下,如果没有事务,ATM 和网银的操作将会使多么的危险)。下面我就对 Java EE 应用中各种事务技术做一个简介。 数据库:        无论 Java EE 中采用了何种的事务技术,归根结底都是基于数据库的事务。不论是本地事务,还是分布式事务,都必须有数据库的支持才行。各种 Java EE 事务技术也都调用了数据库的事务功能。提到事务,必然要提到事务的四个基本特性:原子性、一致 ...
2008-06-02

EJB 3.0 与 Seam-managed Persistence Context

关键字: ejb, seam, persistence context
本文将简单谈谈我对 EJB 3.0 的两种 Persistence Context 和 Seam-managed Persistence Context 的不同点的理解、所要解决的问题和我自己所疑惑的问题。 EJB 3.0 (JPA) 的 Persistence Context         大家在使用 EJB 3.0 的时候会注意到 EJB 3.0 中的容器管理 Persistence Context 有两种类型,一种是 Transaction,另一种是 Extended。这是一个较 H ...
2008-05-30

Java Web 的 Security Constraint 配置

关键字: java web tomcat 配置
原来知道 Java Web 应用的 DD 中的 <security-constraint> 配置,但是并没有真正配置过。昨天下午试着配了一下,发现问题还是有一些的。 说一下两个需要注意的问题: <security-constraint> 的子元素 <http-method> 是可选的,如果没有 <http-method> 元素,这表示将禁止所有 HTTP 方法访问相应的资源。 子元素 <auth-constraint> 需要和 <login-config> 相配合使用,但可以被单独使用。如果没有 <auth-constraint> 子元素,这表 ...
最近本人正在将 Seam 中提供的示例重写一遍,以锻炼实际编写 Seam 应用的能力。在将 Seam 提供的 Messages 示例重写的时候遇到了问题。 Messages 示例原本使用的是 HSQLDB,在我转移到 MySQL 的时候,程序始终无法正常原因,经过了两天的调试,终于发现了原因。原来 Messages 中的 EntityBean "Message" 有个字段名为 "Read",在 HSQLDB 下没有问题,但是由于 "Read" 是 MySQL 的保留名,所以在创建表的时候就会有问题。 下面这个链接是 MySQL 的保留名词,大家遇到类似问题的时候可以查查,看看是不是使用了保 ...
2008-05-21

推荐三篇关于 Seam 的文章

关键字: seam
Seam - 无缝集成 JSF Spring into Seam, Part 1: Build a Spring-Seam hybrid component Spring into Seam, Part 2: When stateless and stateful collide
2008-05-12

enum 的那点事

关键字: enum
enum 能够让你摆脱掉大部分的“public static final”变量声明 通常,你只需要用到 enum 的基本功能 enum 是 class,所以也可以有方法,也可以实现接口 enum 如此简单: public enum Grade { A, B, C, INCOMPLETE } 最后不需要分号(某本书上加了分号) 从 Java SE 5.0 之后,switch 开始支持 enum
ArrayList Vector LinkedList 区别与用法
2008-03-23

也谈 EJB 3.1 的新特性

关键字: ejb
看了 kyo100900 翻译的《EJB 3.1 真的来了吗?》之后,我也凑个热闹,谈谈 EJB 3.1 的新特性。 1. 可选的 EJB 接口: 记得刚开始学 EJB 的时候,被 EJB 的接口概念搞得很晕。最不好的是要写一个 Session EJB 就要写一对的接口。在 EJB 3.0 中,我们虽然可以通过 Annotation 简化 EJB 业务接口的声明,但是我们还是免不了要写接口。EJB 3.1 的草案中,我们看到了将 EJB 业务接口改为可选的新特性。我们可以直接将被 @Sessionful 或 @Sessionless 注释的 Bean 作为 Session ...
2008-03-14

Eclipse 中的 Ant 自动运行

关键字: eclipse, ant
这段时间在学 Seam。Seam 有一个非常方便的代码生成工具 seam-gen。在将用 seam-gen 生成的代码导入 Eclipse 项目之后,我发现每当我保存对源码的修改之后,Eclipse 都会执行 Ant 任务。对于我这种小菜来说,这是非常令人吃惊的现象。 研究一番之后,发现其实这样很简单。要实现这样的目的无非需要两个文件:.project 和 *.launch 文件。.project 是 Eclipse 的必备文件,所以必定是位于项目的根目录中;*.launch 一般也位于根目录中。 在 seam-gen 生成的 .project 文件中有这么几行代码: <buil ...
2008-02-29

关于 JPA Annotation 的两点心得

关键字: jpa hibernate annotation
第一,注释的继承 Class 的属性可以继承,但是注释就不可以了。写一个 Domain 基类,并在其中加入使用了 @Id 和 @GeneratedValue 注释的 id 属性。但在运行时,编译器报告子类缺少 identifier。如果在子类中加入 id 属性(这是需要在基类中去掉 id 属性),这时程序就会运行成功。我在 Spring 的 Samples 中也发现每个 Domain 类都有 id 属性。这样有点浪费代码,但又没有办法。 第二,注释的位置 注释可以加在属性上,也可以加在 getter 方法上,一般讲这样是可以的。但是还是将所有的注释都加在 getter 方法为好。在我的程序中 ...
引用保存各种信息对于应用程序来说非常平常,大多数时候它们是保存在关系数据库中。数据库处理规范数据类型十分在行,但是在处理如图像、文档等二进制数据时却不是那么得心应手。尽管可以用文件系统作为替代——而且它们还提供了更好的性能。但它们既没有提供用于搜索信息的查询语言,也没有提供表示关系或事务的概念。 上面一段话引用自 infoQ 上的集成Java内容仓库和Spring。其中所表达的需求正式 JCR 所要解决的。似乎在 Java EE 领域 JCR 会有很大的需求。 JCR 的某些功能和 JDBC 有些相像,也有事务和锁,毕竟都是为了解决数据存储而出现的,只不过 JCR 要更广义点。 现在 S ...
2007-11-15

Introduction to Open Terracotta 段落总结

关键字: 集群 Terracotta
最近一段时间我在学习 Terracotta,一种 JVM 级的集群化技术。infoQ 上的<> 是一篇简要介绍 Terracotta 技术原理和应用的文章,适合大家为了解 Terracotta 而去阅读。为了能更好的理解这篇文章,也希望能够对大家了解 Terracotta 有所帮助,下面我将这篇文章从 Object Identity and Serialization 开始的部分的每段大意写了出来。写的不好,大家凑合看吧(*^__^*) 嘻嘻…… 对象识别与序列化 Terracotta 不使用 Java 序列化去复制对象的改变。 这种方式要比使 ...
2007-10-15

常用 Hibernate 方法比较

关键字: Hibernate
update() 与 merge() update() 与 merge() 的功能是相同的,都是持久化 Detached 状态的对象。但如果当前 Session 中存在两个或两个以上的,持久化标示相同的对象的话,update() 操作是会抛出异常的。而 merge() 会合并你对持久化对象的改动。 除了上面一点 merge() 与 update() 不同外,merge() 可以被看做是 saveOrUpdate()。     在 Hibernate 参考文档的 第 10 章 与对象共事 中有关于 saveOrUpdate() 与 merge() 不同点的 ...
2007-10-15

常用 JPA Annotation [转]

关键字: JPA
Table Table用来定义entity主表的name,catalog,schema等属性。 元数据属性说明: name: 表名 catalog: 对应关系数据库中的catalog schema:对应关系数据库中的schema UniqueConstraints:定义一个UniqueConstraint数组,指定需要建唯一约束的列 @Entity @Table(name="CUST") public class Customer { ... }   SecondaryT ...