Java从Properties文件创建SessionFactory

时间:2012-11-19 12:53:16

标签: java hibernate

我正在通过读取项目之外的属性文件来创建会话工厂。 我的属性文件如下,

hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=root
hibernate.connection.password=root
hibernate.connection.url=jdbc:mysql://localhost:3306/hi5
hibernate.dialect=org.hibernate.dialect.MySQLDialect
entity=CmtFreeformpages,CmtNewsTicker

我通过读取属性文件来创建Sessionfactory,如下所示

properties.load(new FileReader(new File(global.constants.GlobalConstants.parentDirectory + File.separator + global.constants.GlobalConstants.propertiesFile)));
Configuration configuration = new Configuration().setProperties(properties);
Set<Object> setOfProperties = properties.keySet();
for(Object propertyObject : setOfProperties){
if (propertyObject != null) {
String propName = propertyObject.toString();
if(propName.equalsIgnoreCase("entity")){
String value = properties.getProperty(propName);
Object[] entities = value.split(",");
for(int i=0;i<entities.length;i++){
 configuration.addAnnotatedClass(entities[i]);
}
sessionFactory = configuration.buildSessionFactory();

但是configuration.addAnnotatedClass方法不接受字符串。那么如何将带注释的类添加到配置中?

由于

2 个答案:

答案 0 :(得分:1)

由于addAnnotatedClass()接受Class,您需要使用Class获取给定类名的Class.forName()

configuration.addAnnotatedClass(Class.forName(entities[i]));

请注意,Class.forName()需要完全限定的类名,即包含包名。

答案 1 :(得分:0)

在将其添加到配置之前,您必须使用包名称和类名称加载带有类加载器的命名实体类。

如果在包级别有任何注释,也可以调用addPackage。