我有一个管理我的数据模型的类,它还包含管理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();
}
当我从现有数据库加载时,我要做的是在构造函数中加载regionName
和location
变量但是我找不到任何成功这样做的方式。
任何帮助将不胜感激
答案 0 :(得分:0)
我可以通过使用辅助类(也许是SessioFactory
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
中的各种实体。