春ブーツに新しいエンティティ・オブジェクトを作成します。

ジョンカターニア:

私は誰かが春ブートプロジェクトでJPAエンティティと私の混乱にいくつかのより多くの光を当てることができ願っています。私は1つが呼び出してはなりませんことを聞いたnew春のプロジェクトで。私はこの春は、豆のすべてを管理できるようにすることであることを理解し、Beanを取得することは、注射を介して、あるいは明示的にアプリケーション・コンテキストを介して行うことができます。

しかし、それは新しいJPAエンティティを取得する方法を私にははっきりしません。私は、注釈付きクラスがある場合は@Entity、リポジトリクラスハンドルが私のデータアクセスのことを、どのように私は私のサービス層で新しいエンティティオブジェクトを取得していますか?

私は含まれてきた@EntityScan私は春が実体を認識していることを前提としていますので、自分のアプリケーションのメインクラスで。しかし、私はApplicationContextのを通してそれを取得しようとすると、例外が発生します。私は信じていないので、これは理にかなって@Entity注釈付きクラスは春の豆であり、私はまたでそれに注釈を付けることが正しいだろうとは思いません@Component任意の明確化をいただければ幸いです。

私は現在使用しているnewキーワードを、サービス層で自分自身をエンティティ・オブジェクトを作成します。非常に簡単な例は以下の通りです:

エンティティ/ User.java

@Entity
@Table(name = "users")
public class User {
    @Id
    private Long id;
    private String username;

    // Getters & Setters ...
}

リポジトリ/ UserRepository.java

@Repository
public interface UserRepository extends CrudRepository<User, Long> {
    User findByUsername(String username);
}

サービス/ UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {
    UserRepository userRepository;

    @Autowired
    public UserServiceImpl(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void createAndSaveUser(String username) {
        User user = new User();
        user.setUsername(username);

        userRepository.save(user);
    }
}

そして、我々はサービス層を利用することになるいくつかの他のコントローラクラスがあったと仮定できます。

この例では、私は明示的に呼び出していnewたサービスクラスのメソッドにキーワードをcreateAndSaveUserこれはそれを行うための正しい方法であるか、私は私のJPAエンティティにマッピングさ春からいくつかのプロトタイプBeanを取得する必要がありますか?

スヴェンHakvoort:

春では、あなたの豆、コンポーネントやサービス注入/ autowireすることができます。これらの相互作用は、あなたのリポジトリを介して行われているのでしかし、実体はautowiredすべきではありません。あなたのリポジトリができ autowiredします。

あなたは、エンティティの新しいインスタンスを作成したい場合は、あなたが許可されているコールにnew、これは、スプリングによって管理する必要がないため、。あなたは、単にデータベースに保存しautowiredリポジトリを使用することができます。明らかにあなたがあなたのエンティティを取得するためのautowiredリポジトリを必要とするので、これはまた、周りに他の方法で動作します。

そうです、あなたの方法は正しいです。

ご質問はお気軽に持っている場合、私は、これはあなたのためにそれがより明確になります願っています:)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=184609&siteId=1