package com.lhoussaine.springjsfjpa.entities;
@Table(name="address")
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String streetNumber;
private String streetName;
private String city;
getter/setter
}
そして私は30のエンティティを持っています。
現在のリポジトリ:
package com.lhoussaine.springjsfjpa.repositories;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.repository.annotation.RestResource;
import com.lhoussaine.springjsfjpa.entities.Address;
@RestResource(rel="address", path="address")
public interface AddressRepository extends JpaRepository<Address,Integer> {
}
ここでは、CRUD 操作を実装する必要はありません。spring-data-jpa に感謝します。そして、コントローラーとサービスに同じ標準が必要です:
public interface IAddressService {
}
package com.lhoussaine.springjsfjpa.services.generic;
import java.util.List;
public abstract class GenericService<T,K> {
public abstract T create(T saved);
public abstract void remove(T deleted);
public abstract T findById(K id) ;
public abstract List<T> findAll();
public abstract T removeById(K id);
}
package com.lhoussaine.springjsfjpa.services.impl;
@Service
@Transactional
public class AddressService extends GenericService<Address, Integer> implements IAddressService {
@Autowired private AddressRepository iaddressRepository;
public Address create(Address saved) {
Address address=saved;
return iaddressRepository.save(address);
}
public void remove(Address deleted) {
iaddressRepository.delete(deleted);
}
public Address findById(Integer id) {
return iaddressRepository.findOne(id);
}
public List<Address> findAll() {
return iaddressRepository.findAll();
}
public Address removeById(Integer id) {
Address addr= iaddressRepository.findOne(id);
if(addr!=null){
iaddressRepository.delete(addr);
}
return addr;
}
}
問題は次のとおりです。コントローラーを使用してどうすればよいですか?各クラスのコントローラーを開発しますか? 30 のサービス クラスがあることを知っています。Spring Data JPA など、同じ標準に近づいているものはありますが、サービスとコントローラーはありますか? ご覧のとおり、サービス クラスです。GenericService
クラスを作成し、パッケージ エンティティにある各クラスのインターフェイスを作成する必要があります。