Я использую Spring Roo для генерации моих сущностей и обработки его с помощью сущ. ManManager, а также сохраняющихся и других методов через классы AspectJ. Теперь я пытаюсь использовать Spring бутсу, чтобы сделать что-то простое, что будет писать вещи в базу данных ...Как использовать Spring Spring с JPA
@Entity
@Table(name = "account")
public class Account {
transient EntityManager entityManager;
@Id
@GeneratedValue
private Long id;
@Column(name = "username", nullable = false, unique = true)
private String username;
@Column(name = "password", nullable = false)
private String password;
... getters and setters
@Transactional
public void persist() {
if (this.entityManager == null) this.entityManager = entityManager();
this.entityManager.persist(this);
}
@Transactional
public Account merge() {
if (this.entityManager == null) this.entityManager = entityManager();
Account merged = this.entityManager.merge(this);
this.entityManager.flush();
return merged;
}
Когда я звоню сохраняются или слияния, EntityManager, очевидно, нуль.
Я также попытался добавить implements CrudRepository<Account, Long>
к Account
класса, чтобы увидеть это даст мне эту функциональность через реализацию по умолчанию, но то, что я получаю это просто пустые классы, которые должны быть заполнены.
Я взглянул на документы Spring Boot, они покрывают его очень коротко, опуская достаточно подробные сведения, чтобы не было видно, чего я не вижу.
У меня есть класс приложений, который загружает приложение:
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
Мой файл свойств выглядит следующим образом:
spring.application.name: Test Application
spring.datasource.url: jdbc:mysql://localhost/test
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
Эта база данных автоматически быть создан благодаря ddl-auto=update
собственности
Каков правильный способ сохранения объектов в Spring Boot + JPA, и если то, что я сделал, является правильным до сих пор, как я могу «autowire» o r автоматически создать сущностьManager?
Ничего себе, это намного отличается от того, как это делает Spring Roo, но много чистых и по сравнению со всеми созданными файлами AspectJ. Спасибо за очень подробный ответ! –
Roo основан на шаблоне Active Record, где сущности могут управлять собой. Данные Spring основаны на шаблоне репозитория, где отдельный объект отвечает за управление объектами домена. – gregturn