当前位置:编程学习 > JAVA >>

Hibernate之AbstractEntityPersister

Hibernate开发中需要根据持久层对象获取所映射的数据库表相关信息,如表名,主键,外键对象等相关系。
Hibernate配置 Hibernate.cfg.xml
[html]  
<?xml version='1.0' encoding='utf-8'?>  
<!DOCTYPE hibernate-configuration PUBLIC  
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"  
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
  
<hibernate-configuration>  
    <session-factory>  
        <!-- Database connection settings -->  
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
        <property name="connection.url">jdbc:mysql://localhost:3306/ehome</property>  
        <property name="connection.username">root</property>  
        <property name="connection.password">mysql</property>  
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
        <property name="current_session_context_class">thread</property>  
        <property name="show_sql">true</property>  
  
        <mapping resource="org/bkgd/ehome/jeeplugin/userapp/domain/HhArticle.hbm.xml" />  
  
    </session-factory>  
</hibernate-configuration>  
 
HhArticle.hbm.xml 文件在此省略
 
编写HibernateUtil辅助类 获取sessionFactory
[java]  
public class HibernateUtils {  
      
    private static final SessionFactory sessionFactory;;  
    //创建sessionFactory  
    static {  
        try {  
            sessionFactory = new Configuration().configure().buildSessionFactory();  
        } catch (Throwable ex) {  
            System.err.println("Initial SessionFactory creation failed." + ex);  
            throw new ExceptionInInitializerError(ex);  
        }  
    }  
    public static SessionFactory getSessionFactory() {  
        return sessionFactory;  
    }  
}  
 
测试类
[java] 
public class TestPersister {  
    private static AbstractEntityPersister classMetadata;  
    private Object obj;  
      
    public TestPersister(SessionFactory sessionFatory, Object obj) {  
        classMetadata = (AbstractEntityPersister) sessionFatory.getClassMetadata(obj.getClass());  
        this.obj = obj;  
    }  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        //实例化classMetadata   传入sessionFactory和obj对象  
        TestPersister tp = new TestPersister(HibernateUtils.getSessionFactory(),new HhArticle());  
        Session session = HibernateUtils.getSessionFactory().getCurrentSession();  
        session.beginTransaction();  
        SQLQuery sqlquery = session.createSQLQuery("DELETE FROM " + classMetadata.getTableName());  
        sqlquery.executeUpdate();  
        session.getTransaction().commit(); //事务提交  
          
        //classMetadata一些其他操作  
        System.out.println(classMetadata.getTableName());  //表名  
        System.out.println(classMetadata.getIdentifierPropertyName()); //主键列映射属性  
        System.out.println(classMetadata.getEntityName()); //对象名称  
        for(String str:classMetadata.getPropertyNames()){   //非主键属性   
            System.out.println(str);     
        }  
    }  
    public AbstractEntityPersister getClassMetadata() {  
        return classMetadata;  
    }  
    public void setClassMetadata(AbstractEntityPersister classMetadata) {  
        this.classMetadata = classMetadata;  
    }  
    public Object getObj() {  
        return obj;  
    }  
    public void setObj(Object obj) {  
        this.obj = obj;  
    }  
}  
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,