2012-02-23 67 views
3

我知道spring roo可以生成实体和控制器。但我的要求是生成DAO和服务层或至少是DAO。有没有什么办法可以使用spring-roo来生成实体,控制器和DAO使用spring roo生成DAO

回答

6

我认为没有办法制作DAO,但我会纠正。

在最近发布的Roo 1.2中,现在有JPA Repositories的概念和Spring blog中详述的新服务元素。

+0

感谢您的帮助。现在我能够创建服务和存储库。我想这个存储库可以用来代替DAO对不对? – 2012-02-24 01:42:55

+1

是的。从理论上讲,这些概念并不相同,但在实施过程中,他们经常感到困惑。 http://stackoverflow.com/questions/8550124/what-is-the-difference-between-dao-and-repository-patterns。另外,从架构的角度来看,他们可以轻松使用控制器或服务所使用的相同空间。 – madth3 2012-02-24 01:52:27

+0

春天博客网址被破坏。新[链接](http://spring.io/blog/2011/09/14/new-application-layering-and-persistence-choices-in-spring-roo-1-2) – bioinfornatics 2014-01-10 14:15:50

2

举一个例子,你有一个User类领域usernamepassword你需要创建了一个抽象层

Entity -> Repository (DAO) -> Service 

User-> UserRepository -> UserService 

基本上有做事情的2种方法 - 第一个使用JPA Repository,第二个使用Mongo Repository,除了默认的ActiveRecord风格。使用Mongo或JPA进行设置类似。我在这里解释JPA Repository的命令。

1)执行安装命令

jpa setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT 

2)定义新的用户实体设置默认activeRecord为假(重要)

entity --class ~.domain.User --activeRecord false 

3)定义字段用于这样的用户实体

field string --fieldName userName --notNull --sizeMin 3 --class ~.domain.User 
field string --fieldName password --notNull --sizeMin 3 --class ~.domain.User 

4)使用repository jpa创建一个新的JPA存储库接口命令,这相当于通过扩展弹簧数据JpaRepository类public interface UserRepository extends JpaRepository<User, Long> {/*Code*/}来创建新的存储库接口。这提供了所有的CRUD功能,你不需要添加任何东西。您可以添加其他搜索功能。存储库接口与DAO接口类似。 DAO与持久化实体更紧密地耦合,而Repository与域对象更相关。

repository jpa --interface ~.repository.UserRepository --entity ~.domain.User 

5)现在添加服务层,您可以在其中添加所有业务逻辑到您的应用程序。此步骤将创建UserService接口和UserServiceImpl

service --interface ~.service.UserService --entity ~.domain.User 

的分层设置完成。您现在可以创建Web层并执行您的代码。

web mvc setup 
web mvc all --package ~.web