use*_*mda 1 java session dao hibernate dropwizard
我试图坚持dropwizard应用程序启动的时间.
public class Main Application extends Application<MainConfiguration> {
private final HibernateBundle<DeployerConfiguration> hibernate = new HibernateBundle<AppConfiguration>(App.class) {
public DataSourceFactory getDataSourceFactory(
AppConfiguration configuration) {
return configuration.getDataSourceFactory();
}
@Override
public void initialize(Bootstrap<AppConfiguration> bootstrap) {
bootstrap.addBundle(hibernate);
public static void main() {
final AppDAO ddao = new AppDAO(hibernate.getSessionFactory());
App app = new App(new Date());
adao.create(app);
Run Code Online (Sandbox Code Playgroud)
物体:
JsonIgnoreProperties(ignoreUnknown = true)
@Entity
@Table(name = "app")
@NamedQuery(name = "App.findAll", query = "SELECT d FROM App d")
public class App implements Serializable{
private static final long serialVersionUID = 1L;
AppDAO adao;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
long id;
@JsonProperty
Date started;
public App ( Date started) {
this.started = started;
Run Code Online (Sandbox Code Playgroud)
}
DAO对象
public class AppDAO extends AbstractDAO<Appr> {
public SessionFactory sessionFactory;
public AppDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public Session session;
public App create(App app) {
return persist(app);
Run Code Online (Sandbox Code Playgroud)
}
当我尝试在main()方法中保存此对象时,它会抱怨没有与该对象关联的会话.在调试时,它将DAO对象赋予null,这是真的,因为尚未创建用户会话.在这种情况下,如何持久保存对象?我错过了什么
小智 5
仅当您在资源方法中使用DAO注释为@UnitOfWork时,Dropwizard才会自动管理会话
如果要在此范围之外使用DAO,则需要手动创建和管理会话,这非常简单:
Session session = hibernate.getSessionFactory().openSession();
ManagedSessionContext.bind(session);
//do your stuff....
session.close();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1489 次 |
| 最近记录: |