26

我是编写基于 ws 的春季休息的新手。我创建了一个具有以下结构的项目。

Java Resources
  - src/test/java
  - src/main/java
     - com/sample/rest
       - controller  (for the request mappings)
       - domain (for POJOs)
       - service (for business logic)
       - utility (for utility methods)
       - dao (for database calls)

我开始在域包中添加 POJO,但我的问题是我的应用程序中有两种 POJO。一种与我的应用程序表结构相对应的类型。对应于第三方结果结构的另一种类型。

我不确定如何在我的域包下区分这两种 POJO 类型。

4

2 回答 2

41

大多数项目看起来像你描述的那样。域包内部将有一个用户包,其中包含所有与用户相关的 pojo。在 dao 上,服务也将存在相同的子包。

但是我认为最好的组织是拆分包是这样的:

-com.company.project
    - users
         UserService
         UserDAO
         User
         Role
    - cart
         Cart
         CartService
         CartDAO
         ShopItem

就这样。我第一次看到它是来自 Spring Source 的一个人的谈话。我会试着找到视频。

无论如何,我用这种策略在一个项目上工作了几个月,直到现在它似乎比传统方式更有条理。

如果一个包(例如用户)变得过于拥挤,您始终可以创建子包以在其中进行组织。但对于大多数包来说,它将是 1 或 2 个域类、一个 DAO 和一个服务。所以不需要更多的包。

更新:我认为这是视频:http ://www.youtube.com/watch?v=tEm0USdF-70

于 2013-10-10T00:32:00.707 回答
9

让我们从模块/库的角度来思考。

最好将核心业务逻辑库分离在应用程序之外,将其与测试库分开,其余库利用核心业务逻辑内部的功能来拥抱核心业务逻辑库。

Module : MyAppLogic.jar
  -> com.company.user
       -> class UserBean : Pojo
       -> class UserDao : insert( String userName , String userEmail ) ;
       -> class UserService : insert( UserBean userBean ) ;
  -> com.company.cart
       -> class CartBean : Pojo
       -> class CartDao : insert( int cartUserId , int cartItemId ) ;
       -> class CartService : insert( CartBean cartBean ) ;

Module : MyAppRest.jar
  -> com.company.rest.domain
       -> class User : @XmlRootElement
       -> class Cart : @XmlRootElement
  -> com.company.rest.model
       -> interface UserServiceIntf : insert( User user ) ;
       -> class UserServiceImpl : private UserService userService ;
       -> interface CartServiceIntf : insert( Cart cart ) ;
       -> class CartServiceImpl : private CartService cartService ;
  -> com.company.rest.service
       -> class UserRestService : @Path("/users")
       -> class CartRestService : @Path("/carts")
于 2016-03-21T02:13:20.833 回答