首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

hibernate 获取实业的表名、主键名、列名

2012-07-08 
hibernate 获取实体的表名、主键名、列名修改自网络:http://blog.csdn.net/fhwbj/article/details/3267787?i

hibernate 获取实体的表名、主键名、列名

修改自网络:http://blog.csdn.net/fhwbj/article/details/3267787

?

import java.util.Iterator;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.cfg.Configuration;import org.hibernate.mapping.Column;import org.hibernate.mapping.PersistentClass;import org.hibernate.mapping.PrimaryKey;import org.hibernate.mapping.Property;/** * 功能描述:根据实体类得到对应的表名、主键名、字段名工具类 * </p> * 注:po类名须与对应映射文件名一致,即Student.java与Student.hbm.xml<br> * //修改为主注解方式,此hbm文件已经不需要 *  *  * @Date:Nov 10, 2008 * @Time:3:13:07 PM *  */public class EntityUtil { private static Configuration hibernateConf; private static Configuration getHibernateConf() {  if (hibernateConf == null) {//   hibernateConf=new Configuration();//*.hbm.xml方式   hibernateConf=new AnnotationConfiguration().configure();//注解方式   hibernateConf.buildSessionFactory();//注解方式必须的  }  return hibernateConf; } private static PersistentClass getPersistentClass(Class<?> clazz) {  synchronized (EntityUtil.class) {   PersistentClass pc = getHibernateConf().getClassMapping(     clazz.getName());   if (pc == null) {//  hibernateConf = getHibernateConf().addClass(clazz);//*.hbm.xml方式    pc = getHibernateConf().getClassMapping(clazz.getName());   }   return pc;  } } /**  * 功能描述:获取实体对应的表名  *   * @param clazz  *            实体类  * @return 表名  */ public static String getTableName(Class<?> clazz) {  return getPersistentClass(clazz).getTable().getName(); } /**  * 功能描述:获取实体对应表的主键字段名称,只适用于唯一主键的情况  *   * @param clazz  *            实体类  * @return 主键字段名称  */ public static String getPrimaryKey(Class<?> clazz) {  return getPrimaryKeys(clazz).getColumn(0).getName(); }  /**  * 功能描述:获取实体对应表的主键字段名称  *   * @param clazz  *            实体类  * @return 主键对象primaryKey ,可用primaryKey.getColumn(i).getName()  */ public static PrimaryKey getPrimaryKeys(Class<?> clazz) {  return getPersistentClass(clazz).getTable().getPrimaryKey(); } /**  * 功能描述:通过实体类和属性,获取实体类属性对应的表字段名称  *   * @param clazz  *            实体类  * @param propertyName  *            属性名称  * @return 字段名称  */ public static String getColumnName(Class<?> clazz, String propertyName) {  PersistentClass persistentClass = getPersistentClass(clazz);  Property property = persistentClass.getProperty(propertyName);  Iterator<?> it = property.getColumnIterator();  if (it.hasNext()) {   Column column = (Column) it.next();   return column.getName();  }  return null; }}
?

?

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>        <property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/managerdb</property><property name="connection.username">root</property><property name="connection.password">root</property><property name="dialect">org.hibernate.dialect.MySQLDialect</property>       <!--        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>        <property name="connection.url">jdbc:mysql://localhost:3306/shop</property>        <property name="connection.username">root</property>        <property name="connection.password">ynb</property>      <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>       -->        <!-- JDBC connection pool (use the built-in) -->        <property name="connection.pool_size">10</property>                <!-- Enable Hibernate's automatic session context management -->        <property name="current_session_context_class">thread</property>        <!-- Disable the second-level cache  -->        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>        <!-- Echo all executed SQL to stdout -->        <property name="show_sql">true</property>        <property name="format_sql">true</property>        <property name="hbm2ddl.auto">update</property>               <!--  <mapping package="pp.entity"/> -->        <mapping class="pp.entity.Department"/><mapping class="pp.entity.Element"/><mapping class="pp.entity.Employee"/><mapping class="pp.entity.EmployeeType"/><mapping class="pp.entity.Goods"/><mapping class="pp.entity.GoodsType"/><mapping class="pp.entity.GoodsFactoryType"/><mapping class="pp.entity.ProductAssembleRecord"/><mapping class="pp.entity.PersonalInfo"/><mapping class="pp.entity.Product"/><mapping class="pp.entity.SalaryType"/><mapping class="pp.entity.Storage"/><!-- <mapping class="pp.entity.StoreroomKeeper"/> --><mapping class="pp.entity.CheckRecord"/><mapping class="pp.entity.CheckRecordType"/><mapping class="pp.entity.EncourageRecord"/><mapping class="pp.entity.EncourageRecordType"/><mapping class="pp.entity.MonthSalaryRecord"/><mapping class="pp.entity.MonthSalaryType"/><mapping class="pp.entity.MonthSalary"/><mapping class="pp.entity.StorageRecord"/><mapping class="pp.entity.TradeRecord"/><mapping class="pp.entity.TradeRecordType"/><mapping class="pp.entity.FundRecordType"/><mapping class="pp.entity.FundRecord"/><mapping class="pp.entity.Fund"/><mapping class="pp.entity.SalaryCareInfo"/><mapping class="pp.entity.StaticInfo"/><mapping class="pp.entity.SaleAchievementTakePercent"/><mapping class="pp.entity.ProductionRecord"/><!-- <mapping class="pp.entity.EmployeeProductionRecord"/><mapping class="pp.entity.DepartmentProductionRecord"/> --><mapping class="pp.entity.ProductionRecordType"/><mapping class="pp.entity.TestEntity"/>  </session-factory></hibernate-configuration>
?

?

?

?

?

1 楼 369485270 2012-03-20   楼主在吗  你这个注解方式根本就不行 报错啊 org.hibernate.HibernateException: /hibernate.cfg.xml not found  晕死  很急啊 能加个QQ 帮我看看嘛 谢谢了 QQ369485270 2 楼 bnmnba 2012-04-19   369485270 写道楼主在吗  你这个注解方式根本就不行 报错啊 org.hibernate.HibernateException: /hibernate.cfg.xml not found  晕死  很急啊 能加个QQ 帮我看看嘛 谢谢了 QQ369485270
呵呵,忘了说明了,hibernate.cfg.xml文件是必须的。

热点排行