您的位置:首页 > 编程语言 > Java开发

如何通过Spring获取到Hibernate的Configuration对象以及Table,Column对象

2012-05-08 18:12 561 查看
【问题描述】想通过Spring获取到Hibernate的Configuration对象,然后再获取到Table对象以及table里面的 unique constraint columns

【问题解决】

import java.util.Iterator;

import org.hibernate.cfg.Configuration;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.UniqueKey;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;

import com.signaldemand.flank.hibernate.model.ImplLicAppFtr;

/**
* Test TODO type documentation
*/
public class Test
{
public static void main(String[] args) throws Exception
{
BeanFactory f = new ClassPathXmlApplicationContext(new String[] { "commonContext.xml", "applicationContext.xml" });
LocalSessionFactoryBean configBean = (AnnotationSessionFactoryBean) (f.getBean("&sessionFactory"));//这里其实是获取到SessionFactory的上一级对象
Configuration configuration = configBean.getConfiguration();
Iterator<UniqueKey> i = configuration.getClassMapping(ImplLicAppFtr.class.getName()).getTable().getUniqueKeyIterator();
while (i.hasNext())
{
UniqueKey s = i.next();
Iterator<Column> columns = s.getColumnIterator();
System.out.println(s.getName());
while(columns.hasNext())
{
Column column = columns.next();
System.out.println(column.getName());
}
}
}
}


如果各位读者想通过column找到相应的property的话,那请看下面的代码

import java.util.Iterator;

import org.hibernate.cfg.Configuration;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.PersistentClass;
import org.hibernate.mapping.Property;
import org.hibernate.mapping.UniqueKey;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
import org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean;

import com.signaldemand.flank.hibernate.model.Cat;

/**
* Test TODO type documentation
*/
public class Test
{
public static void main(String[] args) throws Exception
{
BeanFactory f = new ClassPathXmlApplicationContext(new String[] { "commonContext.xml", "applicationContext.xml" });
LocalSessionFactoryBean configBean = (AnnotationSessionFactoryBean) (f.getBean("&sessionFactory"));
Configuration configuration = configBean.getConfiguration();
PersistentClass mapping = configuration.getClassMapping(Cat.class.getName());
Iterator<UniqueKey> i = mapping.getTable().getUniqueKeyIterator();

while (i.hasNext())
{
UniqueKey s = i.next();
Iterator<Column> columns = s.getColumnIterator();
System.out.println(s.getName());
while(columns.hasNext())
{
Column column = columns.next();
//                System.out.println(column.getName());
Iterator<Property> p = mapping.getPropertyClosureIterator();
while (p.hasNext())
{
Property property = p.next();
Iterator<Column> columns2 = property.getColumnIterator();
while(columns2.hasNext())
{
Column column2 = columns2.next();
if(column2.getName().equals(column.getName()))
{
System.out.println(property.getName());
break;
}
}
}
}

System.out.println("----------------------------------------------");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐