zoukankan      html  css  js  c++  java
  • Hibernate之AbstractEntityPersister

    Hibernate开发中需要根据持久层对象获取所映射的数据库表相关信息,如表名,主键,外键对象等相关系。

    Hibernate配置 Hibernate.cfg.xml

    <?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

    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;
        }
    }

    测试类

    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;
    	}
    }


  • 相关阅读:
    ReLU激活函数:简单之美
    逻辑回归(Logistic Regression)推导
    机器学习之视频推荐
    TensorFlow OOM when allocating tensor with shape[5000,384707]
    工银亚洲账户激活
    微信小程序之多行文本省略号
    关于微信小程序:scroll-view,backgroundTextStyle
    css之box-sizing属性(css3中的新属性)
    css之max-width属性
    css中的display属性之li元素
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131396.html
Copyright © 2011-2022 走看看