Crear nuevo Objeto de Entidad en la primavera de arranque

Jon Catania:

Estoy esperando que alguien podría arrojar algo más de luz sobre mi confusión con entidades JPA en un proyecto de Primavera de arranque. He oído que uno nunca debe llamar newen un proyecto de Primavera. Entiendo que esto es permitir a Spring gestionar todos los granos, y conseguir un grano puede hacerse a través de inyección o por medio del contexto de aplicación de forma explícita.

Sin embargo, no es claro para mí cómo conseguir una nueva APP Entidad. Si tengo una clase anotada con @Entityy una clase repositorio que maneja mis acceso a datos, ¿cómo puedo obtener un nuevo objeto de entidad en mi capa de servicio?

He incluido @EntityScanen la clase principal de mi solicitud, así que supongo que la primavera está al tanto de la entidad. Pero cuando trato de conseguirlo a través del Application Context se produce una excepción. Esto tiene sentido porque no creo que las @Entityclases anotadas son los frijoles de la primavera, y yo no creo que sería correcto también anotar con @Component. Cualquier aclaración sería muy apreciada.

Actualmente estoy usando la newpalabra clave y la creación de la entidad a mí mismo los objetos en la capa de servicio. Un ejemplo muy simple es el siguiente:

entidades / User.java

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

    // Getters & Setters ...
}

repositorios / UserRepository.java

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

servicios / 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);
    }
}

Y podríamos suponer que hubo algunas otras clases de controlador que utilizaría la capa de servicio.

En este ejemplo estoy llamando explícitamente la newpalabra clave en el método de clase de servicio createAndSaveUser. Es esta la forma correcta de hacerlo o debería estar recibiendo un poco de frijol prototipo de primavera que se asigna a mi entidad JPA?

Sven Hakvoort:

En primavera se puede Autowire / inyecte su frijoles, componentes o servicios. Sin embargo, la entidad no debe autowired ya que estas interacciones se realizan a través de su repositorio. Su repositorio puede ser autowired.

Cuando se desea crear una nueva instancia de la entidad a la que se le permite a la llamada new, ya que este no tiene que ser gestionado por la primavera. Usted puede simplemente utilizar el repositorio autowired para guardarla en la base de datos. Esto también funciona al revés, porque es obvio que se necesita el repositorio autowired para recuperar su entidad.

Así que sí, el método es correcto.

Espero que esto hace que sea más claro para usted, si usted tiene alguna pregunta no dude en preguntar :)

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=184614&siteId=1
Recomendado
Clasificación