使用Hibernate加载信息

时间:2017-02-05 04:09:18

标签: java hibernate

我有一个管理我的数据模型的类,它还包含管理Hibernate连接的代码,用于将数据存储为SQLite数据库(使用自定义方言)

@Entity
@Table
public class PFSRegion {

@Id
private String regionName;
private String location;
private ArrayList<Scenario> scenarioList = new ArrayList<Scenario>();
private ArrayList<Venue> venues = new ArrayList<Venue>();
private ArrayList<Player> players = new ArrayList<Player>();
private ArrayList<Session> sessions = new ArrayList<Session>();

//hibernate vars
private Configuration config;
private SessionFactory sessionFactory;

public PFSRegion(String fileName)
{
    configHibernate(fileName);
    .....
}

...

private void configHibernate(String fileName)
{

    if(!(fileName.endsWith(".rgn")))
    {
        fileName += ".rgn";
    }

    //set up hibernate
    config = new Configuration()
        .addAnnotatedClass(com.philderbeast.paizolib.Event.class)
        .addAnnotatedClass(com.philderbeast.paizolib.Player.class)
        .addAnnotatedClass(com.philderbeast.paizolib.Scenario.class)
        .addAnnotatedClass(com.philderbeast.paizolib.Session.class)
        .addAnnotatedClass(com.philderbeast.paizolib.Venue.class)
        .setProperty("hibernate.dialect", "org.hibernate.dialect.SQLiteDialect")
        .setProperty("hibernate.connection.driver_class", "org.sqlite.JDBC")
        .setProperty("hibernate.connection.url", "jdbc:sqlite:" + fileName)
        .setProperty("hibernate.hbm2ddl.auto", "update");

    sessionFactory = config.buildSessionFactory();
}

当我从现有数据库加载时,我要做的是在构造函数中加载regionNamelocation变量但是我找不到任何成功这样做的方式。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

我可以通过使用辅助类(也许是SessioFactory

来完成Hibernate RegionSessionFactory的创建来解决这个问题。
public class RegionSessionFactory {
  public RegionSessionFactory(String regionName) {
    // construct the Hibernate SessionFactory here
    this.sessionFactory = // construct the Hibernate SessionFactory.
  }
  public String getRegionName() {
    return this.regionName;
  }
  public SessionFactory getHibernateSessionFactory() {
    return this.sessionFactory;
  }
}

您可能需要按名称或其他标识符查找特定的RegisionSessionFactory,因此您可能希望将实例化的对象存储在某个基于注册表的地图类中。

通过迭代并调用SessionFactory,您还可以在关闭应用程序时正常关闭所有打开的#getHibernateSessionFactory().close()实例。

无需将PFSRegion实例实现为@Entity带注释的类。所有这些代码都与纯粹的基础结构相关,因此您可以获取Hibernate Session,从而查询和操作存储在每个RegionSessionFactory中的各种实体。