暦 -->
<tx:annotation-driven transaction- manager="transactionManager" />
</beans>
喇噐SpringSide音戻工Mysql議jdbc駁強?侭參俶勣徭失肇MySQL議郊圭利嫋 和墮?繍和墮欺議mysql-connector-5.*.jar鹸崙欺?朕議WEB-INF嶄議lib朕村 嶄。隼朔塰佩?朕?撹孔。崛緩?撹孔繍?朕濡卞欺MySQL嶄。
使用SpringSide 3.1.4.3开发Web项目的全过程(上)(7)
时间:2010-12-20 BlogJava 海边沫沫
第六步、添加数据表、编写Entity类、编写Dao类、Manager类,并进行单元 测试。还是以前几篇文章中提到的文章发布系统为例,每一篇文章对应多篇评论 ,所以说据库中需创建articles和comments两个数据表,如下:
create table articles(
id int primary key auto_increment,
subject varchar ( 20 ) not null ,
content text );
create table comments(
id int primary key auto_increment,
content varchar ( 255 ),
article_id int not null ,
foreign key (article_id) references articles(id)
);
在编写Java代码之前,我还要做一点小工作,什么工作呢?那就是要为我自 己的项目创建一个单独的源文件夹,因为src\main\java这个文件夹已经被江南 白衣放入了太多的package,而且因为涉及到security,所以层次也不明显,操 作起来不方便,找起代码来也不够快。下面是我创建了自己的源文件夹后的截图 :
在我自己的源文件夹中,只创建了四个package,刚好代表从底到上的四个层 次,这样,找起代码来要方便得多。
先来Entity层,Article.java的代码如下:
package personal.youxia.entity;
import java.util.LinkedHashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
// 表名与类名不相同时重新定义表名.
@Table(name = "articles")
// 默认的缓存策略.
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Article extends IdEntity {
private String subject;
private String content;
private Set<Comment> comments = new LinkedHashSet<Comment>();
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
@OneToMany(cascade = { CascadeType.ALL })
@JoinColumn(name = "article_id")
// Fecth策略定义
@Fetch(FetchMode.SUBSELECT)
// 集合按id排序.
@OrderBy("id")
// 集合中对象id的缓存.
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public Set<Comment> g
|