私は春休みベースの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を追加し始めましたが、問題はアプリケーションに2種類のPOJOがあることです。アプリケーションテーブルの構造に対応する1つのタイプ。サードパーティの結果構造に対応する別のタイプ。
ドメインパッケージでこれらの2つのPOJOタイプをどのように区別できるかわかりません。
ほとんどのプロジェクトは、あなたが説明したように見えます。ドメインパッケージの内部には、ユーザー関連のすべてのpojoを含むユーザーパッケージがあります。 daoでは、サービスも同じサブパッケージに存在します。
しかし、パッケージを分割することが最善であると私が思う組織は次のようになります。
-com.company.project
- users
UserService
UserDAO
User
Role
- cart
Cart
CartService
CartDAO
ShopItem
そしてそうなる。私はSpring Sourceの人からの話でそれを初めて見ました。動画を探してみます。
とにかく、私はこの戦略のプロジェクトに数か月間取り組んでいますが、今までのところ、従来の方法よりも整理されているようです。
ユーザーなどのパッケージが混雑しすぎた場合は、いつでもサブパッケージを作成して、その中に編成できます。しかし、ほとんどのパッケージでは、1つまたは2つのドメインクラス、1つのDAOと1つのサービスになります。したがって、追加のパッケージは必要ありません。
更新:これはビデオだと思います: http://www.youtube.com/watch?v=tEm0USdF-7
モジュール/ライブラリの観点から考えてみましょう。
コアビジネスロジックライブラリをアプリケーションの外部で分離し、テストライブラリで分離し、残りのライブラリをコアビジネスロジック内の機能を利用してコアビジネスロジックライブラリを受け入れるのは良いことです。
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")